Py.test反复循环测试

时间:2013-02-22 17:34:27

标签: python pytest

我试图重复测试N次(收集相同的测试)。

为什么:通过这样做,我想看看测试的速度是否降低,或者我可以收集一个参数的“平均时间”,然后传递另一个参数并再次获得“平均时间”。

我的理解是使用def pytest_runtestloop()钩子,但是我遇到了麻烦。

这是我的钩子代码:

def pytest_runtestloop(session):
    repeat = int(session.config.option.repeat)
    assert isinstance(repeat, int), "Repeat must be an integer"
    for i in range(repeat): #@UnusedVariable                      
        session.config.pluginmanager.getplugin("main").pytest_runtestloop(session)

    return True

问题是“设置”仅在第一次运行: 例如:

class TestSomething(object):

    @classmethod
    @pytest.fixture(scope = "class", autouse = True)
    def setup(self):
        //setup function

    def test_something(self):
        //test function

此处setup仅在第一个周期内被调用,如果我将test_something设置为2,则session.config.option.repeat将被调用{/ 1}}

我做错了什么?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

似乎pytest-2.3.4在内部保持一些状态,以防止灯具再次运行。 pytest_runtest_loop并未考虑您的用例。您可以提出有关它的“错误”问题,我们可以看到我们可以做些什么来解决它。 (我很快就看了,但无法立即看到出了什么问题,需要更多的探索)。