基于您定义的任何规则的条件覆盖率!
项目描述
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 |