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
Coverage command : pytest test_sample.py --cov=sample.py
Error:
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 ==============================================================
Can anyone help me how to resolve this error?
--cov
accepts either directories or package names, not single files. This means that --cov=sample.py
looks for a package (directory) named sample
and inside it, a module (file) named py.py
to record coverage, and fails. Either use
$ pytest --cov=sample
or
$ pytest --cov=.