Ответ
Для тестирования SOAP API я в основном использовал SoapUI и Python с библиотекой Zeep.
SoapUI был основным инструментом для регрессионного и нагрузочного тестирования старых корпоративных сервисов. Его сильные стороны:
- Автогенерация скелета тестов из WSDL.
- Удобные assertions для проверки XML-ответов (XPath, XQuery).
- Возможность создания сложных сценариев с передачей данных между шагами (Property Transfer).
- Нагрузочное тестирование в SoapUI Pro.
Python + Zeep использовал для интеграционного тестирования в CI-конвейере и для более гибких проверок.
from zeep import Client, Settings
import pytest
# Настройка клиента с таймаутами
settings = Settings(strict=False, xml_huge_tree=True)
client = Client('http://example.com/Service?wsdl', settings=settings)
# Тест вызова метода
@pytest.mark.api
def test_soap_get_user():
response = client.service.GetUser(userId=123)
# Проверка структуры и значений ответа
assert response.User.Name == "Иван Иванов"
assert response.User.Active is True
# Проверка с помощью XPath, если нужно
# ...
# Проверка SOAP Fault
with pytest.raises(Exception) as exc_info:
client.service.GetUser(userId=-1)
assert "Invalid userId" in str(exc_info.value)
Также для простых проверок иногда использовал Postman, вручную формируя SOAP-конверт в теле запроса, но это менее удобно.