Как запустить тесты, которые находятся в том же файле, что и рабочий код с pytest?

1

Я знаю, что это нарушает любые лучшие практики, которые требуют/предполагают правильную упаковку кода производства Python: в некоторых случаях может оказаться полезным определить производственный и тестовый код в том же файле (например, в случае простых скриптов). Как я могу запустить все или конкретные тесты в файле с помощью pytest?

EDIT - решение для моего конкретного случая использования:

файловая структура в <root>:

pytest.ini
scrip_with_tests.py

содержание pytest.ini:

[pytest]
python_files = script_with_tests.py

содержимое script_with_tests.py:

import pytest  # this is not required, works without as well

def test_always_pass():
    pass

if __name__ == "__main__":
    main()

вызов pytest в <root>:

pytest script_with_tests.py
Теги:
testing
pytest

1 ответ

2
Лучший ответ

Как указано в разделе сборка тестовой настройки:

Вы можете легко проинструктировать pytest обнаружить тесты из каждого файла Python:

# content of pytest.ini
[pytest]
python_files = *.py

Однако у многих проектов будет setup.py который они не хотят импортировать. Кроме того, файлы могут быть импортированы только с помощью конкретной версии python. В таких случаях вы можете динамически определять файлы, которые нужно игнорировать, перечисляя их в файле conftest.py:

# content of conftest.py
import sys

collect_ignore = ["setup.py"]
if sys.version_info[0] > 2:
   collect_ignore.append("pkg/module_py2.py")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню