3

我正在尝试重复测试 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只会在第一个周期被调用,如果我设置为 2test_something会被调用两次session.config.option.repeat

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

4

1 回答 1

2

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

于 2013-02-26T11:31:07.430 回答