将覆盖率和 codecov.io 与 pytest 单元测试和自定义内联测试结合使用

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

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

  1. 一套单元测试,从一开始就用pytest运行 - 即没有基于传统的测试,并且夹具和钩子被大量利用。unittestpytest

  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())

...他们输出报告,如下所示:

http://img2.mukewang.com/63204f5200010a5c13610996.jpg

...内联测试可以基于每个模块运行,直接从编辑器中运行。它们还可以通过 nox 设置全部运行,该设置收集并运行定义内联测试的所有模块

所以现在,关于和 codecov.io - 将套件与这些工具集成非常容易。我对一个现成的文件做了一些调整,安装了 codecov.io 插件,那就是 - 这些测试报告它们的覆盖范围 codecov.io 很好。coverage.pypytest.coveragercpytest

我的问题是,如何集成内联测试的覆盖率报告?

  • 有没有一种简单的方法来配置以“理解”这些测试功能,或者内联测试是否需要将其结果报告给覆盖工具?coverage.py

  • 是否可以在文件中设置类似的东西,或者它是否更复杂?.coveragerc

  • 而且,我应该考虑任何其他工具,无论是额外的还是代替我当前使用的工具?


海绵宝宝撒
浏览 73回答 1
1回答

慕标琳琳

Coverage.py 对测试一无所知。它所做的只是告诉你代码的哪些部分是由某个程序运行的。通常,该程序是测试运行程序,但 coverage.py 并不在乎。如果现在使用 运行测试,请将命令更改为 ,您将获得数据。python mytestrunner.pycoverage run mytestrunner.py
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python