pytest icon indicating copy to clipboard operation
pytest copied to clipboard

`AttributeError` with invalid flag added in `pytest_addoption`

Open The-Compiler opened this issue 1 month ago • 3 comments

With Python 3.13.7 and pytest-8.4.2, doing this in a conftest.py:

def pytest_addoption(parser):
    parser.addoption("shuffle")  # without --

results in:

Traceback (most recent call last):
  ...
    File ".../conftest.py", line 2, in pytest_addoption
    parser.addoption("shuffle")
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 102, in addoption
    self._anonymous.addoption(*opts, **attrs)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 406, in addoption
    option = Argument(*opts, **attrs)
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 300, in __init__
    self._set_opt_strings(names)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 349, in _set_opt_strings
    raise ArgumentError(
          ~~~~~~~~~~~~~^
        f"invalid long option string {opt!r}: "
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        "must start with --, followed by non-dash",
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self,
        ^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 268, in __init__
    self.option_id = str(option)
                     ~~~^^^^^^^^
  File "/usr/lib/python3.13/site-packages/_pytest/config/argparsing.py", line 362, in __repr__
    args += ["dest: " + repr(self.dest)]
                             ^^^^^^^^^
AttributeError: 'Argument' object has no attribute 'dest'

The-Compiler avatar Oct 15 '25 12:10 The-Compiler