【发布时间】:2021-03-05 08:47:00
【问题描述】:
我正在测试一个数据库,其中必须一个接一个地调用该数据库类中的方法,以便下一个正在测试的方法对数据进行操作。
@pytest.fixture(scope="module")
def database():
return database.Database()
# Expected results
result_1 = read_result(1)
result_2 = read_result(2)
result_3 = read_result(3)
def test_a(database):
database.a() # modifies database fixture
assert database.a.result == result_1
def test_b(database):
database.b() # requires database fixture to have been modified by a()
assert database.b.result == result_2
def test_c(database):
database.c() # requires database fixture to have been modified by a() and b()
assert database.c.result == result_3
这使用了一个模块范围的 pytest 固定装置,因此它被每个测试重用。上面的这个测试会起作用,但这只是因为它按顺序运行测试。据我所知,这是有状态的依赖,我的测试不是孤立的,这在测试中是不好的做法。
有什么更好的方法?
【问题讨论】:
标签: python pytest python-unittest