关于python:如何使用pytest编写集成测试以及如何重复集成测试

how to write integration tests using pytest and how to repeat the integration tests

我是新来的,所以请不要介意这个问题是否不够具体。

我想知道如何在Pytest中将单元测试组合成单个集成测试。此外,我想在一个测试会话中重复集成测试几次。请让我知道在Pytest中是否有这样的方法。

脚本:我有两个单元测试名称test_start_call和test_end_call,它们是按照这个顺序由pytest调用的。

现在我想重复这个过程几次,所以我这样做了:

对于范围(0,c)内的i:pytest.main(一些命令)

这很好,它将启动测试会话,并根据我的需要多次关闭测试会话,在每个测试会话中进行一次调用。

但我想在一个测试会话中打几个电话,而且自从过去两天以来,我还没有找到任何方法来做到这一点。我试着研究xdist,但我不想并行启动新的进程。集成测试应该在一个测试会话中按我想要的次数连续执行单元测试(开始调用和结束调用)。

我被困住了。所以任何帮助都会很好。谢谢您!


查看https://docs.pytest.org/en/latest/parameterize.html

然后将mult参数添加到每个测试中,并实现--mult-in-hook pytest_generate_tests以提供fixture值。

1
2
3
4
5
6
7
8
9
10
11
12
13
# conftest
def pytest_addoptions(parser):
    parser.addoption('--mult', default=1, help="run many tests")

def pytest_generate_tests(metafunc):
    mult = metafunc.config.getoption('--mult')
    if 'mult' in metafunc.fixturenames:
        for x in xrange(1, mult):
            metafunc.parametrize("mult", mult)

# testfoo
def test_start_call(mult):
    ...

从你所说的来看,我不太确定你是否使用了正确的工具集。听起来,您要么尝试加载测试某个东西(多次运行它,看看它是否崩溃),要么尝试做一些更"数据驱动"的事情——也就是说给定的输入值x到y,看看它是如何工作的。

如果你想做一些类似于负载测试的事情,我建议你研究一下类似于蝗虫的东西。

这是一个合理的博客,有不同的例子,通过不同的数据进行驾驶单元测试。

同样,不确定这两个是否都是你想要的。