Erlang YAWS: как протестировать простой веб-сервис REST?

В простом приложении RESTful на основе Erlang YAWS я хотел бы иметь набор тестов, которые отправляют HTTP-запросы в RESTful API, получают ответы от сервера и затем проверяют эти ответы.

Было бы неплохо, если бы каждый тест "отправить-запрос-получить-запрос-тест" можно было запустить из EUnit (что позволило бы использовать генераторы тестов).

Я также хотел бы иметь возможность запускать этот набор тестов с помощью rebar (make test).

Недавно я использовал ibrowse в другом приложении (Mochiweb), но нашел его тихим громоздкий в использовании.

Существуют ли какие-либо другие варианты написания тестов Erlang/OTP, которые могут отправлять HTTP-запросы в приложение YAWS RESTful? Каков наиболее распространенный способ сделать это?


person skanatek    schedule 21.08.2012    source источник


Ответы (3)


Пробовали ли вы etest и особенно https://github.com/johannesh/etest_http?

person Tilman    schedule 21.08.2012

Я использую common_test с ibrowse для тестирования сервисов на основе REST.

  1. Это часть дистрибутива erlang.
  2. Вы можете вызвать тесты из арматуры
  3. Вы можете настроить свои тесты, чтобы запускать их параллельно, последовательности ....

Взгляните на эту презентацию: http://www.erlang-factory.com/upload/presentations/275/CommonTestPresentation.pdf

person Ulf    schedule 22.08.2012

person    schedule
comment
Мне не нужно тестировать массовые нагрузки системы с большим количеством запросов. Будет ли ibrowse достаточно для запуска с той же машины? - person skanatek; 22.08.2012
comment
И если я использую ibrowse, как мне включить его в набор EUnit моего приложения OTP? Должен ли я поместить приложение ibrowse в каталог deps/ и вызвать ibrowse:send_req() из моих тестов EUnit? - person skanatek; 22.08.2012
comment
Я с удовольствием отмету ваш ответ как принятый, если вы обновите его информацией о том, как правильно встроить ibrowse в приложение Erlang. - person skanatek; 22.08.2012
comment
Музаая Джошуа, спасибо! Я поместил каталог ibrowse в каталог deps/ моего приложения Mochiweb. Тесты, включающие использование некоторого кода C, хранящегося в ebin/, дают ошибку, потому что они не могут найти двоичные файлы C (двоичные файлы C находятся в ebin/, но файлы ibrowse beam находятся в deps/ibrowse/ebin). И что вы имели в виду, говоря, что библиотека ibrowse находится в библиотеке erlang, ... что ее ebin находится в пути кода? (извините за такой нубский вопрос) - person skanatek; 02.09.2012
comment
да. Укажите его в пути кода, как mnesia и stdlib. это ebin должно быть в erlang lib. - person Muzaaya Joshua; 03.09.2012