gpt4 book ai didi

python - Pytest 在固定装置之前调用 setup()

转载 作者:行者123 更新时间:2023-12-01 02:38:16 25 4
gpt4 key购买 nike

我在 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() ?

提前致谢。

最佳答案

灯具可以使用其他灯具,因此您可以一直使用灯具:

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 风格的安装/拆卸方法:

While these setup/teardown methods are simple and familiar to those coming from a unittest or nose background, you may also consider using pytest’s more powerful fixture mechanism which leverages the concept of dependency injection, allowing for a more modular and more scalable approach for managing test state, especially for larger projects and for functional testing.

它接着说这两种风格可以混合,但不清楚事情发生的顺序。

关于python - Pytest 在固定装置之前调用 setup(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com