Комбинация pytest и покрытия не работает

Я установил плагин для pytest отсюда: http: //pypi.python.org/pypi/pytest-cov. Тогда у меня есть простой тестовый код:

pytest.py:

class TestNumbers:
    def test_int_float(self):
        assert 1 == 1.0

    def test_int_str(self):
        assert 1 == 1

Я попытался проверить это с помощью команды: 'py.test --cov-report term --cov pytest.py'. Но не работает. Даже если бы я указал полный путь к pytest.py, данных для сбора все равно не было. Однако, если я использую py.test pytest.py, конечно, он проверил Ok.

Я очень запутался в этой проблеме, спасибо за помощь.


person user1067671    schedule 29.11.2012    source источник
comment
используйте имя файла с префиксом test_, но ни в коем случае не используйте pytest.py, который затеняет фактический модуль pytest.   -  person hpk42    schedule 30.11.2012


Ответы (1)


Пытаться:

py.test --cov-report term --cov=. test.py

Параметр --cov принимает аргумент, указывающий, какие пути нужно покрыть. В вашем примере --cov будет потреблять test.py, но тогда для py.test не осталось аргументов о том, какие файлы тестировать.

ОБНОВЛЕНИЕ: как указывает @ hpk42, вам нужно назвать свой пример чем-то другим, кроме pytest.py. Когда я делал это локально, я вместо этого называл его test.py.

person John Szakmeister    schedule 29.11.2012
comment
Если pytest.py является пользовательским модулем, он не будет работать. Он затеняет фактический py.test (потому что вы импортируете pytest для импорта помощников / вещей). - person hpk42; 30.11.2012
comment
Whups ... это должно было быть test.py в моем примере. Вы, конечно, абсолютно правы. py.test хотя бы выводит достойное сообщение об ошибке, информирующее вас об этой проблеме. - person John Szakmeister; 30.11.2012
comment
Большое спасибо. Проблема в том, что в качестве имени файла используется pytest.py. После замены все тесты прошли ОК. Ваш ответ правильный. Команда должна быть py.test --cov-report term --cov =. test.py - person user1067671; 01.12.2012
comment
Если кому-то интересно, как получить данные о покрытии из тестов (мой коллега подумал, что это не поддерживается) - $ py.test --doctest-modules . --cov-report term --cov=. или $ py.test --doctest-modules mymodule --cov-report term --cov=mymodule - person driftcatcher; 16.12.2015