6

我正在尝试使用测试所需的不同设置创建类。我希望我的所有测试都继承自这个类。作为跑步者,我使用py.test

但是当我尝试这样做时,py.test 不会收集从Base类继承的这些测试,因此它不会运行它们。在文档中没有找到任何有用的信息。

也许有人以前遇到过这样的问题?有任何想法吗?

谢谢。

PS当测试从对象继承时一切正常。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]  
4

1 回答 1

7

我不认为你可以使用__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。但是,您必须记住,那些“初始化方法”是按字母顺序调用的

于 2012-12-18T22:03:22.213 回答