最近工作需要进行接口测试,所以学习用robot做接口测试。 下面讲一下get方式接口,如下图接口
可以看到数据有5W多条,我只取了其中两条做下讲解
首先我们需要连接数据库,测试的思想“通过数据库查询结果和接口返回的结果进行比对”
第一步:连接数据库 可通过mysql方式连接,或通过odbc方式连接数据库(odbc对中文支持较好) 脚本如下
注释: 1. 连接数据库,我是将连接当做变量了(具体链接方式可查看我的链接数据库博客) 2. 获取数据库总条数。因为总条数过多,我SQL里面取了100条好调试 4. 查询具体字段结果,查询结果如下图样式 [(xxxx,yyyy,zzzz,wwww,mmmm,nnnn),(aaaa,bbbb,cccc,dddd,eeee,ffff),...]
运行结果如下:
说明查询成功了
第二步:获取接口返回
脚本如下
运行一次,运行结果如下:
注释: 9. 连接服务器(${link}是接口url的前半段。类似https://baidu.com这样) 10. 发送请求,将结果保存到变量${status_result}中 13. 如上图运行结果中的${response_json}样式(其实就是开始的第一张图返回的那样,只是展示方式不同) 15. get_dictionary_keys获取字典的键值,保存到变量中(方便调试) 17. 获取list中第二层list的Campaigns所有dict (主要比对的就是这里的数据了) 19. 获取Campaigns这个list内部字典中的值
至此请求返回结果就发送完成了,Campaigns的dict值都存在了${count_value}中
然后就可以开始用“数据库查询结果” 和 “接口返回结果”进行比对了,需要循环比对,由于代码量太大,这里只 介绍一下比对思想 1.查询数据库 2.发送请求获取接口返回并取出dict值保存在变了中 3.将查询结果转为list,循环取出查询结果中的元素
后续代码大概是这个思想 - : FOR ${num} IN RANGE ${count_row} #${count_row}使用数据库的条数
- \ ${list_search} Convert_To_List ${Search_result[${num}]} #循环取值并转化为list类型
- \ ${list_response} Get_Dictionary_Values ${count_value[${num}]}
- \ ${status_list} Run_keyword_and_return_status Lists_Should_Be_Equal ${list_search} ${list_response}
复制代码中间省略了很多字符类型转换,字符串处理,list元素修改......处理方式,对比完成后如果 有不相同的list可逐一将每个元素取出进行二次比对, 然后用唯一可识别的字段将结果追加到list或者写入文件都可以。。。
以上对比完了Campaigns后,还需要对totalcount和status进行比对
|