удаляется после отработки функции (Хотя может это и не так).
# Создаём пользователя
def test_create_user():
...
def update_user():
assert User.objects.count() == 1 # Error
Или может я не должен использовать одну базу данных, для этих тестов?
Буду благодарен за ссылку на раздел в документации или объяснение.
Это правильное поведение фикстуры db/transactional_db. Чтобы иметь пользователя для его изменения в тесте нужно написать фикстуру с созданием пользователя
Благодарю. Пойду тогда знакомиться с transactional_db.
setUpTestData
Такое с функциями не будет работать, там нужен класс с TestCase
Ну пайтест умеет с тесткейсами работать, я не в курсе функции у него или классы)
Если я правильно понял, то я каждый раз в тесте, должен создавать пользователя? django_user_model.objects.create(username="someone", password="something") Примерно таким образом?
Можно написать свою фикстуру, могу скинуть через минут 20-30
Да, буду благодарен за пример.
example/tests/fixtures.py @fixture() def default_user() -> User: return User.objects.create_user( username='username', password='password', ) example/tests/functional/example_tests.py def test_user(db, default_user: User) -> None: assert User.objects.count() == 1 # any operations or assertions u wanna do conftest.py from typing import Tuple pytest_plugins: Tuple[str, ...] = ( 'example.tests.fixtures', )
Так почему-то и думал. То есть пишем fixture, которая возвращает нам пользователя, а после с ним работаем? Могу ли я также прокинуть данную fixture в другой модуль с тестами?
Yup, если они описаны в глобальном conftest.py, то можно указывать аргументом в любой тест
Спасибо большое! Очень помогли, теперь имею представление о том, что писать и как. Пойду дальше разбираться. Хорошего вам дня.
Стикер
Обсуждают сегодня