Покрытие Python, выполняющее тесты локально на том же сервисе в докере - PullRequest
0 голосов
/ 11 октября 2018

У меня есть сервисный код на python.Для функциональных тестов я запускаю локальные тесты для того же сервиса, встроенного в Docker-контейнер, потому что я хочу протестировать вызов API REST или сообщение 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

Очевидно, охватне работает, потому что код в образе докера является кодом, скопированным из локального.

Есть ли способ получить покрытие в этой ситуации?

Спасибо!

РЕДАКТИРОВАТЬ: Я имею в виду, я не понимаюпокрытие из функциональных тестов, потому что код, который выполняется из-за тестов, не является локальным кодом, в котором я выполняю команды покрытия и pytest.Функциональные тесты знают, что они должны атаковать образ докера, который я создал.Итак, что касается покрытия, вы запускаете тесты для сторонней службы, потому что она не может знать, какой код выполняется.

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

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

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете запустить свои тесты и отчет о покрытии в контейнере Docker с помощью docker-compose run:

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

Это запустит ваш отчет о покрытии в контейнере Docker для my_service

...