最近工作需要进行接口测试,所以学习用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进行比对

就说这么多吧





Logo

更多推荐