Как вернуть несколько значений из фикстуры 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