2

我正在尝试了解 python 脚本的运行覆盖率。我无法理解我尝试为具有无限循环的简单脚本运行覆盖的场景:

#!/usr/bin/python

print "The only statement!!!"

while True:
    pass

在调用此脚本的覆盖后,我将终止此进程,因为它是一个无限循环,如果我尝试得到结果,我会得到:

  1. 覆盖运行 sample.py
  2. 杀死样本
  3. 覆盖率报告 -m

Name Stmts Miss Cover Missing -------------------------------------

我没有收到任何报道。我在做一些根本错误的事情吗?

4

1 回答 1

5

coverage需要能够在程序结束时将其数据写出,如果无法处理退出信号,则不会生成报告。

所以这取决于你如何杀死你的进程以及如何coverage处理信号 - 使用 Ctrl+C(即发送 SIGINT)中断时对我来说很好sample.py

$ coverage run sample.py
The only statement!!!
Traceback (most recent call last):
  File "sample.py", line 5, in <module>
    while True:
KeyboardInterrupt

$ coverage report -m
Name     Stmts   Miss  Cover   Missing
--------------------------------------
sample       3      0   100%

如果您使用kill没有选项的实用程序,那么您默认发送 SIGTERM,请尝试kill -INT <pid>

于 2014-08-26T10:16:27.980 回答