ВНИМАНИЕ: Не удалось сгенерировать отчет: нет данных для сообщения об ошибке в python с использованием модуля pytest - PullRequest
2 голосов
/ 20 марта 2020

Sample.py code:

def sum(num1, num2):
    return num1 + num2


def sum_only_positive(num1, num2):
    if num1 > 0 and num2 > 0:
        return num1 + num2
    else:
        return None

test_sample.py code

from . import sample

import pytest

def test_sum():
    assert sample.sum(5, 5) == 10

def test_sum_positive_ok():
    assert sample.sum_only_positive(2, 2) == 4

def test_sum_positive_fail():
    assert sample.sum_only_positive(-1, 2) is None

Команда покрытия: pytest test_sample.py --cov=sample.py

Ошибка:

platform linux -- Python 3.5.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: /home/apathapa/unit_test/warriorframework_py3
plugins: cov-2.8.1
collected 3 items                                                                                                                            

test_sample.py ...                                                                                                                     [100%]Coverage.py warning: Module sample.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
WARNING: Failed to generate report: No data to report.

/home/apathapa/ut/lib/python3.5/site-packages/pytest_cov/plugin.py:254: PytestWarning: Failed to generate report: No data to report.

  self.cov_controller.finish()


----------- coverage: platform linux, python 3.5.2-final-0 -----------
Name    Stmts   Miss  Cover
---------------------------


============================================================= 3 passed in 0.13s ==============================================================

Может кто-нибудь помочь мне, как устранить эту ошибку?

1 Ответ

1 голос
/ 20 марта 2020

--cov принимает имена каталогов или пакетов, а не отдельные файлы. Это означает, что --cov=sample.py ищет пакет (каталог) с именем sample, а внутри него - модуль (файл) с именем py.py для записи покрытия и дает сбой. Либо используйте

$ pytest --cov=sample

или

$ pytest --cov=.
...