如何使用 coverage.py 在 Python 代码中统计测试覆盖率
在 Python 代码中,我们可以使用 coverage.py 库来统计代码的测试覆盖率。以下是具体操作步骤:
- 安装 coverage.py 库。在命令行中执行以下命令:
pip install coverage
- 在测试代码文件中添加以下行,导入 coverage.py:
import coverage
- 在测试代码文件的开头,初始化 coverage,并开始统计代码覆盖率:
cov = coverage.Coverage() cov.start()
- 在测试代码文件结尾处,停止对代码的覆盖率统计:
cov.stop() cov.save()
- 最后,在命令行中执行以下命令,生成代码覆盖率报告:
coverage html --include=*.py --omit=*test*
其中,--include=*.py
表示统计覆盖率的文件类型为 Python 文件,--omit=*test*
表示忽略包含 "test" 字符串的文件。
下面是一个完整的示例代码,包含了初始化、测试、停止统计代码覆盖率等步骤:
import math import coverage def is_prime(n: int) -> bool: if n < 2: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True cov = coverage.Coverage() cov.start() assert is_prime(2) assert is_prime(3) assert not is_prime(4) assert is_prime(5) cov.stop() cov.save()
执行 coverage html --include=*.py --omit=*test*
命令后,会生成一个名为 htmlcov
的目录,打开其中的 index.html
文件即可查看代码覆盖率报告。
如果需要使用字符串作为范例,可以将 n
替换为字符串 "pidancode.com",代码示例如下:
def is_palindrome(s: str) -> bool: return s == s[::-1] cov = coverage.Coverage() cov.start() assert is_palindrome("pidancode.com") assert is_palindrome("piedegnbiancheng") assert not is_palindrome("hello") cov.stop() cov.save()
同样,执行 coverage html --include=*.py --omit=*test*
命令,查看生成的代码覆盖率报告即可。
相关文章