尽管安装了插件,我似乎无法使用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) 我是新来的报道并遇到了一个奇怪的问题.我的报道是将我的虚拟环境站点包考虑在内.以下是覆盖率运行的输出:
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) 我最近偶然发现了在虚拟环境中运行覆盖率测量的一些问题.我不记得过去的类似问题,也无法在网上找到解决方案.
基本上,当我尝试在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系统范围内更改或安装所需的模块,但必须采用更清洁的方式.
我想知道是否可以将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
我有一个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,但这似乎不会生成累积覆盖率报告.
我正在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->-48和59->-58有我抓我的头.他们的意思是什么?
......还有一匹小马!不,真的.我正在寻找一种方法来组织"正常工作"的测试.大多数事情都有效,但并非所有部分都适合.所以这就是我想要的:
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").
然而,这种方法存在一些问题.
--doctest-modules选项是crap.load_tests函数,但不提供任何参数.这看起来完全打破了鼻子的一面.如何让事情比这更好或解决上面的一些问题?
我有一个金字塔Web应用程序,它使用Jinja2作为模板引擎.它使用Pyramid测试助手以及py.test和coverage插件进行测试.但覆盖仅适用于我的Python代码.有没有办法检查Jinja模板的覆盖范围?
由于Jinja被编译成Python代码,并且Armin会在异常情况下给出精确的行号,所以至少在理论上我是可能的.任何提示都将非常感激.
我有一些我工作的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) python-coverage ×10
python ×9
coverage.py ×5
testing ×2
unit-testing ×2
virtualenv ×2
discovery ×1
django ×1
jenkins ×1
jinja2 ×1
nose ×1
tox ×1