在Pytest上的测试之间更新和共享变量

2024-04-26 03:33:14 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在运行一些测试,每个测试都会创建一个变量(键),如:

def test_123():
    key = 'abc'
    ....
    ---- test_123 PASSED! ----

def test_456():
    key = 'def'
    ....
    ---- test_456 FAILED! ----

我还有另一个测试,最后一个要执行,目的是验证这些密钥。但它应该只验证测试通过的密钥

def check_keys():
    # keys = ['abc']
    for key in keys:
    ....

由于此验证花费的时间太长,因此最好一次检查所有这些密钥,而不是每次测试

因此,我计划创建一个列表,它应该是这些测试之间的一个全局变量,并在给定测试通过时使用适当的键将其递增

最后一个测试应该通过这个列表,检查通过测试的键

我读过pytest钩子和pytest缓存,但我发现的示例太复杂了:(

有人能帮我吗? 谢谢


Tags: keyintest目的列表forpytestdef
1条回答
网友
1楼 · 发布于 2024-04-26 03:33:14

您可以在conftest.py中执行此操作,并使用范围正确的装置。看到这个document.

假设模块作用域(基本上是一个文件中的所有函数)可能类似于以下示例:

conftest.py文件

import pytest

@pytest.fixture(scope='module')
def myfixture():
    keys = []
    yield keys

mytests.py

def test_myex1(myfixture):
    myfixture.append(1)
    assert True

def test_myex2(myfixture):
    myfixture.append(2)
    assert True

def test_myex3(myfixture):
    print(myfixture)
    if len(myfixture) == 2:
        assert True
    else:
        assert False

测试3将通过,因为第一个测试将把键附加到myfixture。要小心,因为在这个设置中测试3不能单独通过

相关问题 更多 >