Как разделить тесты в pytest по группам или категориям?

Как можно разделить тесты для предотвращения их влияния друг на друга, используя указатели, чтобы интерпретатор мог запускать функции перед каждым тестом? Требуется сделать это без изменения всего в общем коде. Можете ли вы предоставить ссылку на релевантную документацию или дать краткое пояснение?
  • 7 мая 2024 г. 8:30
Ответы на вопрос 3
В pytest можно использовать маркировку (marking) тестов для их разделения на группы или категории. Для этого используется декоратор @pytest.mark.parametrize с указанием названия группы в качестве параметра. Например:

```python
import pytest

@pytest.mark.group1
def test_example1():
    assert 1 == 1

@pytest.mark.group2
def test_example2():
    assert 2 == 2
```

Для запуска тестов по определенной маркировке можно использовать опцию `-m` с указанием названия группы:

```
pytest -m group1
```

Чтобы создавать кастомные функции-припуски (fixtures), которые будут выполняться перед каждым тестом, можно использовать декоратор @pytest.fixture. Например, если нужно выполнить определенный код перед каждым тестом в определенной группе, можно написать:

```python
import pytest

@pytest.fixture(scope='function', autouse=True)
def setup_group1():
    print("Setup for group 1")
    yield
    print("Teardown for group 1")

@pytest.mark.group1
def test_example1():
    assert 1 == 1
```

Подробная информация о маркировке тестов и использовании припусков в pytest доступна в официальной документации: https://docs.pytest.org/en/latest/.
Используйте маркеры, и при запуске указываете, какие тесты запускать. 
В офф доке наглядный пример
В pytest принято использовать fixture, влияние настраивать через scope
Похожие вопросы