Основы pytest.Запуск тестов в каталоге - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю простой новый проект с новым virtualenv.requirements.txt просто имеет pytest и все.

.
├── requirements.txt
└── tests
    ├── __init__.py
    └── sample_tests.py

sample_tests.py:

import pytest

@pytest.mark.unit
def test_a():
    assert 1 + 1 == 2

Если я запускаю pytest с именем файла теста python, он работает нормально:

vex --path ~/.virtualenvs/pytestdemo pytest tests/sample_tests.py 

Однако ни один из следующих вызовов не работает.Все они не видят тест и вывод collected 0 items и no tests ran:

vex --path ~/.virtualenvs/pytestdemo pytest tests
vex --path ~/.virtualenvs/pytestdemo pytest tests/
vex --path ~/.virtualenvs/pytestdemo pytest

vex --path ~/.virtualenvs/pytestdemo python -m pytest tests
vex --path ~/.virtualenvs/pytestdemo python -m pytest tests/
vex --path ~/.virtualenvs/pytestdemo python -m pytest

В этом простом сценарии у меня есть только один тестовый файл и один тест, но в моем реальном приложении у меня многотесты, и я хочу простой вызов для запуска всех из них.Я сузил свой сценарий до этого очень простого изолированного примера и хотел бы, чтобы сработал очень простой тестовый вызов.

Я пролистал документы и руководства по началу работы.Я пытался использовать (и не использовать) пользовательский pytest.ini.Очевидно, я попытался вызвать как pytest, так и python -m pytest.

1 Ответ

0 голосов
/ 25 апреля 2019

По умолчанию pytest обнаруживает тесты только в файлах с именами test_*.py или *_test.py из документов . Вот почему он находит тесты в вашем файле, когда вы напрямую передаете имя файла в качестве аргумента:

vex --path ~/.virtualenvs/pytestdemo pytest tests/sample_tests.py 

И не находит их в других вызовах. Итак, ваши варианты:

  1. Измените имя файла, чтобы оно соответствовало одному из шаблонов сбора по умолчанию.
  2. Изменить стандартное тестовое обнаружение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...