Python覆盖范围针对Docker中的同一服务在本地运行测试

时间:2018-10-11 07:55:11

标签: python docker code-coverage

我在python中有一个服务代码。对于功能测试,我针对docker容器中内置的同一服务在本地运行测试,因为我想测试REST API调用或Rabbitmq消息等。

第1步。

$ docker-compose.yml

  third_party_service_1:
  ...

  third_party_service_2:
  ...


  my_service:
    build:
      context: .
  ...

第2步。

$ docker-compose up --build -d

第3步。

$ coverage run -m pytest tests/functional

很显然,此覆盖范围无效,因为docker映像中的代码是从本地复制的代码。

在这种情况下有没有办法收集承保范围?

谢谢!

编辑: 我的意思是,我没有从功能测试中获得覆盖,因为由于测试而运行的代码不是运行coverage和pytest命令的本地代码。功能测试知道它们必须攻击我构建的docker映像。因此,就本文而言,这就像您要针对第三方服务启动测试一样,因为它无法知道执行了哪些代码。

---------------------
|    LOCAL          |
| my_service code   |
|                   |
| I run:            |
| $ coverage run... |
---------------------

---------------------
|    DOCKER         |
| my_service code   |
|  (up&running)     |
---------------------

1 个答案:

答案 0 :(得分:0)

您可以使用docker-compose run在docker容器中运行测试和覆盖率报告:

docker-compose run my_service coverage run -m pytest tests/functional

这将在my_service

的docker容器中运行您的覆盖率报告