标签: python-coverage

如何修复Python Nose:覆盖范围不可用:无法导入coverage模块

尽管安装了插件,我似乎无法使用Nose进行代码覆盖.

有想法该怎么解决这个吗?

12:15:25 ~/sandbox/ec$ nosetests --plugins
Plugin xunit
Plugin deprecated
Plugin skip
Plugin multiprocess
Plugin failuredetail
Plugin capture
Plugin logcapture
Plugin coverage
Plugin attributeselector
Plugin doctest
Plugin profile
Plugin id
Plugin allmodules
Plugin collect-only
Plugin isolation
Plugin pdb

12:15:34 ~/sandbox/ec$ nosetests -v --with-coverage
nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module
tests.edgecast_client_tests.test_log ... ok

----------------------------------------------------------------------
Ran 1 test in 0.206s

OK
Run Code Online (Sandbox Code Playgroud)

python nose coverage.py python-coverage

52
推荐指数
1
解决办法
2万
查看次数

防止python覆盖包括虚拟环境站点包

我是新来的报道并遇到了一个奇怪的问题.我的报道是将我的虚拟环境站点包考虑在内.以下是覆盖率运行的输出:

coverage run test.py
....................
----------------------------------------------------------------------
Ran 20 tests in 0.060s

OK
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master)       [19:58:45]
$ coverage report
Name                                                                              Stmts   Miss  Cover
-----------------------------------------------------------------------------------------------------
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/__init__               18      0   100%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/_compat                38     20    47%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/app                   528    255    52%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/blueprints            156    118    24%
                             .
                             .
                             .
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/urls               412    215 …
Run Code Online (Sandbox Code Playgroud)

python testing code-coverage virtualenv python-coverage

32
推荐指数
3
解决办法
1万
查看次数

在virtualenv内运行覆盖

我最近偶然发现了在虚拟环境中运行覆盖率测量的一些问题.我不记得过去的类似问题,也无法在网上找到解决方案.

基本上,当我尝试在virtualenv中运行测试套件时,它工作正常.但是,尽管我尝试使用coverage它,但由于缺少所需的模块而失败.基于StackOverflow上的一些答案,我检查了我的脚本并发现它coverage使用不同的解释器,即使从内部运行也是如此virtualenv.

以下是如何重现它:

$ virtualenv --no-site-packages venv
New python executable in venv/bin/python
Installing Setuptools................................................done.
Installing Pip.......................................................done.
$ source venv/bin/activate
(venv)$ echo 'import sys; print(sys.executable)' > test.py
(venv)$ python test.py
/home/tadeck/testground/venv/bin/python
(venv)$ coverage run test.py 
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

问题是:如何coverage无缝地使用虚拟环境?我可以在sys.path系统范围内更改或安装所需的模块,但必须采用更清洁的方式.

python virtualenv coverage.py python-coverage

15
推荐指数
2
解决办法
3978
查看次数

结合python覆盖文件?

我想知道是否可以将coverage.xml文件合并到1个文件中以查看HTML输出中的全局报告.

我的unit/functional tests运行是1命令和integration tests第二个命令.这意味着我的覆盖范围unit/functional tests被覆盖了unit tests.

如果我对这个问题有一些解决方案,那将是很好的,主要是通过将这些文件组合成1个文件.

python unit-testing code-coverage coverage.py python-coverage

15
推荐指数
4
解决办法
8837
查看次数

如何在多个Python脚本运行中获得组合代码覆盖率

我有一个python程序,通过使用不同的输入运行它几次,并将输出与参考结果进行比较来测试.

我想得到所有测试的代码覆盖率,所以我可以看看是否有额外的输入集我应该用来获得完整的覆盖率.我看过覆盖模块,但无法弄清楚我是如何做到这一点的.

有线索吗?

python code-coverage python-coverage

10
推荐指数
1
解决办法
3627
查看次数

报告多个Python版本的累积覆盖率

我有根据当前版本的Python有条件运行的代码,因为我支持来自同一个包的2.6,2.7和3.3.

我目前使用默认版本的Python生成这样的覆盖率报告:

coverage run --source mypackage setup.py test
coverage report -m
coverage html
Run Code Online (Sandbox Code Playgroud)

这很有用但不理想,因为它只报告Python 2.7的内容.相反,我想生成2.6,2.7 3.2 的测试覆盖率的累积报告.

如何生成多版本覆盖率报告?

旁注:我已经尝试commands = coverage run --source mypackage setup.py test为py26,py27,py33中的每一个输入我的tox.ini,但这似乎不会生成累积覆盖率报告.

python coverage.py tox python-coverage

9
推荐指数
1
解决办法
1360
查看次数

如何解释Python coverage.py分支覆盖率结果?

我正在coverage.py测量我的测试的代码覆盖率.我启用了分支覆盖,但我无法理解报告.

没有分支机构覆盖,我获得100%的覆盖率:

Name                           Stmts   Miss  Cover   Missing
------------------------------------------------------------
mylib/queries.py                  44      0   100%
Run Code Online (Sandbox Code Playgroud)

启用分支覆盖:

Name                           Stmts   Miss Branch BrPart  Cover   Missing
--------------------------------------------------------------------------
mylib/queries.py                  44      1     20      3    94%   55, 21->10, 53->-48, 59->-58
Run Code Online (Sandbox Code Playgroud)

有问题的来源可以在这里找到.

21->10说得通; 该if子句永远不会评估为False(跳回外部for循环的开头).

然而,53->-4859->-58有我抓我的头.他们的意思是什么?

python coverage.py python-coverage

8
推荐指数
1
解决办法
2077
查看次数

使用doctests,coverage和parallelism进行Python测试发现

......还有一匹小马!不,真的.我正在寻找一种方法来组织"正常工作"的测试.大多数事情都有效,但并非所有部分都适合.所以这就是我想要的:

  • 自动发现测试.这包括doctests.请注意,doctests的总和不得显示为单个测试.(即不是py.test --doctest-modules所做的)
  • 能够并行运行测试.(像xdist中的py.test -n之类的东西)
  • 生成覆盖率报告.
  • 做好python setup.py test工作.

我目前的方法涉及tests目录和load_tests协议.包含的所有文件都命名为test_*.py.python -m unittest discover如果我test_doctests.py使用以下内容创建文件,这只会起作用.

import doctest
import mymodule1, mymodule2
def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite(mymodule1))
    tests.addTests(doctest.DocTestSuite(mymodule2))
    return tests
Run Code Online (Sandbox Code Playgroud)

这种方法也有可以使用setuptools和供应的好处setup(test_suite="unittest2.collector").

然而,这种方法存在一些问题.

  • coverage.py希望运行一个脚本.所以我不能在这里使用unittest2发现.
  • py.test不运行load_tests函数,因此它找不到doctests而且--doctest-modules选项是crap.
  • nosetests运行load_tests函数,但不提供任何参数.这看起来完全打破了鼻子的一面.

如何让事情比这更好或解决上面的一些问题?

python unit-testing discovery python-coverage

7
推荐指数
1
解决办法
1334
查看次数

Jinja2模板的代码覆盖率

我有一个金字塔Web应用程序,它使用Jinja2作为模板引擎.它使用Pyramid测试助手以及py.test和coverage插件进行测试.但覆盖仅适用于我的Python代码.有没有办法检查Jinja模板的覆盖范围?

由于Jinja被编译成Python代码,并且Armin会在异常情况下给出精确的行号,所以至少在理论上我是可能的.任何提示都将非常感激.

python testing code-coverage jinja2 python-coverage

7
推荐指数
1
解决办法
492
查看次数

使用django-jenkins运行覆盖测试

我有一些我工作的Django项目,我使用Jenkins进行持续集成.我已经安排好了一段时间并且运行良好.

我希望能够生成自动化的测试覆盖率报告,并让Jenkins处理它们.它看起来像django-jenkins是那样的方式,所以我安装了它coverage.

这是我的相关部分settings.py:

# Jenkins integration
INSTALLED_APPS += ('django_jenkins',)
JENKINS_TASKS = ( 
    'django_jenkins.tasks.with_coverage',
    'django_jenkins.tasks.run_pylint',
    'django_jenkins.tasks.django_tests',
)
PROJECT_APPS = ['myapp']
Run Code Online (Sandbox Code Playgroud)

现在,我可以运行python manage.py jtest,它按预期工作.但是,如果我运行python manage.py jenkins,它会出错:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 76, in load_command_class
    return module.Command()
  File "/home/matthew/Projects/blah/venv/local/lib/python2.7/site-packages/django_jenkins/management/commands/__init__.py", …
Run Code Online (Sandbox Code Playgroud)

django jenkins django-jenkins python-coverage

7
推荐指数
2
解决办法
5008
查看次数