要复制:
docker-compose run --rm --entrypoint='pipenv run coverage run […]' [service-name]
在其自己的容器中测试每个服务。coverage combine first-service/.coverage second-service/.coverage
组合结果。coverage report
,或更糟糕的是运行coverage html
。这些最后的命令找不到源文件,因为.coverage文件与每个容器内源文件的绝对路径一起保存,与主机不匹配。
在这种情况下,有没有办法使覆盖率报告起作用?如果可能,以下任何一种方法都将很有用:
paths
的设置,它可以将/ src / app从一个.coverage映射到service1目录,将/ src / app从另一个.coverage映射到service2。非解决方案:
答案 0 :(得分:0)
诀窍是每个服务使用单独的paths
声明:
.coveragerc-service1:
[paths]
source =
service1
/src/app
.coveragerc-service2:
[paths]
source =
service2
/src/app
这需要两个coverage combine
调用:
coverage combine --append --rcfile=.coveragerc-service1 service1/.coverage
coverage combine --append --rcfile=.coveragerc-service2 service2/.coverage
({rm .coverage
首先启用重新运行。)