繁体   English   中英

pytest - 在所有其他测试之后重新运行失败的测试

pytest - rerun failed test after all other tests

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在我的场景中,我有一个写入文件的测试,以及一个(但可能更多)想要读取该文件的测试。 我不能简单地提取将该文件写入函数/夹具,因为它涉及内部正在启动其他二进制文件的其他一些夹具,以及写入该文件的二进制文件。 所以我有一个夹具,可以检查文件是否已经存在。

到目前为止我尝试过的:

  • 片状pytest-rerunfailures插件 - 不合适,因为它们都在失败时立即重新运行测试(当文件仍然不存在时),我想将它附加到测试队列的末尾。
  • 手动修改测试队列,如下所示:

...

request.session.items.append(request.node)
pytest.xfail("file not present yet")

这种工作,但仅当我在单跑步者上运行时(没有xdist ,或通过传递-n0 cli arg 将其打开,在我的测试报告中,我看到如下内容:

test_load_file_before_save xfail
test_save_file PASSED        
test_load_file PASSED        
test_load_file_before_save PASSED    

使用 xdist 运行时,不会重复 xfailed 测试。 有谁知道如何进行? 某种强制 xdist 刷新测试列表的方法?

2 个回复

您可以使用 pytest.cache 获取测试运行状态并将该测试附加到队列中以防万一。

if request.config.cache.get(request.node):
    request.session.items.append(request.node)
    pytest.xfail("file not present yet")

您还可以在 pytest 缓存中设置自定义值,以便在不同的运行中使用request.config.cache.set(data,val)

如果您正在编写位于 test 目录中的文件,则可以使用 pytest-xdist 的--looponfail开关。 它监视目录并重新运行测试,直到测试通过。 来自文档: distributed and subprocess testing: -f, --looponfail run tests in subprocess, wait for modified files and re-run failing test set until all pass.

可能有用的链接: Pytest-cache

作为一个友好的建议,如果您计划在并行线程中运行,我建议您使测试相互独立。

安装这个包:pytest-rerunfailures 使用这个命令:pip install pytest-rerunfailures

要重新运行所有测试失败,请使用 --reruns 命令行选项以及您希望测试运行的最大次数:

$ pytest --reruns 5

失败的夹具或 setup_class 也将重新执行。

要在重新运行之间添加延迟时间,请使用 --reruns-delay 命令行选项以及在启动下一次测试重新运行之前您希望等待的秒数:

$ pytest --reruns 5 --reruns-delay 1

1 如何重新运行仅失败的测试?

我们正在测试竹子。 但是,如果对竹子的任何测试都失败了,我们就必须对所有的竹子再次进行测试。 有什么方法可以让我们只对竹子进行失败的测试。 是否有必要更改我们的框架,这意味着在我们使用java + Ant + TestNG执行测试用例时,ant build.xml文件或testNG文件中的 ...

4 QUnit不会重新运行所有失败的测试

我是第一次使用QUnit,但遇到一个奇怪的问题,使我觉得我已经错过了设置的一些基本部分。 我设置了四个测试,所有测试均失败。 当我第一次加载页面时,QUnit会正确报告所有四个失败。 当我重新加载页面时,似乎只有两个测试正在运行(它们失败了)。 我发现如果删除会话存储中的键/值对,则 ...

7 失败后重新运行特定测试

我的测试套件中有一次扑朔迷离的测试-每100次运行中一次失败。 但是,这是一种预期的行为,因为它是对运行大量内容并返回结果的算法的测试-每次都找不到结果。 如果我再次运行测试套件,则一切都是绿色。 如果测试失败,是否有办法重新运行此特定测试并使用重新运行的结果? 例如,此测试 ...

8 自动重新运行失败的测试

我有一组Selenium / MbUnit测试,可以很好地运行,但往往需要一段时间才能运行(超过4小时)。我发现的一个问题是,每20个测试中就有1个似乎在运行时超时。 我已经确认Selenium GRID可以正常使用,并且Selenium RC都可以,这似乎只是系统的一个基本要求。 真正令人 ...

10 如何立即重新运行失败的 JUnit 测试?

有没有办法让 JUnit 规则或类似的东西给每个失败的测试第二次机会,只需尝试再次运行它。 背景:我有一大组用 JUnit 编写的 Selenium2-WebDriver 测试。 由于时间非常紧迫(点击后只有很短的等待时间),一些测试(100 次中的 1 次,并且总是不同的一次)可能会失败,因为服 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM