Joh*_*ank 32 python testing code-coverage virtualenv python-coverage
我是新来的报道并遇到了一个奇怪的问题.我的报道是将我的虚拟环境站点包考虑在内.以下是覆盖率运行的输出:
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 48%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/utils 242 175 28%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/wrappers 568 298 48%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/wsgi 448 352 21%
atcatalog/__init__ 7 0 100%
atcatalog/views/__init__ 0 0 100%
atcatalog/views/publang 7 0 100%
atcatalog/views/pubtext 1 0 100%
atcatalog/views/userlang 13 0 100%
atcatalog/views/users 5 0 100%
atcatalog/views/usertext 14 0 100%
test 120 0 100%
-----------------------------------------------------------------------------------------------------
TOTAL 12530 8044 36%
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master) [19:58:55]
Run Code Online (Sandbox Code Playgroud)
这是我的项目目录的结构,它位于home下面:
workspace/
??? README.md
??? atcatalog
? ??? __init__.py
? ??? __init__.pyc
? ??? static
? ??? templates
? ??? views
? ??? __init__.py
? ??? __init__.pyc
? ??? publang.py
? ??? publang.pyc
? ??? pubtext.py
? ??? pubtext.pyc
? ??? userlang.py
? ??? userlang.pyc
? ??? users.py
? ??? users.pyc
? ??? usertext.py
? ??? usertext.pyc
??? requirements.txt
??? run.py
??? test.py
Run Code Online (Sandbox Code Playgroud)
我首先在项目目录中拥有虚拟环境,然后使用virtualenvwrapper将其移至〜/ Envs,但问题仍然存在.run.py和test.py没有任何特殊之处,它们都从atcatalog导入应用程序.我也试图找到省略虚拟环境目录的方法,但谷歌没有回答(令人惊讶).我不认为覆盖的目的是测试已经经过良好测试的站点包.所以我会将它们从跑步中排除.
如何避免覆盖测试我的网站包?
Joh*_*ank 40
感谢tknickman我明白了:使用其中之一
coverage run --source <path to project dir> test.py
Run Code Online (Sandbox Code Playgroud)
或者创建一个配置文件.coveragerc,它位于您运行覆盖的目录中,具有以下内容:
[run]
source =
<path to project dir>
Run Code Online (Sandbox Code Playgroud)
这使您无法在项目目录下安装虚拟环境.如果您在项目目录下安装了虚拟环境,则可以使用
coverage run --source <project path> --omit <pattern> test.py
Run Code Online (Sandbox Code Playgroud)
请注意,省略想要一个文件模式
~/projectdir/venv/*
Run Code Online (Sandbox Code Playgroud)
而不是路径.
相应的.coveragerc看起来像这样:
[run]
source=
<path to project dir>
omit=
<path to project dir>/<name of virtual env>/*
Run Code Online (Sandbox Code Playgroud)
我仍然认为,与标准库的软件包一样,默认情况下不应涵盖在site-packages下安装的任何软件包.
在您的setup.cfg
文件中包括:
[coverage:run]
omit=*/site-packages/*,*/tests/*,*/.eggs/*
Run Code Online (Sandbox Code Playgroud)
或者您想要隐藏的结果中显示的任何其他文件夹。
尝试使用py.test,然后在setup.cfg文件中指定测试选项。您将需要先点子安装pytest。
例如:
[pytest]
norecursedirs = build docs/_build *.egg .tox *.venv
python_files = tests/functional* tests/integration*
addopts =
#--verbose
--tb short
# Turn on --capture to have brief, less noisy output
# You will only see output if the test fails
# Use --capture no if you want to see it all or have problems debugging
--capture fd
# --capture no
# show extra test summary info as specified by chars (f)ailed, (E)error, (s)skipped, (x)failed, (X)passed.
- rfEsxX
--junitxml junit.xml
--cov workspace --cov-report xml --cov-report term-missing
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关配置py.test的更多信息:https ://pytest.org/latest/customize.html