Cover.py с многопроцессорностью работает только с unittest, но не с pytest?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Cover.py с многопроцессорностью работает только с unittest, но не с pytest?

Сообщение Anonymous »

Я пытаюсь отслеживать охват тестирования кода Python с помощью файла Cover.py. Некоторые тесты порождают подпроцессы с использованием многопроцессорности, поэтому, следуя документации по покрытию.py, я использую файл конфигурации с:

Код: Выделить всё

[run]
parallel=true
concurrency=multiprocessing
Давайте рассмотрим следующий фрагмент в качестве минимального примера тестирования:

Код: Выделить всё

import logging
import unittest
import multiprocessing

def some_func():
logging.info('this is')
logging.info('just a test')

class TestSomefunc(unittest.TestCase):
def test_reporting(self):
rf = multiprocessing.Process(target=some_func)
rf.start()
rf.join()

Теперь запуск этого с запуском покрытия -m unittest test_coverage.py && комбинация покрытия && отчет о покрытии дает ожидаемые результаты, т.е. все строки файла покрыты.

Код: Выделить всё

.
----------------------------------------------------------------------
Ran 1 test in 0.014s

OK
Combined data file .coverage.k.26272.XjRmpvHx
Combined data file .coverage.k.26274.XLxuiHUx
Name                           Stmts   Miss  Cover
--------------------------------------------------
__init__.py                        0      0   100%
test_coverage.py                  11      0   100%
--------------------------------------------------
TOTAL                             11      0   100%
Теперь давайте возьмем по существу тот же код, как если бы это был pytest вместо unittest:

Код: Выделить всё

import logging
import multiprocessing

def some_func():
logging.info('this is')
logging.info('just a test')

def test_reporting():
rf = multiprocessing.Process(target=some_func)
rf.start()
rf.join()

выполнение покрытия run -m pytest test_coverage_pytest.py && комбинация покрытия && отчет о покрытии не учитывает строки, затронутые подпроцессом:

Код: Выделить всё

Combined data file .coverage.k.26411.XWRtKBux
Name                                                             Stmts   Miss  Cover
------------------------------------------------------------------------------------
__init__.py                                                          0      0   100%
test_coverage_pytest.py                                              9      2    78%
------------------------------------------------------------------------------------
TOTAL                                                                9      2      %
в этом случае Coverage.py создает только один файл покрытия, в отличие от выполнения unittest, который создает файлы из обоих процессов.
Итак, мой Тогда вопрос: что я делаю неправильно, чтобы не получить ожидаемых результатов с помощью pytest. Есть ли другая конфигурация, которую необходимо установить? Нужно ли вызывать запуск покрытия по-другому? Кажется, я просто не могу заставить его работать, любая помощь очень ценится.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ith-pytest
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • @pytest.mark.skip против @pytest.mark.xfail в Pytest
    Anonymous » » в форуме Python
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • @pytest.mark.skip против @pytest.mark.xfail в Pytest
    Anonymous » » в форуме Python
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • @pytest.mark.skip vs @pytest.mark.xfail в pytest
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Избегайте ошибок во время выполнения, вызванных многопроцессорностью в Windows
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Разница между многопроцессорностью, асинхронностью, многопоточностью и concurrency.futures в Python
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»