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

标签 python testing virtualenv code-coverage 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]

这是我的项目目录的结构,它位于 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

我最初在项目目录中拥有虚拟环境,现在使用 virtualenvwrapper 将其移出 ~/Envs,但问题仍然存在。 run.py 和 test.py 在任何方面都没有什么特别之处,它们都从 atcatalog 导入应用程序。 我也试图找到省略虚拟环境目录的方法,但谷歌没有给出答案(令人惊讶)。 我不认为覆盖的目的是测试已经经过良好测试的站点包。所以我会将他们排除在运行之外。

在测试我的站点包时,我如何才能避免覆盖?

最佳答案

感谢 tknickman我想通了:使用任一

coverage run --source <path to project dir> test.py

或创建一个配置文件 .coveragerc,该文件位于您运行覆盖的目录中,内容如下:

[run]
source =
    <path to project dir>

这意味着您没有在项目目录下安装虚拟环境。 如果您在项目目录下安装了虚拟环境,则可以使用

coverage run --source <project path> --omit <pattern> test.py

请注意,省略需要像这样的文件模式

~/projectdir/venv/*

而不是路径。

对应的 .coveragerc 如下所示:

[run]
source=
    <path to project dir>
omit=
    <path to project dir>/<name of virtual env>/*

我仍然认为,像标准库的包一样,任何安装在 site-packages 下的包都不应该被默认覆盖。

关于python - 防止python覆盖包括虚拟环境站点包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160439/

相关文章:

python - 保持数字有序的有效方法

python - 如何计算每行特定值的唯一出现次数?

javascript - React 中的单元测试非静态方法

Java 在 String 中搜索有效的字符序列

找不到 Python 和 Ubuntu 文件

python - virtualenv 激活不起作用

python - 使用 python3 在 vi​​rtualenv 中设置环境卡在 setuptools、pip、wheel

python - 如何在已经包含 python 3.7.5 的 Ubuntu 19.10 上安装 python 3.6.5?

python - 在 Django 1.11 中使用 SelectDateWidget 的空选择

ruby - 我可以覆盖任务 :environment in test_helper. rb 来测试 rake 任务吗?