Mor*_*man 22 automation pytest pycharm
我正在尝试从 cmd 运行 pytest ,当我执行pytest Login.py时,我得到了这个结果:
================================================== warnings summary ===================================================
C:\automation\test\test.py:36
C:\automation\test\test.py:36: PytestCollectionWarning: cannot collect test class 'TestMain' because it has a __init__ constructor (from: Login.py)
class TestBase():
-- Docs: https://docs.pytest.org/en/latest/warnings.html
================================================= 1 warning in 59.69s =================================================
Run Code Online (Sandbox Code Playgroud)
在 Login.py 中,我有一个导入,我认为这可能是问题所在,但我需要该导入来进行测试。有谁知道如何解决这一问题?
Nik*_*man 28
如果您的非测试类以单词 开头Test,您还可以__test__ = False在类主体中定义以防止 pytest 尝试在类中发现测试,例如:
class TestNotATestCase:
__test__ = False
Run Code Online (Sandbox Code Playgroud)
另请参阅__test__ = False 魔法属性如何用于测试发现。
use*_*389 11
pytest 中的“收集测试”意味着发现/决定哪些函数作为测试用例运行。PyTest 根据一小组规则发现测试,包括以下规则:
Test 前缀的测试函数或方法在 Test 前缀的测试类中(没有
__init__方法)
这PytestCollectionWarning指出 的成员方法TestMain不会被视为测试用例,因为该类有一个__init__方法。这是一个警告,因为您可能确实希望将它们用作测试用例,但错误地添加了__init__方法。但是,您可能只有一个以该单词开头的类Test,因此该警告是误报。
解决方案取决于您的目标:
TestMain 是测试集合,那么您应该按照__init__@fstamour 建议删除该方法(或者按照 @EscBlack 建议寻找替代方法)。TestMain 不是测试集合,但您确实希望/需要其名称以“Test”开头,那么有一些方法可以显式过滤警告。TestMain不是测试集合,并且您确实不需要其名称以“Test”开头,则只需重命名即可。 当我创建一个虚拟类并在某些测试用例中使用时,这就是我的解决方案。TestData更改名称以MyData消除警告。(由于您正在运行pytest Login.py,我猜测它Login.py包含实现和测试,这使得它更有可能具有名称以“Test”开头的非测试类。)小智 8
您可以使用setup_classinsead 来代替__init__.
https://docs.pytest.org/en/stable/xunit_setup.html?highlight=setup
| 归档时间: |
|
| 查看次数: |
17465 次 |
| 最近记录: |