使用pytest运行单元测试时出错-AttributeError:“ TestCaseFunction”对象没有属性“ get_marker”

时间:2020-07-07 05:57:15

标签: python python-3.x pytest

我正在将pytest 5.4.1和python 3.6一起使用

代码:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

if __name__ == '__main__':
    unittest.main()

运行pytest会出现以下错误:

Testing started at 06:08 ...
"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\python.exe" "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pycharm\_jb_pytest_runner.py" --path E:/Folder1/Project1/src/Project1.Api/tests/test1.py
Launching pytest with arguments E:/Folder1/Project1/src/Project1.Api/tests/test1.py in E:\Folder1\Project1\src\Project1.Api\tests

============================= test session starts =============================
platform win32 -- Python 3.6.5, pytest-5.4.1, py-1.5.3, pluggy-0.13.1 -- C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\python.exe
cachedir: .pytest_cache
rootdir: E:\Folder1\Project1\src\Project1.Api\tests
plugins: arraydiff-0.2, cov-2.8.1, doctestplus-0.1.3, openfiles-0.3.0, remotedata-0.2.1
collecting ... collected 1 item

test1.py::TestStringMethods::test_upper ERROR                            [100%]
test setup failed
item = <TestCaseFunction test_upper>

    def pytest_runtest_setup(item):
    
>       remote_data = item.get_marker('remote_data')
E       AttributeError: 'TestCaseFunction' object has no attribute 'get_marker'

c:\program files (x86)\microsoft visual studio\shared\anaconda3_64\lib\site-packages\pytest_remotedata\plugin.py:59: AttributeError

Assertion failed


=================================== ERRORS ====================================
_______________ ERROR at setup of TestStringMethods.test_upper ________________

item = <TestCaseFunction test_upper>

    def pytest_runtest_setup(item):
    
>       remote_data = item.get_marker('remote_data')
E       AttributeError: 'TestCaseFunction' object has no attribute 'get_marker'

c:\program files (x86)\microsoft visual studio\shared\anaconda3_64\lib\site-packages\pytest_remotedata\plugin.py:59: AttributeError
=========================== short test summary info ===========================
ERROR test1.py::TestStringMethods::test_upper - AttributeError: 'TestCaseFunc...
============================== 1 error in 0.04s ===============================

Process finished with exit code 0

Assertion failed

Assertion failed

可能是什么问题?

2 个答案:

答案 0 :(得分:2)

问题在于get_marker已重命名为get_closest_marker 。在GitHub上的this issue中,您可以看到@arvindpdmn建议将pytest-remotedata==0.3.0升级到pytest-remotedata==0.3.2,因此,假设您使用pip安装依赖项,请运行以下命令:

pip install -U pytest-remotedata

答案 1 :(得分:1)

从错误输出中可以看出,问题出在pytest-remotedata软件包中。

AttributeError: 'TestCaseFunction' object has no attribute 'get_marker'

c:\program files (x86)\microsoft visual studio\shared\anaconda3_64\lib\site-packages\pytest_remotedata\plugin.py:59: AttributeError

pytest-remotedata软件包升级到最新版本(0.3.2)后,该错误已解决:

pip install --upgrade pytest-remotedata