有条件的保险基于你定义的任何规则!

coverage-conditional-plugin的Python项目详细描述


覆盖条件插件

wemake.servicesBuild StatuscodecovPython Versionwemake-python-styleguide

有条件的保险基于你定义的任何规则!在

有些项目有依赖于不同环境的不同部分:

  • Python版本,有些代码只在特定版本上执行,而在其他版本上忽略
  • 操作系统版本,某些代码可能仅限于Windows、Mac或Linux
  • 外部软件包,某些代码仅在安装了某些第三方软件包时执行

当前的最佳实践是在我们的项目中使用# pragma: no cover。 这个项目允许使用可配置的pragma 如果某个条件的计算结果为真,则包括覆盖范围内的代码, 当条件为false时,返回到忽略此代码。在

the announcing post。在

安装

pip install coverage-conditional-plugin

然后您需要添加到setup.cfg.coveragerc文件中 一些额外的配置:

^{pr2}$

或者你的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中指定的所有环境标记。 见StringsVersion 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()

许可证

MIT

学分

此项目是用^{}生成的。当前模板版本是:a61725009d8399ae77376b5ad9de354214bc1159。看看从那以后updated是什么。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何处理Android文本视图。SetText(int resid)工作?   java为什么@Transactional+spring数据jdbc+Sybase不回滚?   java异常处理资源   java无法通过Firebase SMS身份验证/验证进行验证   java Spring:确保没有“dependson”的初始化顺序   加载SharedReferences“getBoolean”时java Android应用程序崩溃   java在要求谓词作为参数的Mockito方法调用中获取空指针异常   java为什么不导入facebook sdk   java我在如何为使用RESTAPI方法进行jUnit测试方面遇到了问题   java使用swing在形状周围绘制边框   java unity firebase数据库检索数据   java有人能从技术上解释一下下面代码的功能吗