Skip to content

Pytest fail when autouse fixture is applied and --doctest-modules is set #1057

Closed
@vitalk

Description

@vitalk

When --doctest-modules option is set but module has no doctests available, then pytest raises AssertionError. This issue occurs only if autouse fixture is applied.

# test_doctest_module.py

def test_a():
    """
    >>> assert 2 + 2 == 4
    """
    assert 2 + 2 == 4
# test_no_doctest_module.py

def test_a():
    assert 2 + 2 == 4
# conftest.py
import pytest


@pytest.fixture(autouse=True)
def __autoused_fixture(request):
    pass
$ py.test test_doctest_module.py --doctest-modules
================================== test session starts ==================================
platform darwin -- Python 2.7.9, pytest-2.8.0, py-1.4.30, pluggy-0.3.1
rootdir: /Users/vital/.virtualenvs/tmp-83f75479bea7798, inifile:
collected 2 items

test_doctest_module.py ..
$ py.test test_no_doctest_module.py --doctest-modules
================================== test session starts ==================================
platform darwin -- Python 2.7.9, pytest-2.8.0, py-1.4.30, pluggy-0.3.1
rootdir: /Users/vital/.virtualenvs/tmp-83f75479bea7798, inifile:
collected 1 items

test_no_doctest_module.py .ETraceback (most recent call last):
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/bin/py.test", line 11, in <module>
    sys.exit(main())
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/config.py", line 48, in main
    return config.hook.pytest_cmdline_main(config=config)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596, in execute
    res = hook_impl.function(*args)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/main.py", line 115, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/main.py", line 110, in wrap_session
    exitstatus=session.exitstatus)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 595, in execute
    return _wrapped_call(hook_impl.function(*args), self.execute)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 249, in _wrapped_call
    wrap_controller.send(call_outcome)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/terminal.py", line 361, in pytest_sessionfinish
    outcome.get_result()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
    _reraise(*ex)  # noqa
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 264, in __init__
    self.result = func()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596, in execute
    res = hook_impl.function(*args)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/runner.py", line 55, in pytest_sessionfinish
    session._setupstate.teardown_all()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/runner.py", line 375, in teardown_all
    self._pop_and_teardown()
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/runner.py", line 348, in _pop_and_teardown
    self._teardown_with_finalization(colitem)
  File "/Users/vital/.virtualenvs/tmp-83f75479bea7798/lib/python2.7/site-packages/_pytest/runner.py", line 371, in _teardown_with_finalization
    or isinstance(colitem, tuple)
_pytest.assertion.reinterpret.AssertionError: assert (<DoctestModule 'test_no_doctest_module.py'> is None or <DoctestModule 'test_no_doctest_module.py'> in [<Session 'tmp-83f75479bea7798'>] or isinstance(<DoctestModule 'test_no_doctest_module.py'>, tuple))
 +  where [<Session 'tmp-83f75479bea7798'>] = [<Session 'tmp-83f75479bea7798'>]
 +    where [<Session 'tmp-83f75479bea7798'>] = <_pytest.runner.SetupState object at 0x10e5be7d0>.stack
$ echo > conftest.py
$ py.test test_no_doctest_module.py --doctest-modules
================================== test session starts ==================================
platform darwin -- Python 2.7.9, pytest-2.8.0, py-1.4.30, pluggy-0.3.1
rootdir: /Users/vital/.virtualenvs/tmp-83f75479bea7798, inifile:
collected 1 items

test_no_doctest_module.py .

=============================== 1 passed in 0.03 seconds ================================```

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugproblem that needs to be addressed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions