
Во время работы над проектом, вам может потребоваться заполнить storage изначальными данными, с которыми вы будете работать в каждом тесте. Это позволяет вам иметь согласованное состояние данных для всех тестов. В данной статье я поделюсь своим опытом заполнения storage и проверки работы различных endpoints.Первым шагом я заполнил storage изначальными данными, чтобы использовать их во всех тестах. Я использовал метод setUpClass для создания и заполнения storage нужными данными. Примерно так выглядит мой код⁚
python
import unittest
class MyTest(unittest.TestCase)⁚
@classmethod
def setUpClass(cls)⁚
# Создание и заполнение storage
cls.storage {‘data1’⁚ 10٫ ‘data2’⁚ 20}
def test_add_endpoint(self)⁚
# Тестирование работы endpoint /add/
# Ваш код теста
def test_calculate_endpoint(self)⁚
# Тестирование работы endpoint /calculate/
# Ваш код теста
if __name__ ‘__main__’⁚
unittest.main
Теперь, когда storage заполнен изначальными данными, я могу приступить к тестированию различных endpoints. Для этого я создал отдельные методы, каждый из которых тестирует определенный endpoint.Например, я проверял работу endpoint /add/. Для этого я использовал метод test_add_endpoint. В этом методе я отправил запрос на endpoint /add/ с определенными данными и проверил, что данные были успешно добавлены в storage. Примерно так выглядит мой код⁚
python
def test_add_endpoint(self)⁚
# Тестирование работы endpoint /add/
data {‘key’⁚ ‘data3’, ‘value’⁚ 30}
response requests.post(‘http://localhost:8000/add/’, datadata)
self.assertEqual(response.status_code, 200)
self.assertEqual(self.storage[‘data3’], 30)
Таким же образом я тестировал работу endpoint /calculate/. Я отправлял запросы на этот endpoint с определенными данными и проверял, что ответ соответствует ожидаемому результату. Например⁚
python
def test_calculate_endpoint(self)⁚
# Тестирование работы endpoint /calculate/
data {‘operation’⁚ ‘add’, ‘values’⁚ [10, 20]}
response requests.post(‘http://localhost:8000/calculate/’, datadata)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json, {‘result’⁚ 30})
Также я проводил проверку, что endpoint /add/ может принять дату только в формате YYYYMMDD. Для этого я отправлял запрос на endpoint с датой в невалидном формате и проверял, что сервер выдает ошибку. Примерно такой код примера⁚
python
def test_add_endpoint_invalid_date(self)⁚
# Тестирование работы endpoint /add/ с невалидным значением даты
data {‘key’⁚ ‘data4’, ‘value’⁚ 40, ‘date’⁚ ‘2022-01-01’}
response requests.post(‘http://localhost:8000/add/’, datadata)
self.assertNotEqual(response.status_code, 200)
Кроме того, я проверял, как работают endpoints /calculate/, если в storage ничего нет. Для этого я очищал storage перед каждым тестом. Примерно такой код примера⁚
python
def setUp(self)⁚
# Очищение storage перед каждым тестом
self.storage {}
Наконец, я использовал менеджер контекста assertRaises, чтобы проверить, порождает ли какое-либо действие исключение. Примерно так выглядит код с использованием assertRaises⁚
python
def test_calculate_endpoint_invalid_operation(self)⁚
# Тестирование работы endpoint /calculate/ с невалидной операцией
with self.assertRaises(TypeError)⁚
data {‘operation’⁚ ‘invalid_operation’, ‘values’⁚ [10٫ 20]}
requests.post(‘http://localhost:8000/calculate/’, datadata)
В данной статье я поделился своим опытом заполнения storage изначальными данными и проверки работы различных endpoints. Надеюсь, эта информация будет полезной для вас при тестировании вашего проекта.