Pytest设置和拆卸函数-与自写函数相同?
问题描述
在pytest文档中的以下示例中:
函数setup_function
应该为其他函数设置一些数据,比如test_data
。因此,如果我编写函数test_data
,则必须调用setup_function
,如下所示:
def test_data():
setup_function(....)
<Test logic here>
teardown_function(....)
所以唯一的区别是名称约定?
我不明白它到底是如何帮助我创建设置数据的。我本可以像这样编写相同的代码:
def test_data():
my_own_setup_function(....)
<Test logic here>
my_own_teardown_function(....)
由于无法告诉pytest自动将设置函数链接到测试函数,因此它会为函数function
的参数function
创建设置数据-如果我不需要函数指针,setup_function
参数对我没有真正的帮助。那么,为什么要无缘无故地费心创建命名约定呢?
据我所知,Setup函数参数function
仅在我需要使用函数指针时才对我有帮助-这是我很少需要的东西。
解决方案
如果要设置一项或多项测试的细节,可以使用"普通"pytext装置。
import pytest
@pytest.fixture
def setup_and_teardown_for_stuff():
print("
setting up")
yield
print("
tearing down")
def test_stuff(setup_and_teardown_for_stuff):
assert 1 == 2
要记住的是,良率之前的所有操作都是在测试之前运行的,良率之后的所有操作都是在测试之后运行的。
tests/unit/test_test.py::test_stuff
setting up
FAILED
tearing down
相关文章