背景:上周我接到一个任务,该测试任务包含一个webservice接口,需要做接口测试,但是我没接触过webservice接口。
分析:看了接口文档,该接口比较简单,根据自我感觉判断,这个接口测试应该比较简单,我只需要选择好用什么工具去测试,那我的初步想法是要么用jmeter要么就用python直接写。
决定:最近我有用python写点儿简单的小工具,我也有意锻炼自己的python编程能力;然后网上搜了一下用python做webservice接口测试,发现很简单,几句python代码即可解决,好,那就用python来完成这个接口测试吧。
结果:可以批量执行用例,有效率,发现了bug,特记录下第一次用python做webservice接口测试的整个过程。
第一步:安装模块
需要安装的模块有:client、suds、suds-jurko。我是直接用pip工具安装的。命令如下:(注意:如果安装suds前没有安装client,会报错: No module named 'client')
pip install client
pip install suds
pip install suds-jurko
第二步:编写程序
为了测试执行的效率,我考虑的实现过程是:先将所有接口测试数据维护在excel中,然后读取excel数据,拼接成我需要的json串,然后批量执行这些接口数据,最后再将结果回写到excel中,最后直接看excel的结果与预期结果是否一致即可。(设计excel时加了一列,用来手动设置该条用例是否执行,便于回归时执行部分用例)
1.用pandas读取excel,根据接口参数进行处理excel数据,存储为字典(注:我这里是根据我的项目来做的)
2.将字典数据转换成json串
3.请求接口并调用接口方法
4.解析并回写结果(没有做)
程序代码如下图,需要注意的是,在接口地址后面一定得加上?wsdl,否则无法调用接口方法,可自己尝试加不加?wsdl的差异:
打印的cli结果如下,可以看到该接口下的方法有哪些:
再附上我的testcases.xlsx的样板,可根据自己需求进行设计;其中【执行】列的内容为是/否,当进行回归测试时不是所有用例都要再执行一遍,直接将这列置为否,只执行为是的用例: