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

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

我在autouse=True中使用了会话作用域的夹具来启动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()

我通过另一个会话作用域的夹具将数据库连接传递给测试功能:

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

现在,我可以运行一个测试功能:

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

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

我可以在run_database()固定装置中运行多个Docker容器。如何设置测试功能的参数,以便它们在两个不同的connection()灯具上运行?

参考方案

您可以发送产生连接的函数,并使用@pytest.mark.parametrize传递它。如果将run_database()的范围更改为class,它将在每次测试时运行

def data_provider():
    connections = [Connection(1), Connection(2), Connection(3)]
    for connection in connections:
        yield connection


@pytest.fixture(scope='class', autouse=True)
def run_database():
    container.start()
    yield container
    container.stop()


@pytest.mark.parametrize('connection', data_provider())
@pytest.mark.testing
def test_something(connection):
    result = connection.run()
    assert result == 'abc'

如果将@pytest.mark.parametrize('connection', data_provider())添加到run_database(),则连接也将传递到那里。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…