首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyCharm,Django:零代码覆盖率

PyCharm,Django:零代码覆盖率
EN

Stack Overflow用户
提问于 2012-03-23 22:39:34
回答 4查看 5.1K关注 0票数 15

PyCharm有一个针对Django测试目标的"Run with Coverage“操作。这将运行测试,但显示的测试覆盖率为零(0%的文件,未在项目窗格中覆盖,并且在编辑器中为红色)。选中或取消选中“使用捆绑的coverage.py”没有区别。

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

代码语言:javascript
复制
$ 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%

是什么导致了这种情况?

EN

回答 4

Stack Overflow用户

发布于 2017-08-17 16:08:14

如果您通过路径中的任何符号链接访问您的项目,覆盖率显示将失败。

尝试通过真实路径打开相同的项目,您将获得正确的行为。

https://youtrack.jetbrains.com/issue/PY-17616

PS:正在刷新旧问题,因为错误仍未修复。

票数 4
EN

Stack Overflow用户

发布于 2012-03-30 06:22:30

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

测试运行得很好,但是覆盖率结果没有加载,"0%“或”没有覆盖“。

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

代码语言:javascript
复制
/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

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

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

代码语言:javascript
复制
main(["xml", "-o", coverage_file + ".xml"])

至:

代码语言:javascript
复制
main(["xml", "-i", "-o", coverage_file + ".xml"])

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-10-11 19:23:31

我也一直在尝试用Ubuntu来解决这个问题。

目前,我尝试了apt-get Python和堆栈,但都没有成功。然而,在Windows中,它确实可以工作(使用Canopy)。

我使用了以下代码:

代码语言:javascript
复制
# in a.py
class A(object):

    def p(self, a):
        return a

# in test_a.py
from unittest import TestCase, main
from a import A

class TestA(TestCase):
    def test_p(self):
        inst = A()
        val = inst.p("a")
        self.assertEqual("a", val)


if _name_ == "__main__":
    main()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9841148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档