Тестирование REST API с базой данных - PullRequest
11 голосов
/ 07 сентября 2011

Я хочу знать лучшие / разные способы тестирования REST API, который использует базу данных. Я разработал свой API с помощью Flask на Python и хочу использовать unittest или nose.

Но моя проблема в том, что для некоторых ресурсов в первую очередь требуется другой ресурс. Есть ли способ сказать, что для проверки создания поста в блоге требуется, чтобы еще один тест с участием автора был успешным?

Ответы [ 2 ]

8 голосов
/ 09 сентября 2011

Существует два стандартных подхода к тесту, которые зависят от чего-то еще (объект, вызов функции и т. Д.).

  • Вы можете использовать mocks вместо объектов, от которых зависит тестируемый код.
  • Вы можете загрузить прибор или выполнить создание / вызов в настройках теста.

Некоторым людям нравятся «классические» модульные тесты, в которых тестируется только «единица» кода. В этих случаях вы обычно используете макеты и заглушки для замены зависимостей.

Другие, например, более интегрированные тесты, в которых тестируется большая часть или весь стек вызовов. В этих случаях вы используете прибор или, возможно, даже делаете вызовы / создания в функции настройки.

Как правило, вы бы не сделали бы один тест зависимым от другого. Все тесты должны:

  • убирать за собой
  • может работать в изоляции
  • может быть запущен как часть набора
  • быть последовательным и повторяемым

Если вы сделаете один тест зависимым от другого, он не сможет выполняться изолированно, и вы также навязываете порядок выполнения тестов. Обеспечение порядка в тестах не является хорошим, на самом деле многие считают, что вы должны рандомизировать порядок, в котором выполняются ваши тесты.

2 голосов
/ 07 сентября 2011

Модульный тест должен работать в изолированном режиме, поэтому вы должны изолировать ваши зависимые ресурсы, и это делается с помощью изоляции фреймворка (mocking framework). Общие платформы для устаревших систем Windows: DevMagicFake , MOQ , Rhino Mocks , TypeMock .

DevMagicFake позволит вам подделать БД, поэтому вам не нужно будет создавать БД или даже какой-либо код для сохранения ваших данных, потому что он сохраняет ваши данные в памяти и вы можете получить их в любое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...