打印测试执行时间并使用py.test固定慢速测试


118

我正在使用py.test在CI服务器上运行单元测试。测试使用通过网络获取的外部资源。有时测试跑步者花费的时间太长,导致测试跑步者被中止。我不能在本地重复这些问题。

有没有一种方法可以使py.test打印出(缓慢)测试的执行时间,因此固定有问题的测试变得更加容易?

Answers:


172

我不确定这是否可以解决您的问题,但是您可以在测试套件完成后通过--durations=N以打印最慢的N测试。

使用--durations=0打印所有。


88
如果您通过--durations=0了所有测试的执行时间,则将报告。
oLas

您是否知道是否可以将其添加到生成的HTML覆盖率报告中?类似于添加.coveragerc带有内容的文件[run] branch = True会添加分支覆盖信息吗?
马丁·托马

您将需要自己添加该信息,pytest-html支持插入其他内容。
布鲁诺·奥利维拉

4
@oLas:事实并非如此:如果测试“太快”,则测得的时间显然可以变为0,并且仍然会被滤除。负阈值在这种情况下也无济于事。这种方法的另一个烦人之处在于pytest总是会打印出来(0.00 durations hidden. Use -vv to show these durations.),没有任何意义。
bluenote10

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.