在做完基于http协议的接口测试之后,开始弄soap协议了,之前有过开发java webservice自动化框架的经验,所以我想着应该并不会很难。对于webservice的简介,服务器端和客户端的开发的简单例子前面的随笔有分享过,就不再次重复。然后在网上随便搜了下,似乎RobotFrameWork并没有提供基于soap协议的库,于是自己用python做了个简单的模块。 服务器端是用java开发的,实际上提供了wsdl文件,跟什么语言开发的不会影响客户端的调用。用python做soap的客户端,用到的是suds库,首先当然是安装suds了,执行pip install suds或者到http://pypi./pypi/suds下载压缩包,安装成功后,可以在官网上搜索它的相关文档介绍https:///suds/wiki/Documentation,然后可以开心的进行客户端开发了。
# -*- coding: cp936 -*- 运行后,结果如下: 第一个红框内返回的是可以远程调用的所有方法,第二个红框是具体一个接口测试后返回的数据 介于是做demo演示,于是就只做了一个py文件进行调用,就做一个关键字吧。然后关键字的参数就是url,远程调用的方法,方法内的参数。而且方法名传递进来后,如果放在.的后面(ws.service.getkeyCode),ws.service.method是无效的,method已经不当字符串处理了,只能当函数名处理(js支持,一般语言都不支持),于是需要自己做个简单的映射,写完如下:
# -*- coding: cp936 -*- from suds.client import Client def webService(url,test_method,rootuname,pwd_md5,keyCode): client = Client(url) dic_metode={'getkeyCode':client.service.getkeyCode} method_test = dic_metode.get(test_method) return method_test(rootuname, pwd_md5, keyCode) 这个就可以直接在RF内导入,做一个接口的测试了(暂时只能证明可行,易用性是欠缺,但相比java之前写的代码,已经简洁了无数倍,java的稍晚复杂点,嘿嘿),在RF内导入XML(内置库)就可以对返回的标准xml数据进行解析,测试脚本和运行结果如下所示:
|
|
来自: 小猪窝969 > 《robot framework》