Pytest测试后删除数据库

时间:2019-10-10 18:17:49

标签: django pytest pytest-django

我在pytest-django中有一个测试套件,我想在测试开始时创建一个数据库,然后在测试完成后立即删除该数据库,以便模拟场景而不保留大量数据。 任何帮助,将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

使用yield而不是return的{​​{3}}优势。这使您可以设置数据库,如果需要返回任何数据,然后执行任何清理。如果您希望对每个测试都执行此操作,而不考虑是否声明使用夹具的测试功能,请将autouse设置为True

@pytest.fixture(autouse=False)
def db():
    # Setup DB here

    # Yield some data, database connection or nothing at all
    yield None

    # Delete DB here when the test ends

def test_something(db):
    # Database will be ready here and db will contain whatever
    # db() function yields. With autouse=True you don't need to
    # set the db fixture as the function param.
    pass