我正在使用主要使用unittest编写的代码库。测试用pytest运行。我试图通过参数化一些简化测试。为了实现这个目标,我试图学习如何使用pytest fixture并重构一些现有的基于单元测试的测试。目前的测试必须以conftest.py全球夹具:Chain multiple fixture pytest/unittest hybrid
@pytest.fixture(autouse=True)
def register_cleanup():
yield True
print("cleaning up database")
现在我想添加一个夹具,专用于我的测试模块之一,沿东西的
@pytest.fixture()
def foo_fixture():
print("setup fixture")
yield
print("tear down fixture")
class Foo(unittest.TestCase):
def setUp(self):
print('unittest setUp()')
def test(self):
print('test')
行然而,该模块夹具中的print()
语句从不执行。作为一个中间步骤,我保持基于单元测试的结构并添加它。是否有可能以我想要的方式得到这个工作,或者我需要完全取消单元测试并直接进入pytest。
哪里会想到使用这种灯具?你还想在这里打开'autouse = True'吗?一般来说,只有在它们是测试参数时才执行fixtures,而不是范围假设的通用清理机制 – Cireo
@Cireo您是否应该将'autouse = True'添加到'foo_fixture()'类似于'register_cleanup ()'? –
@Cireo随意发布这个答案。 –