为什么运行pytest时pycharm会错过此覆盖率命中率?

时间:2020-04-06 17:01:53

标签: python pycharm pytest coverage.py

我有一些针对用最新版本的PyCharm访问数据库的python代码运行的测试用例。我所有的测试用例都通过了((#pragma没有覆盖线除外)期望100%覆盖。在某些情况下,实际上我知道这是因为我在测试运行中设置了断点并单步执行代码,所以该代码未标记为成功。

下图显示了一个示例,将104,106和107标记为未命中,但它们绝对是命中的。我在截屏上截断了显示该行的屏幕截图,该断点显然未标记为命中。

这里是驻留在模块biz中的功能(不涉及类/对象,没有直接的函数调用),即使运行测试时我也可以单步浏览每一行:

    def get_schedule_d():
        try:
            with connection() as conn:
                with conn.cursor() as cursor:
                    query = f"""LONG QUERY"""
                    cursor.execute(query)
                    columns = [column[0] for column in cursor.description]
                    for row in cursor:
                        yield dict(zip(columns, row))
         except pyodbc.ProgrammingError:  # pragma: no cover
             return

这是调用它的测试用例。 biz.py具有一些访问数据库的功能。它不是类或对象,而只是在名为biz的模块中起作用。

    def test_get_schedule():
        sc = list(biz.get_schedule('2019-12-9'))
        scd = list(biz.get_schedule_d('2019-12-9'))
        assert len(sc) == 95
        assert len(scd) == 95

这是覆盖范围不完整的指示...在没有覆盖范围的行上击中了一个断点:

enter image description here

0 个答案:

没有答案
相关问题