Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个特定于python版本的“#布拉格语nocover“;可用于python覆盖工具?_Python_Coverage.py - Fatal编程技术网

是否有一个特定于python版本的“#布拉格语nocover“;可用于python覆盖工具?

是否有一个特定于python版本的“#布拉格语nocover“;可用于python覆盖工具?,python,coverage.py,Python,Coverage.py,使用python coverage.py,我想做如下工作: if six.PY3: from functools import lru_cache else: from .lru_cache_local imoprt lru_cache 然后,使用tox,在我的覆盖率报告中没有我的python2特定代码计数。。。。有类似的吗 # pragma: nocover_py2 # pragma: nocover_py3 有空吗 谢谢 您可以通过配置文件 # py2.coverage

使用python coverage.py,我想做如下工作:

if six.PY3:
    from functools import lru_cache
else:
    from .lru_cache_local imoprt lru_cache
然后,使用tox,在我的覆盖率报告中没有我的python2特定代码计数。。。。有类似的吗

# pragma: nocover_py2

# pragma: nocover_py3
有空吗

谢谢

您可以通过配置文件

# py2.coveragerc
[report]
exclude_lines =
    pragma: no cover
    pragma: nocover_py2
然后,您可以通过选择是使用Python2配置文件,还是使用Python3配置文件


与其排除行,不如测量python 2和python 3的覆盖率,然后将它们结合起来。

coveragerc文件将扩展环境变量,因此可以执行以下操作:

[report]
exclude_lines =
    pragma: no cover
    pragma: nocover_${PRAGMA_VERSION}
然后像这样运行coverage.py:

PRAGMA_VERSION=py2 coverage report 

谢谢大家的鼓励。。。。我的解决方案最终是这样的。将其推广到.py2和.py3会很好,但是tox似乎没有提供大量的执行环境参数词汇表:(

.coveragerc_py27

...
[report]
exclude_lines =
      pragma: nocover
      pragma: py2_nocover
....
.coveragerc_py34

...
[run]
omit = *_py2.py

[report]
exclude_lines =
      pragma: nocover
      pragma: py3_nocover
....
tox.ini

...
[testenv]
commands = pytest \
    --cov-config .coveragerc_{envname} \
    ...
...
[testenv]
commands = pytest \
    --cov-config .coveragerc_{envname} \
    ...