pytest和codecov:找不到覆盖率报告

时间:2019-10-31 00:09:58

标签: python unit-testing code-coverage pytest travis-ci

我已经基于切饼器模板创建了全新的Python repository。一切看起来都还不错,所以我现在尝试使用travis和codecov设置测试范围。我是pytest的新手,但我正在尝试做正确的事情。在互联网上浏览后,我完成了以下设置:

.travis.yml中,我添加了以下内容:

install: 
  - pip install -U tox-travis
  - pip install coverage
  - pip install codecov

script:
    - python setup.py install
    - tox
    - coverage run tests/test_foo.py

在我的tox.ini文件中:

[testenv]
passenv = CI TRAVIS TRAVIS_*
setenv =
    PYTHONPATH = {toxinidir}
    PIPENV_IGNORE_VIRTUALENVS=1
deps =
    pipenv
    codecov
    pytest
    {py27}: pathlib2
commands_pre = 
    pipenv install --dev --skip-lock
    codecov

我创建了一个最小的tests/test_foo.py文件,其中包含以下内容(foo()是软件包中当前存在的唯一功能)。

import pytest
import doctest
import neurokit2 as nk

if __name__ == '__main__':
    doctest.testmod()
    pytest.main()

def test_foo():
    assert nk.foo() == 4

我有似乎travis触发的codecov没有通过测试。此外,在travis上,它说Error: No coverage report found?我想知道我做错了什么吗?

2 个答案:

答案 0 :(得分:2)

1)在项目目录中创建pytest.ini文件,并添加以下行

[pytest]
testpaths = tests
python_files = *.py
python_functions = test_*

2)在项目目录中创建.coveragerc文件,并添加以下行

[report]
fail_under = 90
show_missing = True

3)pytest进行代码覆盖

pytest --verbose --color=yes --cov=Name of directory for which you need code coverage --assert=plain

注意:您需要代码覆盖的目录的名称必须在项目目录内

答案 1 :(得分:1)

好像您在安装中缺少coverage。您已经在脚本上安装了它,但是它可能没有运行。尝试在您的travis.yml文件中添加pip install coverage。也可以尝试一下:codecov