我正在尝试使用测试所需的不同设置创建Base 类。我希望我所有的测试都继承自这个 Base 类。作为运行者,我使用 py.test .
但是当我尝试这样做时,py.test 不会收集从 Base 类继承的这些测试,因此它不会运行它们。在文档中没有找到任何有用的信息。
也许有人以前遇到过这样的问题?有什么想法吗?
谢谢。
附言当测试从 object 继承时,一切正常。 Py.test 看到它们并正确运行。
代码示例:
我的基类:
class BaseClass(object):
"""BaseClass"""
def __init__(self):
super(BaseClass, self).__init__()
self.bla = 'bla'
我的测试类:
import pytest
from base_class import BaseClass
class TestSmth(BaseClass):
def test_test(self):
test_instatnce = TestSmth()
print test_instatnce.bla
if __name__ == '__main__':
pytest.main([__file__, '-v'])
输出:
============================= test session starts ==============================
platform darwin -- Python 2.7.2 -- pytest-2.3.3 -- /usr/bin/python
collecting ... collected 0 items
=============================== in 0.01 seconds ===============================
[Finished in 0.4s]
最佳答案
我不认为你可以使用 __init__
。如果你要设置(或初始化)你可以做的类:
# base_class.py
class BaseClass(object):
"""BaseClass"""
@classmethod
@pytest.fixture(scope = "class", autouse = True)
def setup(self):
self.bla = 'bla'
#test_class.py
import pytest
from base_class import BaseClass
class TestSmth(BaseClass):
def test_test(self):
print self.bla
if __name__ == '__main__':
pytest.main([__file__, '-v'])
还可以初始化 TestSmth
类,您可以创建另一个“方法”并用 @pytest.fixture
装饰它。但是,您必须记住,那些“初始化方法”是按字母顺序调用的。
关于python - py.test 不收集不是从 'object' 继承的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13939543/