Подтвердить что ты не робот

Тестирование REST API с базой данных базы данных

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

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

4b9b3361

Ответ 1

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

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

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

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

Обычно вы не заставляете один тест зависеть от другого. Все тесты должны:

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

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

Ответ 2

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

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