我有一些针对用最新版本的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
这是覆盖范围不完整的指示...在没有覆盖范围的行上击中了一个断点: