LINUX.ORG.RU

Python функциональные тесты

 ,


2

1

Ем кактус Использую unittest.

Можно по пунктам, чем сферический whatever в вакууме мог бы оказаться лучше.

Список юзекейсов:

  • Много тест-кейсов
  • Большинство тестов используют очень похожее, отличающееся лишь в небольших деталях окружение
  • Все тесты используют самописное pexpect/socket обертки/подпорки для набора бинарей
  • Тесты логически делятся на группы, которые в свою очередь, могут содержать подгруппы
  • Тесты содержат инфо о документе/таске в которой они описанны, в случае падения эта инфа выводится как минимум в stderr

При использовании unittest, у меня остается стойкое впечатление, что как то это всё можно было сделать повеселее, особенно на скриптоте типа питона.

Исчу замену, пока тестов не много, и сиё моё можно прибить в зародыше.

★★★★★
Ответ на: комментарий от MKuznetsov

Хелоуворлд скорее main.cpp. И он как бэ стабилен, но таки кейсов реально дохрена.

Ну на лоре я другого первого ответа и не ожидал.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Ну даже он концептуально показался милее стандартной хрени.

Однако хотелось бы услышать про киллер фичи, инсайдерскую инфу. Типа что бы было чем аргументировать манагеру, кроме «как то оно не удобно нифига выходит».

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Плюсую pytest. Ничего круче для питона пока не придумали.

Kilte ★★★★★
()
Ответ на: комментарий от pon4ik

fixtures — самая главная киллер фича, ради которой стоит переходить, я считаю.

В стандартном unittest ЕМНИП, нельзя просканировать пакет и запустить тесты, нужно писать свой костыль. В либах типа nose и pytest это из коробки и даже настраивается. Ещё есть куча всяких плюшек вроде drop into pdb при фейле, отправка лога на pastebin, запуск конкретной группы тестов, параметризация (запуск одного и того же теста с разным набором данных).

А ещё ничто не мешает использовать pytest вместе с unittest.

Kilte ★★★★★
()
Последнее исправление: Kilte (всего исправлений: 1)
Ответ на: комментарий от Kilte

фикстуры есть и в unittest. Хотя в pytest, как они оформленны, мне тоже показалось интереснее, особенно то, что их можно подмешивать в тест в отличии от unittest.

Ок, крутые фикстуры и параметризованные запуски, это уже что то, спасибо.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от Siado

Код - не на питоне. Тесты функциональные, для высокоуровневых требований.

Кейсы типа: если 5 клиентов кинули на сеть 100 мессаг в определённом порядке, 3ех из них надо отрубить и написать в лог что они сволочи, а остальным двум послать ещё 100 мессаг.

Было бы круто вообще какое нибудь bdd прикрутить, но чет я пока не уверен что осилю и убедю кого то ещё осилить. Плюс там не фига не рест или вебморды поэтому придётся много велосипедить и докручивать скорее всего.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от Kilte

Понятно что rtfm и надо пробовать, но таки спрошу.

Можно ли в py.test/nose запросить выполнить тесты из двух подпапок/пакетов?

Можно ли делать составные запросы уровня хотя бы - запустить «это_вел*колепие» и не пускать «это_г*в?о;и_это_*_тоже»?

Можно ли тестам давать теги(что бы потом указать их в запросе на запуск)? Можно ли строить запрос по запуску тестов на основе используемых ими фикстур?

Можно ли добавить для кейса, а лучше теста хуман ридабл многострочное описание, которое выводилось бы в лог при падении теста?

Ну и да, понятно, что можно таки всё, и к unittest это прикрутить, чем я итеративно и успешно промышляю, вопрос в том - насколько это сложно:)

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

Типа что бы было чем аргументировать манагеру, кроме «как то оно не удобно нифига выходит».

Так может стоит плясать от этого? Определить чёткий список требований и решить, что лучше: писать свой велосипед или взять nose/pytest.

А то фреймворк ради фреймворка получается, как по мне.

Kilte ★★★★★
()
Ответ на: комментарий от pon4ik

Таки RTFM.

http://pytest.org/latest/example/markers.html

Можно ли добавить для кейса, а лучше теста хуман ридабл многострочное описание, которое выводилось бы в лог при падении теста?

В nose это работает и так. Вообще это фича unittest, если не ошибаюсь. А вот pytest плевал на всё это и выводит как ему хочется. Но ничто не мешает найти/написать плагин.

Kilte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.