Кто нибудь может поделиться примерами своих #backend тестов? Нужны именно сами тесты, а не обвязки вокруг #pytest или других библиотек. Интересуюсь исключительно с эстетической точки зрения так сказать Стал раздражать текущий вид своих тестов и хочется посмотреть как пишут тесты другие люди.
P.S.: c #web все гораздо проще, там оборачивается все в #page-object и в принципе не вызывает проблем в наведении читаемости и красоты в тестах
Извините, нельзя нам делиться.
Но вместо PageObject можно обернуть в BDD-style сценарии.
Или, если не нравится BDD, то сделать что-то похожее, но в коде.
Тот же подход, что для PageObject: всё взаимодействие на уровне HTTP-клиента (ну, или какой там еще протокол), все алгоритмические ухищрения оформляем в виде логически завершенных методов-шагов и расбрасываем их по классам в зависимости от тематики.
На верхнем уровне - только вызов шагов, коротко и читабельно.
Решил попробовать #bdd подход. Наткнулся на pytest-bdd. В принципе либа меня устроила, но я не понял пока что как передавать контекст между when и then. Межу given и then без проблем передается. Кто нибудь пробовал pytest-bdd?
С описания pytest-bdd я понял, что он полезен для тестов где не большое кол-во шагов (макс. до 10), вот у меня например по 20-30 есть, и что на отдельный шаг свой метод писать?
Если честно, не подскажу ) Уже изменил свой выбор в сторону behave, т.к. есть какая никакая поддержка в PyCharm’е и достаточно просто передавать контекст между кейвордами given, when и then, да и возможностей у behave вроде по более.
Ну может быть как разберусь лучше. Пока, честно признаюсь, я в этом еще нуб полный. Раньше #bdd не использовал, и сейчас приходится немного перестраивать мышление в построении тестов под этот стиль. Самая главная проблема в для меня #bdd, это отсутствие грамотных тест-дизайнеров или аналитиков которые будут писать features, по этому приходится их писать самому.
Да, на это могу сказать что “вероятность крайне мала!” для наличия такой команды http://lukomore.org/w/images/d/d0/Kraine_mala.jpg
Ну и я сам не всегда сразу делаю на 100% готовый feature к использованию, иногда приходится его менять, т.к. реализация некоторых моментов может вставлять палки в колеса )