Во время интеграционного тестирования я заметил, что на самом деле я работаю над повторяющимися сценариями использования с API-интерфейсами restful (или вообще интерфейсами HTTP), которые я проверяю здесь и там с помощью bash + cURL.
Это начинает выглядеть довольно грязно и становится все труднее поддерживать. Зачем доставлять беспорядок?
Типичные случаи использования:
- Убедитесь, что URL возвращает http код ответа, например 200
- Убедитесь, что тип контента соответствует некоторому MIME, который вам нужен в этом случае.
- Убедитесь, что возвращаемое содержимое соответствует некоторому шаблону или проходит абстрактную процедуру проверки
То, что я нашел до сих пор и считаю работоспособным вариантом, не изобретая велосипед, это:
- попробуйте PyCurl - в надежде, что он полностью реализует все опции cURL, особенно. проксирование, но и другие переключатели, которые мне могут понадобиться
- использовать встроенный в Python модуль testng
Тогда я мог бы, например, провести один модульный тест на сервис, который я хотел бы проверить:
import unittest, pycurl
class TestService (unittest.TestCase):
def test_1(self):
self.assertEqual(pycurl.returncode("some_url"), 200)
def test_2(self):
self.assertTrue(pycurl.response("some_url").matches ("xxx") )
def test_3(self):
self.assertTrue (pycurl.ContentType("some_url").equal("xxx"))
if __name__ == '__main__':
unittest.main()
Имеет ли это смысл или существует более высокоуровневый (но не слишком сложный, чтобы подобрать и интегрировать) инструмент?