本篇使用roboot framework编写简单的接口测试用例。
接口文档
下面分别是get类型和post类型的接口:
接口1(这是一个会议信息查询接口):
请求参数:
eid --会议id
name --会议名称
返回值:
{
"data": {
"start_time":"2020-05-23T14:00:00",
"name":"发布会1",
"address":"北京"
}
"message":"success",
"status":200
}
接口2(这是一个参加会议人员签到接口):
请求参数:
eid --会议id
name --签到人员手机号
返回值:
{
"message":"sign success",
"status":200
}
接口测试用例
下面分别针对上面的2个接口编写一个简单测试用例,内容如下:
*** Settings ***Library RequestsLibrary
Library Collections*** Test Cases ***test_interface_get
${payload}= Create Dictionary eid=1Create Session event http://127.0.0.1:8000/api
${r}= Get Request event /get_event_list params=${payload}
Should Be Equal As Strings ${r.status_code}200log ${r.json()}
${dict} Set variable ${r.json()}
#断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} success
${sta} Get From Dictionary ${dict} status
${status} Evaluateint(200)
Should Be Equal ${sta} ${status}
test_interface_post
Create Session sign http://127.0.0.1:8000/api
${headers} Create Dictionary Content-Type=application/x-www-form-urlencoded
${payload}= Create Dictionary eid=11 phone=13111111111${r} Post Request sign/user_sign/ data=${payload} headers=${headers}
Should Be Equal As Strings ${r.status_code}200log ${r.json()}
${dict} Set variable ${r.josn()}
# 断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} sign success
${sta} Get From Dictionary ${dict} status
${status} Evaluateint(200)
Should Be Equal ${sta} ${status}
简单分析
首先,引用RequestsLibrary和Collections库。RequestsLibrary就是安装robotframework-requests,提供接口操作相关的关键字。Collections库是用来操作字典的,因为接口返回的数据是json格式,必须转化成字典才能进行断言。
先看下test_interface_get用例的前3行:
${payload}= Create Dictionary eid=1Create Session event http://127.0.0.1:8000/api
${r}= Get Request event /get_event_list params=${payload}
通过Create Dictionary关键字定义字典变量${payload},字典有一个键值eid=1,该字典将会作为接口的参数。
Create Session关键字用来创建一个http会话服务器,通过event指定http://127.0.0.1:8000/api为该会话的基础URL。
Get Request关键字用来发起一个Get请求,接口URL=event+/get_event_list/,接口参数为${payload},最后将接口返回数据赋值给变量${r}
Should Be Equal As Strings ${r.status_code} 200log ${r.json()}
通过${r.status_code}可以得到请求的HTTP状态码,通过Should Be Equal As Strings关键字判断其是否为200。
通过${r.json()}可以将json格式的数据转化为字典,并通过log关键字打印。
${dict} Set variable ${r.json()}
#断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} success
${sta} Get From Dictionary ${dict} status
${status} Evaluateint(200)
Should Be Equal ${sta} ${status}
这里主要是对返回数据进行验证:
将${r.json()}通过Set variable关键字赋值给变量${dict}
c关键字由前面引入的Collections提供,可以取到字典中key对应的value,这里获取到的message对应的值给变量${msg}。
Should Be Equal关键字用于比较${msg}是否等于success
通过Get From Dictionary关键字获取status对应的值,并赋值给变量${sta}
上一步获取到的status状态码是整数类型200,但是在robot framework中直接编写的内容为字符串,所以这里借用Evauate关键字,直接调用python的方法int()。
最后比较接口返回的状态码是否等于200
第2个post接口用例是post接口,与第1个接口用例基本类似,相信大家已经可以自行分析了。