我的 Python 项目的代码库包含大量测试。这些测试足够广泛和广泛,我称它们为“稳健”。我想确切地知道它们有多强大,所以我设置了 the coverage.py
tool ,以及 codecov.io account .
该项目有两种类型的测试:
- 一套单元测试,从一开始就编写为
pytest
运行– 即没有基于unittest
的遗留测试,并且大量利用了pytest
固定装置和 Hook 。 - 每个模块内联测试功能套件,用 a simple bespoke test runner 编写。这些看起来都像这样:
# -*- 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())
…他们输出这样的报告:
...内联测试可以直接从编辑器中按模块运行。它们也可以通过 a nox
setup 集体运行收集并运行 all modules that define inline tests .
现在,对于 coverage.py
和 codecov.io - 将 pytest
套件与这些工具集成起来非常容易。我对现成的 .coveragerc
文件进行了一些调整,安装了 pytest
codecov.io 插件,就是这样 – 这些测试向 codecov 报告其覆盖范围.io 就好了。
我的问题是,如何集成内联测试的覆盖率报告?
- 是否有一种简单的方法来配置
coverage.py
以“理解”这些测试函数,或者内联测试是否需要将其结果报告给覆盖率工具? - 可以在
.coveragerc
文件中设置类似的内容吗?还是更复杂? - 此外,我是否还应该考虑使用其他工具来补充或替代我当前使用的工具?
最佳答案
Coverage.py 不了解有关测试的任何内容。它所做的只是告诉您代码的哪些部分由某个程序运行。通常该程序是测试运行程序,但coverage.py并不关心。
如果您现在使用 python mytestrunner.py
运行测试,请将命令更改为 coverage run mytestrunner.py
,您将获得数据。
关于python - 将覆盖率和 codecov.io 与 pytest 单元测试和定制内联测试结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864784/