Я пытаюсь протестировать сервисы soap 1.2 с помощью RobotFramework. До сих пор мы тестировали только сервисы soap 1.1 с использованием библиотеки suds для RobotFramework, и suds не совместим с soap 1.2.
Обратная совместимость — это вариант для новых сервисов, но было бы лучше иметь более долгосрочное решение. Я не опытный программист, но могу править код, если скажут, что и где править.
Что происходит в тесте, который у нас есть для служб мыла 1.2, использующих suds, так это: suds не может интерпретировать ответ, который он получает от веб-службы, и выдает эту ошибку: SAXParseException: :159:229: несоответствующий тег
С мыльным сообщением все в порядке, нет проблем с его использованием в SoapUI.
Я нашел несколько фрагментов в Интернете, которые предполагают, что я могу заставить библиотеку suds работать с мылом 1.2 для моих тестов RobotFramework. Но у меня мало опыта программирования, и я понятия не имею, как включить эти фрагменты в suds. Кто-то прокомментировал этот фрагмент, что это решило его проблему с RobotFramework и suds.
Есть ли кто-нибудь, готовый объяснить, как я могу заставить это работать? Кажется, я не могу понять это самостоятельно. Любые предложения будут ценны.
from suds.client import Client
from suds.bindings import binding
import logging
USERNAME = 'username'
PASSWORD = 'password'
# Just for debugging purposes.
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
# Telnic's SOAP server expects a SOAP 1.2 envelope, not a SOAP 1.1 envelope
# and will complain if this hack isn't done.
binding.envns = ('SOAP-ENV', 'http://www.w3.org/2003/05/soap-envelope')
client = Client('client.wsdl',
username=USERNAME,
password=PASSWORD,
headers={'Content-Type': 'application/soap+xml'})
# This will now work just fine.
client.service.someRandomMethod()
фрагмент из: https://gist.github.com/kgaughan/858851