我试图理解python脚本的运行覆盖率。我无法理解我尝试为具有无限循环的简单脚本运行覆盖的场景:
#!/usr/bin/python
print "The only statement!!!"
while True:
pass
在调用此脚本的覆盖范围后,我将终止此过程,因为它是一个无限循环,如果我尝试得到结果,我会得到:
Name Stmts Miss Cover Missing
-------------------------------------
我没有收到任何报道。我在做一些根本错误的事情吗?
答案 0 :(得分: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>
。