我在使用我的pytest单元测试时遇到困难。
我正在使用这样的测试类:
class TestMyApp(object):
def setup(self):
self.client = mock_client()
@pytest.fixture
def client_item(self):
return self.client.create_item('test_item')
def test_something1(self, client_item):
# Test here.
pass
当我运行上述测试时,我得到以下异常:
AttributeError: 'TestMyApp' object has no attribute 'client'
我相信这是因为在client_item()
函数之前调用了setup()
fixture函数。
我是否错误地使用了灯具?或者是否有某种方法可以在夹具功能之前强制调用setup()
?
提前致谢。
答案 0 :(得分:2)
灯具可以使用其他灯具,因此您可以一直使用灯具:
class TestMyApp(object):
@pytest.fixture
def client(self):
return mock_client()
@pytest.fixture
def client_item(self, client):
return client.create_item('test_item')
def test_something1(self, client_item):
# Test here.
pass
documentation巧妙地推荐使用xUnit样式设置/拆卸方法的装置:
虽然这些设置/拆卸方法对来自
unittest
或nose
背景的人来说简单且熟悉,但您也可以考虑使用pytest更强大的fixture mechanism来利用依赖的概念注入,允许更模块化和更可扩展的方法来管理测试状态,特别是对于大型项目和功能测试。
接着说两种风格可以混合,但不清楚事情发生的顺序。