使用 unittest 和 pytest 包编写的测试的单元测试覆盖率报告
Unit test coverage report for tests written using unittest and pytest package
在我目前做的项目中,我身边很少有同事是用unittest包写过单元测试的,也有一些是用pytest包写的。当我在 CI 管道中进行 运行 单元测试时,我会调用所有单元测试。但是,我们现在还需要获得整体代码覆盖包。因此,我通过添加覆盖率更新了单元测试调用脚本(请参阅下面的脚本片段)。但是,我看到当我 运行 在脚本下面时,我得到 coverage run -a -m pytest -v -m unittests
(下面第 7 行)的覆盖率输出,而不是之前的测试 运行 。但是,如果我删除行 coverage run -a -m pytest -v -m unittests
(下面的第 7 行),我会得到以前单元测试的输出。
#!/bin/bash
set -xe
coverage run -m unittest test_a.py
coverage run -a -m unittest test_b.py
coverage run -a -m unittest test_c.py
...
cd process/tests/
coverage run -a -m pytest -v -m unittests
coverage report -m --omit=*/venv/*
覆盖率仅报告 coverage run -a -m pytest -v -m unittests
的输出,忽略了之前的 运行 单元测试。
请问如何获得上述场景中所有单元测试的单一报告?
使用 combine 命令解决问题:
https://coverage.readthedocs.io/en/latest/cmd.html#cmd-combine
在我目前做的项目中,我身边很少有同事是用unittest包写过单元测试的,也有一些是用pytest包写的。当我在 CI 管道中进行 运行 单元测试时,我会调用所有单元测试。但是,我们现在还需要获得整体代码覆盖包。因此,我通过添加覆盖率更新了单元测试调用脚本(请参阅下面的脚本片段)。但是,我看到当我 运行 在脚本下面时,我得到 coverage run -a -m pytest -v -m unittests
(下面第 7 行)的覆盖率输出,而不是之前的测试 运行 。但是,如果我删除行 coverage run -a -m pytest -v -m unittests
(下面的第 7 行),我会得到以前单元测试的输出。
#!/bin/bash
set -xe
coverage run -m unittest test_a.py
coverage run -a -m unittest test_b.py
coverage run -a -m unittest test_c.py
...
cd process/tests/
coverage run -a -m pytest -v -m unittests
coverage report -m --omit=*/venv/*
覆盖率仅报告 coverage run -a -m pytest -v -m unittests
的输出,忽略了之前的 运行 单元测试。
请问如何获得上述场景中所有单元测试的单一报告?
使用 combine 命令解决问题:
https://coverage.readthedocs.io/en/latest/cmd.html#cmd-combine