首页 > 解决方案 > 在 Docker 容器内为 Pyspark 测试用例运行测试覆盖

问题描述

我有一个带有少量单元测试用例文件的 pyspark 项目

test case files
test_testOne.py
test_testcaseTwo.py

这些测试类在 docker 容器内执行。在容器内运行测试时,我还想获得测试覆盖率报告。因此,我在 requirements.txt 文件中添加了以下行

coverage==6.0.2

在 docker 容器中,我运行以下命令

python -m coverage discover -s path/to/test/files

我得到以下输出

/opt/conda/bin/python: No module named coverage

任何人都可以帮助我通过测试覆盖率成功运行我的测试。请注意,所有测试用例都使用以下命令在容器内成功运行。但它没有生成测试覆盖率

python -m unittest discover -s path/to/test/files

标签: dockerpysparktest-coverage

解决方案


如果您使用coverage的是命令:

python -m unittest discover -s path/to/test/files

变成:

coverage run -m unittest discover -s path/to/test/files

如文档中所述:快速入门

由于您使用的是 docker,一个不错的选择是在 docker 容器内创建一个卷,当测试完成后,coverage可以生成一个报告并将其存储在您的主机上。像这样,您可以自动化整个过程并保存报告。

  • -v启动 docker 容器时使用标志创建卷(更多信息:使用卷
  • 测试后,运行coverage html -d /path/to/your/volume/inside/docker(查看文档以获取更多选项:coverage html

推荐阅读