py.test:在测试结束时转储卡住的后台线程

Mik*_*maa 4 unit-testing pytest python-3.x

我正在使用 pytest 来运行我的项目 Python 单元测试。

出于某种原因,有时在打印测试统计信息后测试运行器不存在。我怀疑这是因为一些测试打开了后台线程,而一些悬空线程在拆卸过程中没有被正确清理。由于这种情况并非每次都发生,因此很难确定到底发生了什么。

我希望找到一种方法让 pytest 在打印失败并通过测试后显示哪些线程。我提出了一些想法?

  • 测试完成后运行自定义钩子 - py.test 是否支持任何此类钩子?

  • 其他一些方式(自定义 py.test 包装脚本)

我认为其他替代方法只是在每次拆卸结束时打印线程转储。

蟒蛇 3.4。

Bru*_*ira 5

尝试使用pytest-timeout插件...发生超时后,它将转储所有线程并退出进程。

如果您想自己实现自定义代码,请查看pytest hooks。我猜您可以使用pytest_runtest_teardown钩子编写自定义拆卸代码。