Size: a a a

2019 October 16

AG

Alexander Gorokhov in rannts
Недавно внезапно узнал что в пайтесте можно импортить тесты. Тобишь в файле test_foo.py пишешь
from common_tests import test_foo, test_bar
from data_tests import *

И пайтест нормально все понимает
источник

БС

Байт Словович in rannts
и зачем?
источник

AG

Alexander Gorokhov in rannts
Параметризация в нашем кейсе неудобна.
источник

AG

Alexander Gorokhov in rannts
А так получается, по модулю на бизнес юнит, в модуле переопределяются фикстуры на получение данных и специфичную конфигурацию, и импортятся универсальные тесты.
Причем не во всех бу подходят все тесты, поэтому можно импортить только часть или не импортить вообще
источник

AG

Alexander Gorokhov in rannts
Плюс есть unittest-style кейсы которые параметризацию не поддерживают вообще...
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
С юнит тестами тут надо аккуратнее. Если ты импортируешь базовый класс с тестами, что бы унаследоваться от него и что-то переопределить и добавить, то в результате получишь двойной запуск базовых тестов. Один раз они запустятся в своём модуле, второй раз в том куда ты их импортировал. Решение простое - импортировать не класс, а модль. Или переименовывать в импорте класс через as что бы в нём не было слова Test, на которое агрится pytest
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
unittest-style по моему тоже можно параметризовать, через параметризацию метода setup() (или любого другого, который объявить фикстурой с autouse=True). Надо просто параметры эти сохранять внутри этих методов как свойства экземпляра класса и потом обращаться к ним из тестов.
источник

SZ

Sergey Z in rannts
только обнаружили что генератор питоньего кода для OpenAPI порождет эксепшен на всё что не 2ХХ.
сколько под это дело уже говна в тестах тестировщики нагенерили...
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Sergey Z
только обнаружили что генератор питоньего кода для OpenAPI порождет эксепшен на всё что не 2ХХ.
сколько под это дело уже говна в тестах тестировщики нагенерили...
Это наверное потому, что OpenAPI должно возвращать словарик (или объект) с результатом, который вернуло API. А если API вернуло ошибку - то ничего другого, как райзить исключение, не получится. Это с простым requests, можно было всегда тупо возвращать response, а там пусть сами тестировщики и программеры разбираются что делать с ним.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Можно ещё конечно заюзать "монады", но это пока ещё не мейнстрим в питоне
источник

SZ

Sergey Z in rannts
так у меня спека есть, и в ней есть понятная схема респонса для 404 ответа, я вполне ожидаю такого исхода, он нормален.
но генератор кода считает это исключением
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А что он должен вернуть для 404-ого ответа, если в обычной ситуации он возвращает словарик с ресурсом?
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Возвращать из функции объекты разного типа в зависимости от "не понятной" внутренней логики - это не очень хорошо.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
В принципе для 404 можно вернуть None - тут как бы есть место для манёвра
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А вот для остальных ошибок такое уже не прокатит
источник

SZ

Sergey Z in rannts
у меня не совпадают понятия "ожидаемый и описаный в схеме ответ" и "исключение".
какое ж оно исключение, если я его жду
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Брр, схема в OpenAPI что ли описывает тест-кейсы? Почему она должна чего-то ожидать?
источник

SZ

Sergey Z in rannts
схема только описывает, а ожидает генерённый на основе схемы код.
в схеме есть описание формата ответа для 200 кода и для 404 кода.
и вот генератор питоньего кода по умолчанию считает что всё что не 2ХХ то исключение.
но это странная логика, ведь я же 404 ответ в схеме описал, какое ж он исключение.

не знаю как объяснить понятнее :(
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Так а что оно возвращает в случае 200-ого кода? Объект класса OkResult, у которого есть поле body со словариком, который вынули из JSON-ки? Или сразу словарик?
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Как ты сам сможешь понять по результату что у тебя случился 404? Навешивать if-чики с проверкой соответствия результата ожидаемой схеме?
источник