在派生的进程周围运行Python Coverage集合

时间:2019-07-15 00:28:03

标签: python python-3.x multiprocessing fork coverage.py

我有一个正在Docker容器中运行的Python应用程序。该应用程序通常以命令/usr/local/bin/foo_service启动,该命令是Python的入口点(因此,它只是一个Python文件)。

我想在对此应用程序进行功能测试时收集该应用程序的代码覆盖率。我发现coverage run /usr/local/bin/foo_service可以很好地工作,并且一旦应用程序退出,就会输出一个覆盖文件,其报告看上去准确无误。

但是,这是在单进程模式下。该应用程序具有另一种模式,该模式使用multiprocessing模块来派生两个或更多子进程。我不确定这是否与我调用coverage的方式兼容。我做了coverage run --parallel-mode /usr/local/bin/foo_service -f 4,它没有输出[一个]覆盖率[文件]而没有忽略任何错误,但是我不知道这是正确的。我一半期望它可以按流程输出覆盖文件,但是我不知道它应该这样做。在文档中找不到该主题的报道。

这项工作有效吗?还是我需要放弃使用coverage二进制文件,而是在派生代码中使用coverage Python API?

$ python --version
Python 3.7.4
$ coverage --version
Coverage.py, version 4.5.3 with C extension

0 个答案:

没有答案