Size: a a a

testing_in_python

2020 August 03

T

Tishka17 in testing_in_python
Evgenii B
само собой это способ изоляции, просто тесты написаны с хардкодом и получается говно
Ну вот пример, где не харкод
источник

EB

Evgenii B in testing_in_python
Boris Krutskih
Ну как с хардкодом)))
то что тесты каждый запуск не ищут новую свободную запись, это разве хардкод?
если они всегда будут писать Вася Пупкин в кач-ве юзера, то да, хардкод
источник

EB

Evgenii B in testing_in_python
если у тебя на любую сущность есть рандомизатор, который не мешает тестовой гипотезе ( не релевантен в текущем тесте), тогда нет, не хардкод
источник

T

Tishka17 in testing_in_python
Пытаться в тестовых данных предусмотреть какие ещё возможны данные и делать сложную генерацию - вот это уже антипаттерн
источник

T

Tishka17 in testing_in_python
Попытаться изолировать данные простым способом - окей, но не всегда это сработает
источник

T

Tishka17 in testing_in_python
Evgenii B
если у тебя на любую сущность есть рандомизатор, который не мешает тестовой гипотезе ( не релевантен в текущем тесте), тогда нет, не хардкод
Изолируй без очистки два теста:
1. Авторизация когда нет ни одного юзера в базе
2. Авторизация когда есть юзер
источник

EB

Evgenii B in testing_in_python
Tishka17
Пытаться в тестовых данных предусмотреть какие ещё возможны данные и делать сложную генерацию - вот это уже антипаттерн
define "сложная генерация"?
предусматривать что? обычно через орм можно попросить настолько абстрактные тестовые данные, насколько они нужны, им не обязательно быть детальными, те атрибуты котоыре не уточнены, будут просто рандомными
источник

EB

Evgenii B in testing_in_python
Tishka17
Изолируй без очистки два теста:
1. Авторизация когда нет ни одного юзера в базе
2. Авторизация когда есть юзер
"нет ни одного юзера в базе" - прям вообще ни одного? или нет "такого же юзера в базе"?
источник

T

Tishka17 in testing_in_python
Evgenii B
"нет ни одного юзера в базе" - прям вообще ни одного? или нет "такого же юзера в базе"?
Для разъяснения: когда вообще нет юзеров может быть запущен мастер первоначальной настройки с предложением создать первого админа
источник

T

Tishka17 in testing_in_python
Просто первое что в голову пришло из простых кейсов
источник

EB

Evgenii B in testing_in_python
ну ок, для этого теста очевидно база нужна пустая, и для каких-то проектов которые работают с локальными клиентскими базами это актуально
источник

EB

Evgenii B in testing_in_python
в общем если подытожить я бы так сформулировал:

1) если накладно удалять данные часто, делай удаление реже (в конце тестов)
2) если нельзя делать один раз, потому что между тестами есть общее состояние / не могут работать параллельно, вводи изоляцию не через чистку базы, а через уникальные тестовые данные, изолированные в рамках нужных тебе сущностей
3) если все же принято решение чистки базы и это долго, возможно чистить ее можно менее аккуратно, например через truncate и без сохранения бинлога базы
источник
2020 August 04

ИС

Игорь Середа... in testing_in_python
Ещё не предлагали запускать тесты на in-memory storage? Каждая ORM имеет такой адаптер, пробросить его в тестовом окружении место вашей реляционной базки не составит труда. По завершении тестов она сама вайпнется.
источник

T

Tishka17 in testing_in_python
Игорь Середа
Ещё не предлагали запускать тесты на in-memory storage? Каждая ORM имеет такой адаптер, пробросить его в тестовом окружении место вашей реляционной базки не составит труда. По завершении тестов она сама вайпнется.
Как сделать in-memory storage для постгреса?
источник

ИС

Игорь Середа... in testing_in_python
Tishka17
Как сделать in-memory storage для постгреса?
Неверная интерпретация идеи. Адаптер сделать нужно не для постгреса, а вместо. Адаптеры к разным БД в ORM обычно имеют один интерфейс на инфраструктурном уровне, и должны быть взаимазаменяемы. Тестам должно быть всё равно, куда они данные складывают, если у них одинаково отрабатывают методы репозитория, условные save() и get_by_id().
источник

СС

Сказочный Сникерс... in testing_in_python
Пример проекта (UI + API) + Allure + CI
https://habr.com/ru/post/513432/

Добавил в пин
источник

E

Egor in testing_in_python
Допустим у меня есть около 70 разных таблиц и с каждой я хочу прогнать тест, а тестов таких несколько. Лучшей практикой будет заряжать их в parametrize и получить в итоге over9999+ тест кейсов или в коде теста циклом проходить по всем и получить один тест?
источник

T

Tishka17 in testing_in_python
Они же разные, значит и тесты будут разные
источник

E

Egor in testing_in_python
Спасибо,  тоже к этому склоняюсь
источник

T

Tishka17 in testing_in_python
Egor
Спасибо,  тоже к этому склоняюсь
Эм. В вопросе у тебя были одинаковые
источник