python处理webservice
webservice是什么
具体是个什么不用说那么多,一言蔽之就是:
WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据
在测试中往往只是需要我们请求webservice的接口,在常规的http接口中python直接用Requests库就能解决,但是webservice没办法用Requests来请求。
怎么用python请求webservice
python请求webservice有三个常用库分别是
- suds
- suds-jurko
- zeep
suds、suds-jurko、zeep有什么区别
-
suds是python2 的库,python3安装大概率报错
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
-
suds-jurko 为了解决suds的报错,有个老哥叫jurko整了个分支,这个是百度上文章最多的,也是教程最多的。但是这个分支有个大问题这个分支这个老哥老早就不维护了
这就引出另外一个问题有一些情况下会报错suds.transport.TransportError: HTTP Error 500
这个问题不是100%因为suds-jurko引起的,但是我遇到了,换了zeep就解决了。 -
zeep 是个很新的库,实际用下来感觉跟suds差不多吧,有一些地方不同
基础使用差别不大,可以使用python -mzeep http//url/wsdl
直接列出可用的服务和方法来个官方的例子
python -mzeep http://www.soapclient.com/xml/soapresponder.wsdl
>>
Bindings:
Soap11Binding: {http://www.SoapClient.com/xml/SoapResponder.wsdl}SoapResponderBinding
Service: SoapResponder
Port: SoapResponderPortType (Soap11Binding: {http://www.SoapClient.com/xml/SoapResponder.wsdl}SoapResponderBinding)
Operations:
Method1(bstrParam1: xsd:string, bstrParam2: xsd:string) -> bstrReturn: xsd:string
拿到这个后面就很简单了呗跟suds一样的用法
结论
在实际使用中其实suds-jurko的教程和文章最多,因为suds只支持python2,zeep比较新。所以可以先研究会了suds-jurko再去研究zeep,毕竟没人维护的东西,不知道什么时候就用不了了。所以
测试人员使用: 可以用suds-jurko,做做测试还是没问题的。
测试开发人员: 去看看Zeep的官方文档吧。