Я знаю, что это нарушает любые лучшие практики, которые требуют/предполагают правильную упаковку кода производства 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
Как указано в разделе сборка тестовой настройки:
Вы можете легко проинструктировать
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")