Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@pytest.mark.no_cover tests fail with --no-cov #590

Open
asmeurer opened this issue Apr 10, 2023 · 0 comments
Open

@pytest.mark.no_cover tests fail with --no-cov #590

asmeurer opened this issue Apr 10, 2023 · 0 comments

Comments

@asmeurer
Copy link

Summary

If you have a test with @pytest.mark.no_cover and use --no-cov, the test fails with AttributeError: 'NoneType' object has no attribute 'pause'.

This was mentioned in #562 but didn't get the attention I was hoping for, so I'm opening a new issue here.

As I mentioned on that issue, I believe the problem is that stop() is called two times in a row without start() being called in between (but I haven't reinvestigated since then). Assuming this is the issue, I would suggest making these functions idempotent.

Expected vs actual result

Reproducer

$ ls .
__pycache__	test.py
$ cat test.py
import pytest

@pytest.mark.no_cover
def test():
    pass
$ pytest --cov=. --no-cov test.py
========================================================================== test session starts ==========================================================================
platform darwin -- Python 3.9.15, pytest-7.3.0, pluggy-1.0.0
rootdir: /private/tmp/test
plugins: anyio-3.6.1, hypothesis-6.70.1, xonsh-0.13.4, pudb-0.7.0, flaky-3.7.0, mock-3.10.0, regressions-2.4.2, flake8-1.1.1, doctestplus-0.12.1, cov-4.0.0, flakes-4.0.5, datadir-1.4.1, aiohttp-0.3.0
collected 1 item

test.py F                                                                                                                                                         [100%]

=============================================================================== FAILURES ================================================================================
_________________________________________________________________________________ test __________________________________________________________________________________

self = <pytest_cov.plugin.CovPlugin object at 0x109aa7a60>, item = <Function test>

    @pytest.hookimpl(hookwrapper=True)
    def pytest_runtest_call(self, item):
        if (item.get_closest_marker('no_cover')
                or 'no_cover' in getattr(item, 'fixturenames', ())):
>           self.cov_controller.pause()
E           AttributeError: 'NoneType' object has no attribute 'pause'

/Users/aaronmeurer/anaconda3/lib/python3.9/site-packages/pytest_cov/plugin.py:366: AttributeError
======================================================================== short test summary info ========================================================================
FAILED test.py::test - AttributeError: 'NoneType' object has no attribute 'pause'
=========================================================================== 1 failed in 0.16s ===========================================================================

Versions

Output of relevant packages pip list, python --version, pytest --version etc.

Make sure you include complete output of tox if you use it (it will show versions of various things).

$ pytest --version
pytest 7.3.0
$ coverage --version
Coverage.py, version 7.2.3 with C extension
Full documentation is at https://coverage.readthedocs.io/en/7.2.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant