基于您定义的任何规则的条件覆盖率!
项目描述
coverage-conditional-plugin
基于您定义的任何规则的条件覆盖率!
有些项目有不同的部分,依赖于不同的环境
- Python版本,某些代码仅在特定版本上执行,在其他版本上被忽略
- 操作系统版本,某些代码可能仅在Windows、Mac或Linux上运行
- 外部包,某些代码仅在安装了某些第三方包时执行
当前最佳实践是在这些位置使用# pragma: no cover。本项目允许使用可配置的pragmas,如果某些条件评估为true,则将这些代码包含在覆盖率中,当条件为false时,则忽略此代码。
阅读 公告帖子。
安装
pip install coverage-conditional-plugin
然后您需要将一些额外的配置添加到您的setup.cfg或.coveragerc文件中
[coverage:run]
# Here we specify plugins for coverage to be used:
plugins =
coverage_conditional_plugin
[coverage:coverage_conditional_plugin]
# Here we specify files to conditionally omit:
omit =
"sys_platform == 'win32'":
"my_project/omit*.py"
"my_project/win.py"
# Here we specify our pragma rules:
rules =
"sys_version_info >= (3, 8)": py-gte-38
"is_installed('mypy')": has-mypy
或者到您的pyproject.toml
[tool.coverage.run]
# Here we specify plugins for coverage to be used:
plugins = ["coverage_conditional_plugin"]
[tool.coverage.coverage_conditional_plugin.omit]
# Here we specify files to conditionally omit:
"my_project/omit*.py" = "sys_platform == 'win32'"
[tool.coverage.coverage_conditional_plugin.rules]
# Here we specify our pragma rules:
py-gte-38 = "sys_version_info >= (3, 8)"
has-mypy = "is_installed('mypy')"
根据您的需求调整规则!
示例
想象我们有一段这样的代码
try: # pragma: has-django
import django
except ImportError: # pragma: has-no-django
django = None
def run_if_django_is_installed():
if django is not None: # pragma: has-django
...
这里可能是您可能会使用的配置
[coverage:coverage_conditional_plugin]
rules =
"is_installed('django')": has-django
"not is_installed('django')": has-no-django
当您在安装或不安装django的情况下运行测试时,您将在这两种情况下都有100%的覆盖率。
但是,不同的行将被包含。当安装了django时,它将包含try:和if django is not None:条件。
在没有安装django的情况下运行时,它将包含except ImportError:行。
编写pragma规则
pragma规则格式为
"pragma-condition": pragma-name
在"pragma-condition"内部的代码将通过eval进行评估。请确保您传递给它的输入是可信的!"pragma-condition"在评估后必须返回bool值。
我们支持在PEP-496中指定的所有环境标记。请参阅字符串和版本号部分,以获取可用值。我们还提供了一组额外的标记
sys_version_info与sys.version_info相同os_environ与os.environ相同is_installed是我们自定义的函数,它尝试导入传递的字符串,并返回bool值package_version是我们自定义的函数,它尝试从pkg_resources获取包版本,并返回其解析版本
使用get_env_info来获取当前环境的值
from coverage_conditional_plugin import get_env_info
get_env_info()
编写省略
省略允许条件性地从覆盖率测量中省略整个文件。
省略的TOML格式为
[tool.coverage.coverage_conditional_plugin.omit]
"pragma-condition" = ["project/prefix*.py", "project/filename.py"]
# or
"pragma-condition" = "project/filename.py"
注意:不支持的ini格式用于omit配置选项,因为没有简单的方法来解析复杂的ini配置。欢迎提交修复此问题的PR!
文件名模式应遵循coverage.py的[run] omit语法。请参阅coverage.py。
许可证
项目详情
关闭
哈希值 for coverage_conditional_plugin-0.9.0-py3-none-any.whl
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 1b37bc469019d2ab5b01f5eee453abe1846b3431e64e209720c2a9ec4afb8130 |
|
| MD5 | d20bf7f3753fb238600d8a15d87726da |
|
| BLAKE2b-256 | 0683df10dd1911cb1695274da836e786ade7eaace9ed625b14056eb0bd6117d8 |