> For the complete documentation index, see [llms.txt](https://appsecurity.gitbook.io/devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://appsecurity.gitbook.io/devops/ppc/ppc-langs/backend/python/testing/pytest-cli.md).

# Pytest CLI

## Install

```
pip install pytest pytest-asyncio
pytest --help
```

## Usage

Ниже приведен краткий обзор соглашений об именах, чтобы ваш тестовый код можно было обнаружить с помощью pytest:

* Тестовые файлы должны быть названы `test_<something>.py` или `<something>_test.py`.
* Методы и функции тестирования должны быть названы `test_<something>`.
* Тестовые классы должны быть названы `Test<Something>`.

```
pytest       # search into a current directory all functions started from 'test_' or ended with '_test'
pytest path/to/test_1.py path/to/test_2.py 
pytest path/to/test_1.py::test_constructor       # Run the 'test_asdict' function only

```

Запустить только один тест:

```
pytest path/to/test_1.py::test_function
pytest path/to/test_1.py::TestClass::test_method
```

Вывести информацию о тестах

```
-v — подробно
-q — кратко
```

Другие ключи посмотреть можно в статье на habr или `pytest --help`.

## Пример структуры файлов для тестов

```
/tests
   /func            — Functional tests
   /unit            — Unit-tests
   pytest.ini       — (optional) настройки pytest
   conftest.py      — Hook functions and fixtures
```

*Hook functions* являются способом вставки кода в часть процесса выполнения pytest для изменения работы pytest. *Fixtures* — функции, которые будут вызваны до и после выполнения теста (например, для подключения к ресурсу и отключению от него).
