繁体   English   中英

将覆盖率和 codecov.io 与 pytest 单元测试和定制的内联测试一起使用

[英]Using coverage and codecov.io with both pytest unit tests and bespoke inline tests

我的一个 Python 项目的代码库包含大量测试。 这些测试足够广泛和宽敞,我称它们为“健壮的”。 我想知道它们到底有多健壮,所以我设置了coverage.py工具和一个codecov.io 帐户

该项目有两种类型的测试:

  1. 一套单元测试,从一开始就编写并使用pytest运行 - 即没有遗留的基于unittest的测试,并且pytest固定装置和挂钩被大量利用。
  2. 每个模块的内联测试功能套件,用一个简单的定制测试运行器编写。 这些看起来都像这样:
# -*- 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设置来集体运行。

所以现在,关于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 ,您将获得数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM