有条件的保险基于你定义的任何规则!
coverage-conditional-plugin的Python项目详细描述
覆盖条件插件
有条件的保险基于你定义的任何规则!在
有些项目有依赖于不同环境的不同部分:
- Python版本,有些代码只在特定版本上执行,而在其他版本上忽略
- 操作系统版本,某些代码可能仅限于Windows、Mac或Linux
- 外部软件包,某些代码仅在安装了某些第三方软件包时执行
当前的最佳实践是在我们的项目中使用# pragma: no cover
。
这个项目允许使用可配置的pragma
如果某个条件的计算结果为真,则包括覆盖范围内的代码,
当条件为false时,返回到忽略此代码。在
安装
pip install coverage-conditional-plugin
然后您需要添加到setup.cfg
或.coveragerc
文件中
一些额外的配置:
或者你的pyproject.toml
:
[tool.coverage.run]# Here we specify plugins for coverage to be used:plugins=["coverage_conditional_plugin"][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-djangoimportdjangoexceptImportError:# pragma: has-no-djangodjango=Nonedefrun_if_django_is_installed():ifdjangoisnotNone:# pragma: has-django...
下面是您可能使用的配置:
[coverage:coverage_conditional_plugin]rules= "is_installed('django')": has-django "not is_installed('django')": has-no-django
运行测试时,无论是否安装了django
在这两种情况下你都有100%
的保险范围。在
但是,将包括不同的线路。
安装django
后,它将包括
try:
和{
在没有安装django
的情况下运行时,
它将包括except ImportError:
行。在
编写pragma规则
pragma规则的格式为:
"pragma-condition": pragma-name
使用"pragma-condition"
计算"pragma-condition"
中的代码。
确保您传递的输入是可信的!
"pragma-condition"
计算后必须返回bool
值。在
我们支持PEP-496中指定的所有环境标记。 见Strings 和Version Numbers 节以获取可用值。此外,我们还提供了一系列附加标记:
sys_version_info
与{a10}相同os_environ
与{a11}相同is_installed
是我们的自定义函数,它尝试导入传递的字符串,返回bool
值package_version
是我们的自定义函数,它试图从pkg_resources
获取包版本并返回其parsed version
使用get_env_info
获取当前环境的值:
fromcoverage_conditional_pluginimportget_env_infoget_env_info()
许可证
学分
此项目是用^{
- 项目
标签: