Как вернуть несколько значений из фикстуры pytest с scope = session

Я создал pytest fixture в conftest.py для создания пользователя и автоматического входа

@pytest.fixture(scope="session")
def api_client():
   from rest_framework.test import APIClient
   return APIClient()

@pytest.fixture(scope="session")
@pytest.mark.django_db
def create_user():
    def make_user(**kwargs):
        # employee = e_ge_employee.objects.create()
        kwargs['password'] = 'strong-test-pass'
        if 'username' not in kwargs:
            kwargs['username'] = 'test-user'
        # if 'employee' not in kwargs:
        #     kwargs['employee'] = employee
        return e_ge_user.objects.create_user(**kwargs)
    return make_user

@pytest.fixture(scope="session")
@pytest.mark.django_db
def auto_login_user(api_client, create_user):
    def make_auto_login():
        print("_+==--=-=-=-===--=-=-==----=-=-=-=")
        user = create_user()
        api_client.login(username=user.username, password='strong-test-pass')
        return api_client, user
    return make_auto_login

Теперь о том, как вызвать метод get, post с помощью клиента API и как получить доступ к пользователю в нескольких тестовых случаях, написанных в test_views.p

@pytest.mark.django_db
class TestViews:

    def test_generate_token_views_post(self,auto_login_user):
        **"To be Answered"**
        assert True == True

    def test_generate_token_views_post2(self,auto_login_user):
        **"To be Answered"**
        assert True == True

Вы можете вызвать make_auto_login() в fixture, это выполнит функцию и вернет api_client и user. После этого в тестах auto_login_user будет кортеж со значениями

conftest.py:

@pytest.fixture(scope="session")
@pytest.mark.django_db
def auto_login_user(api_client, create_user):
    def make_auto_login():
        print("_+==--=-=-=-===--=-=-==----=-=-=-=")
        user = create_user()
        api_client.login(username=user.username, password='strong-test-pass')
        return api_client, user
    return make_auto_login()

test_views.py

class TestViews:

    def test_generate_token_views_post(self, auto_login_user):
        api_client, user = auto_login_user
        assert True

    def test_generate_token_views_post2(self, auto_login_user):
        api_client, user = auto_login_user
        assert True
Вернуться на верх