PyCharm,Django:零代码覆盖率

abe*_*sto 15 python django code-coverage pycharm

PyCharm为Django测试目标提供了"Run with Coverage"操作.这将运行测试,但显示零测试覆盖率(0%文件,项目窗格中未涵盖,编辑器中全部为红色).选中或取消选中"使用捆绑的coverage.py"没有任何区别.

从CLI运行相同的测试会得到预期的结果:

$ coverage --version
Coverage.py, version 3.5.1.  http://nedbatchelder.com/code/coverage


$ coverage run ./manage.py test blackbox
Creating test database for alias 'default'...
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s

OK
Destroying test database for alias 'default'...


$ coverage report
Name                      Stmts   Miss  Cover
---------------------------------------------
__init__                      0      0   100%
blackbox/__init__             0      0   100%
blackbox/models               5      0   100%
blackbox/rules/__init__       1      0   100%
blackbox/rules/board         62     19    69%
blackbox/tests               49      6    88%
manage                       11      4    64%
settings                     24      0   100%
---------------------------------------------
TOTAL                       152     29    81%
Run Code Online (Sandbox Code Playgroud)

什么可能导致这个?

Tho*_*uez 2

我使用 PyCharm 捆绑的coverage.py 遇到了类似的问题

测试运行良好,但覆盖率结果未加载,到处都是“0%”或“未覆盖”。

不过,在测试输出之后,PyCharm 控制台中记录了一个与coverage.py 相关的错误:

/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python 
"/Applications/PyCharm 2.5 EAP.app/helpers/run_coverage.py" 
run "--omit=/Applications/PyCharm 2.5 EAP.app/helpers" bin/test

Creating test database for alias 'default'...
................................
----------------------------------------------------------------------
Ran xx tests in xxs

OK
No source for code: '/path/file.py' (<- error)

Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)

我的解决方案是运行捆绑的coverage.py,并选择忽略错误:“-i”。

我已经编辑了捆绑的“run_coverage.py”文件,您可以在控制台输出中看到它的位置,并在最后一行添加“-i”选项:

main(["xml", "-o", coverage_file + ".xml"])
Run Code Online (Sandbox Code Playgroud)

到:

main(["xml", "-i", "-o", coverage_file + ".xml"])
Run Code Online (Sandbox Code Playgroud)

这对我有用,错误被忽略,所有覆盖数据现在都加载到 UI 中。

如果使用“-i”解决了您这边的问题,更好的解决方案是修复错误,但在那之前,您将看到覆盖结果。