Pytest: AttributeError: 'Function' object has no attribute 'get_marker'

Created on 6 Jan 2019  路  21Comments  路  Source: pytest-dev/pytest

============= test session starts ===========
platform linux -- Python 3.6.6, pytest-4.0.2, py-1.7.0, pluggy-0.8.0 -- 
plugins: monkeytype-1.0.1, cov-2.6.0

Tests work if I pin pytest to this version. Updating to 4.1.0 breaks with this error:

platform linux -- Python 3.6.6, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- 
plugins: monkeytype-1.0.1, cov-2.6.0

...

self = <pytest_cov.plugin.CovPlugin object at 0x7f13154272b0>, item = <Function test_part_compilation[PP]>

    @compat.hookwrapper
    def pytest_runtest_call(self, item):
>       if (item.get_marker('no_cover')
                or 'no_cover' in getattr(item, 'fixturenames', ())):
E               AttributeError: 'Function' object has no attribute 'get_marker'

/home/mbarkhau/miniconda3/envs/pycalver_py36/lib/python3.6/site-packages/pytest_cov/plugin.py:289: AttributeError

I can reproduce the error and provide more information in case it isn't immediately clear what the issue is.

Most helpful comment

UPDATE: I was able to bypass the error by reverting to pytest 3.x:

pip install pytest==3.10.1

NOTE: I'm using anaconda.

All 21 comments

Hah! Literally the same title. Literally! Sorry about that.

At least in another repo.. ;)

Hi, I'm running into this issue with pytest version 4.3.0 (Python version 3.7.0). Please advise!

Is there a specific version that is considered stable?

UPDATE: I was able to bypass the error by reverting to pytest 3.x:

pip install pytest==3.10.1

NOTE: I'm using anaconda.

@s2t2 that function no longer exists in pytest 4, you can use .get_closest_marker instead.

Thanks @nicoddemus - I wasn't trying to use that function, nor was I attempting to invoke it, but rather just trying to run a simple test and getting errors.

Just a simple invocation of pytest using the example function and test provided in the pytest documentation. For some reason I saw the error in question.

Can you point to the docs you saw? We might have something outdated.

@s2t2
It might also have been some plugin you were using.
Indeed:

pytest_cov.plugin.CovPlugin

cov-2.6.1 should fix this.

Was originally following installation instructions here: https://docs.pytest.org/en/latest/getting-started.html

I think it might be an anaconda thing. Here is some more info: https://github.com/s2t2/testing-123-py/issues/2

@s2t2
In https://github.com/s2t2/testing-123-py/issues/2 it is triggered by another plugin..

if invoke pytest, the name of func you defined can't be with prefix "test".

rename function get_marker to get_closest_marker in /usr/local/lib/python3.6/site-packages/pytest_cov/plugin.py

solved for me

@mirhmousavi that solution is a last stop measure - more recent versions of pytest-cov already have this done correctly - updating is preferred to editing random installed files

@RonnyPfannschmidt I had installed pytest-cov from a local repo and it installed v2.6.0
I upgraded and everything's OK
Thanks

Thanks for the follow up and happy programming

I'm using pytest-cov 2.8.1 and still get the error.

Edit:
Updating pytest-remotedata==0.3.0 to pytest-remotedata==0.3.2 solved the problem for me. Anaconda dist on Windows 10 but I updated using pip, not conda

Thanks @arvindpdmn for coming back to post the solution. 馃憤

Was this page helpful?
0 / 5 - 0 ratings