robotframework-自动化测试-实例7(接口API测试)

前情介绍:
接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务,目前公司里大部分的接口都是RESTful,还有一些webservice接口。现在大家也越来越多的关注接口测试了,因为有时候可能界面上的功能还没有实现,我们可以先一步对接口进行验证,提早发现一些和预期不一致的错误。做接口测试的工具很多,本质上是基于协议的测试,而最常见的接口测试基本是基于于http协议中的GET和POST请求。
在上一个列子中,我们已经了解到基于RF的协议测试库我们首推requests和requestsLibrary,所以在这个接口API测试中我们也选取requestsLibrary库。

练习环境配置
实例1(UI自动化-百度搜索)
实例2(有效登录)
实例3(无效登录)
实例4 (Appium)
实例5 (连接mysql数据库)
实例6 (GET/POST请求)
Appium Error总结
robotframework Error总结

测试需求:
测试被测系统中的两个接口(一个为GET,一个为POST)

robotframework-自动化测试-实例7(接口API测试)_第1张图片
get.png

robotframework-自动化测试-实例7(接口API测试)_第2张图片
post.png

测试设计:
测试接口的思路主要是针对于不同的输入参数是否有对应的正确返回值的一个检查。

robotframework-自动化测试-实例7(接口API测试)_第3张图片
Paste_Image.png

此例中我们仅实现输入参数合法的GET接口和输入参数不合法的POST接口作为示例。剩下的以此类推了。

此例中的GET接口输入参数需要为eid或者name,我们先选取已有的eid=1的数据作为输入,正常返回值为status 200,message:success

get返回.png

返回的是一个json数据。

POST接口需要的输入参数较多,从不合法角度出发,可以考虑只输入一个参数的情况下,返回值应该为status 10021,message:parameter error

测试实现
1 . 导入必须的库requestsLibrary和Collections
2 . 先Create Session创建一个连接到服务器的host,然后通过Get Request发起请求,请求的返回是个Request对象${r},所以在这里的变量是个对象,而对象的属性值的有${r.status_code}和${r.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值了。
3 .将 Dictionary中的值取出和预期值进行对比。
脚本如图所示:

robotframework-自动化测试-实例7(接口API测试)_第4张图片
get.png

4.如果要测试的是post的接口,也很方便。同理可得先Create Session创建一个连接到服务器的host,然后通过Post Request发起请求,请求的返回是个Request对象${r},所以在这里的变量是个对象,而对象的属性值的有${r.status_code}和${r.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值后做断言。
脚本如图所示:

robotframework-自动化测试-实例7(接口API测试)_第5张图片
post.png

在这里主要是添加了在headers里面的Content-Type=application/x-www-form-urlencoded,这是最常见的post提交数据的方式,其它方式在之后的案例中会介绍。

CC先生说:接口测试维护成本比起UI测试来说要低一些,在接口定义稳定的情况下变更不多,就算变更也能很快进行修改。所以推荐大家在考虑自动化策略的时候将接口自动化测试优先做起来,一定要在上线前跑接口自动化回归测试,某些时候能够避免一些接口变更导致的问题。

参考:
post requests的官方的帮助文档:

Source:
RequestsLibrary 
Arguments:
[ alias | uri | data=None | params=None | headers=None | files=None | allow_redirects=None | timeout=None ]
Send a POST request on the session object found using the given `alias` 
alias that will be used to identify the Session object in the cache 
uri to send the POST request to 
data a dictionary of key-value pairs that will be urlencoded and sent as POST data or binary data that is sent as the raw body content or passed as such for multipart form data if files is also defined 
params url parameters to append to the uri 
headers a dictionary of headers to use with the request 
files a dictionary of file names containing file data to POST to the server 
allow_redirects Boolean. Set to True if POST/PUT/DELETE redirect following is allowed. 
timeout connection timeout

中文:

Post requests关键字的用法:
第一个格子为返回的response对象,可以赋值给一个变量
第二个格子为post requests关键字
第三个格子之后为可以带的参数 [ alias | uri | data=None | params=None | headers=None | files=None | allow_redirects=None | timeout=None ](如果不写的情况下自动留空)
alias:将用于标识缓存中的Session对象的别名,也就是上面create session时建的别名
uri:发送GET请求到的地址,可带参数
data:数据,格式为一个键值对的字典将作为POST数据或作为原始主体内容发送的二进制数据或作为多部分表单数据传递的POST数据或二进制数据发送,也可以用作multipart的数据的文件来发送
params:发送的消息体中的参数(也为字典对象)
heards:报文头,方便修改,比如content-Type (为字典对象)
file:传送到server上的文件的名称
allow_redirects:允许重定向的布尔值。 如果POST / PUT / DELETE重定向以下是允许的,请设置为True。
timeout:设置的超时时间

你可能感兴趣的:(robotframework-自动化测试-实例7(接口API测试))