Может ли pytest запускать тесты в тестовом классе? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть куча тестов, которые я решил поместить в класс, пример кода ниже:

class IntegrationTests:

    @pytest.mark.integrationtest
    @pytest.mark.asyncio
    async def test_job(self):
        assert await do_stuff()

Однако, когда я пытаюсь запустить тесты: pipenv run pytest -v -m integrationtest, они не обнаруживаютсявообще, где я получил следующее, прежде чем переместить их в класс:

5 passed, 4 deselected in 0.78 seconds

Теперь я получаю это:

2 passed, 4 deselected in 0.51 seconds

Почему pytest не обнаруживает эти тесты?Тестовые классы не поддерживаются?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Создать pytest.ini

Из документов :

В случае, если вам нужно изменить соглашение об именах для тестовых файлов, классов и тестов,Вы можете создать файл pytest.ini и установить параметры python_files, python_classes и python_functions:

Пример:

# content of pytest.ini
# Example 1: have pytest look for "check" instead of "test"
# can also be defined in tox.ini or setup.cfg file, although the section
# name in setup.cfg files should be "tool:pytest"
[pytest]
python_files = check_*.py
python_classes = *Tests
python_functions = *_check

В вашем случаеесли вы не хотите изменять имя класса IntegrationTests, установите python_classes на *Tests.

Запуск тестов внутри класса

pytest /path/to/test_file_name.py::ClassName

Запуск тестов внутрикласс

pytest /path/to/test_file_name.py::ClassName::test_name
0 голосов
/ 24 октября 2018

Имя класса должно начинаться с Test, чтобы обнаружение pytest могло его найти.

class TestIntegration:

    @pytest.mark.integrationtest
    @pytest.mark.asyncio
    async def test_job(self):
        assert await do_stuff()

См. Условные обозначения для обнаружения теста Python

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