Sobes.tech
Middle
50

Kas ir fixture pytest? Kāds ir tāds scope? Vai var izsaukt fixture no citas fixture? Kas ir autouse? Vai var nodot parametrus fixture?

Uzņēmumi, kur jautāja
IT1

Atbilde no AI

sobes.tech AI

В pytest фикстура — это функция, которая подготавливает тестовое окружение или данные, необходимые для тестов. Она может создавать объекты, настраивать состояние, выполнять подготовительные действия и освобождать ресурсы после теста.

Область видимости (scope) фикстуры определяет, как часто она вызывается:

  • function (по умолчанию) — фикстура вызывается для каждого теста.
  • class — фикстура вызывается один раз на класс тестов.
  • module — один раз на модуль (файл с тестами).
  • package — один раз на пакет.
  • session — один раз за всю сессию запуска тестов.

Да, фикстуру можно вызвать из другой фикстуры, просто указав её имя в параметрах функции. Это позволяет строить цепочки зависимостей.

Параметр autouse=True в декораторе @pytest.fixture означает, что фикстура будет автоматически применяться ко всем тестам в области видимости, без явного указания в параметрах теста.

В pytest можно передавать параметры в фикстуру через параметризацию с помощью @pytest.mark.parametrize или используя request.param в самой фикстуре при параметризации. Это позволяет запускать тесты с разными наборами данных.

Пример фикстуры с параметризацией и вызовом другой фикстуры:

import pytest

@pytest.fixture(scope='module')
def db_connection():
    conn = create_db_connection()
    yield conn
    conn.close()

@pytest.fixture(params=["user1", "user2"])
def user(db_connection, request):
    return db_connection.get_user(request.param)

def test_user_access(user):
    assert user.has_access()

Здесь user зависит от db_connection, а сама user параметризована по разным значениям.