如何使用pytest编写集成测试以及如何重复集成测试

时间:2015-03-12 22:19:26

标签: python integration-testing pytest

我是新手,所以如果问题不够具体,请不要介意。

我想知道如何在pytest中对单元测试进行单一集成测试。 此外,我想在一次测试会话中重复几次集成测试。如果有办法在pytest中做到这一点,请告诉我。

方案: 我有两个单元测试名称test_start_call和test_end_call,由pytest按顺序调用。

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

表示范围(0,c)中的i:       pytest.main(某些命令)

工作正常,可以启动测试会话,并在每个测试会话中进行一次调用,按照我的要求多次推断测试会话。

但是我想在一个测试环节中打几个电话,到目前为止,自从过去两天以来我没有找到任何办法。我试着研究xdist,但我不想并行开始新的流程。集成测试应该在单个测试会话中连续多次执行单元测试(开始调用和结束调用)。

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

2 个答案:

答案 0 :(得分:1)

审核https://docs.pytest.org/en/latest/parametrize.html

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

# 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):
    ...

答案 1 :(得分:0)

根据您的说法,我不太确定您使用的是正确的工具集。 听起来你要么试图加载测试某些东西(多次运行它并查看它是否会翻倒),或者尝试做更多“数据驱动”的事情 - 也就是给定输入值x到y,看看它的行为方式。

如果您尝试执行类似负载测试的操作,我建议您查看locust之类的内容。

Here是一个合理的博客,通过不同的数据提供驱动单元测试的不同示例。

同样,不确定这些中的任何一个是否实际上是您正在寻找的。