В данной статье я хотел бы поделиться своим опытом работы с заполнением storage изначальными данными и проверкой работы различных endpoints. Прежде всего‚ для заполнения storage изначальными данными я использовал метод setUpClass из библиотеки unittest. Этот метод позволяет выполнить определенные действия перед запуском каждого тестового класса. В моем случае‚ я использовал его для заполнения storage начальными значениями‚ с которыми я буду работать в каждом тесте. Таким образом‚ мне не приходилось повторять одни и те же действия в каждом тестовом методе. Далее‚ я приступил к проверке работы различных endpoints. В первую очередь‚ я проверил‚ что endpoint /add/ работает корректно. Для этого я отправил POST-запрос на данный endpoint с определенными данными и проверил‚ что данные успешно добавились в storage. Затем‚ я перешел к проверке работы обоих endpoints /calculate/. Для этого я отправил GET-запросы на оба endpoints и проверил‚ что вернулись правильные результаты расчетов. После этого‚ я решил проверить‚ что endpoint /add/ может принять дату только в формате YYYYMMDD‚ а при подаче невалидного значения произойдет ошибка. Для этого я отправил POST-запрос на данный endpoint с неверным форматом даты и проверил‚ что в ответе сервера получил ошибку.
Также я решил проверить‚ как работают endpoints /calculate/‚ если в storage ничего нет. Для этого я очистил storage перед отправкой GET-запросов на оба endpoints и проверил‚ что в ответе сервера получил пустой результат.
Наконец‚ я решил проверить‚ порождает ли какое-то действие исключение при определенных условиях. Для этого я использовал менеджер контекста assertRaises‚ который позволяет проверить‚ что определенное исключение будет порождено при выполнении определенного кода. В моем случае‚ я использовал assertRaises(TypeError) для проверки наличия ошибки при некорректном использовании кода.
В результате моих тестов я удостоверился‚ что заполнение storage изначальными данными работает корректно‚ все endpoints функционируют правильно и реагируют на разные ситуации соответствующим образом. Я также использовал метод setUpClass для более эффективного и удобного выполнения повторяющихся действий перед каждым тестом. Не забудьте использовать setUpClass!