python - 将覆盖率和 codecov.io 与 pytest 单元测试和定制的内联测试一起使用
问题描述
我的一个 Python 项目的代码库包含大量测试。这些测试足够广泛和宽敞,我称它们为“健壮的”。我想知道它们到底有多强大,所以我设置了工具coverage.py
和codecov.io帐户。
该项目有两种类型的测试:
- 一套单元测试,从一开始就编写并运行
pytest
——即没有unittest
基于遗留的测试,并且pytest
夹具和钩子被大量利用。 - 每个模块的内联测试功能套件,用一个简单的定制测试运行器编写。这些看起来都像这样:
# -*- coding: utf-8 -*-
import sys # …etc
# «module code»
def test():
from clu.testing.utils import inline
@inline.precheck
def show_some_initial_values():
""" Precheck function description """
# «pre-check code»
@inline
def test_one():
""" Test one’s description """
# «test code»
@inline
def test_two():
""" Test two’s description """
# «test code»
@inline.diagnostic
def show_some_final_values():
""" Diagnostic function description """
# «post-run diagnostic code»
return inline.test(100) # runs test functions 100 times;
# prechecks and diagnostics run once
if __name__ == '__main__':
sys.exit(test())
......他们输出报告如下:
... 内联测试可以在每个模块的基础上运行,直接从编辑器。它们也可以通过收集和运行定义内联测试的所有模块的nox
设置来集体运行。
所以现在,关于和 codecov.io - 将套件与这些工具coverage.py
集成起来非常容易。pytest
我对一个现成的.coveragerc
文件进行了一些调整,安装了pytest
codecov.io 插件,就是这样——那些测试将它们的覆盖率报告给 codecov.io 就好了。
我的问题是,如何为内联测试集成覆盖率报告?
- 是否有一种简单的配置方法
coverage.py
来“理解”这些测试功能,或者内联测试是否需要将其结果报告给覆盖工具? - 可以在文件中设置类似的
.coveragerc
内容,还是涉及更多? - 而且,是否还有其他我应该考虑的工具,无论是额外的还是代替我目前使用的工具?
解决方案
Coverage.py 对测试一无所知。它所做的只是告诉您代码的哪些部分由某个程序运行。通常该程序是一个测试运行程序,但coverage.py 不在乎。
如果您现在使用 运行测试python mytestrunner.py
,请将命令更改为coverage run mytestrunner.py
,您将获得数据。
推荐阅读
- azure-ad-b2c - OAUTH 取消请求 B2C
- c++ - 填充字符串数组时遇到问题
- html - Pandoc:转换 HTML 内联样式
- node.js - 我将图片上传到服务器,但未能带入图片
- assembly - 给定PC=0x32011C,一个值位于0x32010C,那么偏移量是多少?
- python - Pandas groupby/apply 对 int 和 string 类型有不同的行为
- docker - 使用 Docker 在两个文件夹中编译两个应用程序
- javascript - 为什么按钮不触发第二个功能?
- javascript - 如何找到我刚刚上传到 S3 的流的总大小?
- c# - SendGrid 联系人 API