gpt4 book ai didi

python - 针对多个数据库版本运行 pytest 测试套件

转载 作者:行者123 更新时间:2023-12-02 11:38:08 32 4
gpt4 key购买 nike

我构建了一个在后端使用数据库的应用程序。对于集成测试,我在 Docker 中启动数据库并使用 pytest 运行测试套件。

我使用带有 autouse=True 的 session 范围固定装置来启动 Docker 容器:

@pytest.fixture(scope='session', autouse=True)
def run_database():
# setup code skipped ...

# start container with docker-py
container.start()

# yield container to run tests
yield container

# stop container afterwards
container.stop()

我使用另一个 session 范围的固定装置将数据库连接传递给测试函数:

@pytest.fixture(scope='session')
def connection():
return Connection(...)

现在我可以运行测试函数了:

def test_something(connection):
result = connection.run(...)
assert result == 'abc'

但是,我想针对多个不同版本的数据库运行我的测试函数。

我可以在 run_database() 装置中运行多个 Docker 容器。如何参数化我的测试函数,以便它们针对两个不同的 connection() 设备运行?

最佳答案

@Guy 的回答有效!

我找到了该问题的另一个解决方案。可以对 fixture 进行参数化。每个使用 fixture 的测试函数都会运行多次:https://docs.pytest.org/en/latest/fixture.html#parametrizing-fixtures

因此,我参数化了 connection() 函数:

@pytest.fixture(scope='session', params=['url_1', 'url_2'])
def connection(request):
yield Connection(url=request.param)

现在,每个使用 connection 装置的测试函数都会运行两次。优点是您不必更改/改编/标记现有的测试功能。

关于python - 针对多个数据库版本运行 pytest 测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59911417/

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