一、定义
接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务
分类:RESTful、webservice接口
二、安装
进入C:Pyhon27scripts
先要安装requests,再安装requestsLibrary
安装requests:pip install requests,官方下载地址:https://pypi.python.org/pypi/requests
安装requestsLibrary:pip install robotframework-requests,官方下载地址:https://pypi.python.org/pypi/robotframework-requests/
在testsuit中导入RequestsLibrary requests和selenium2Library(注意大小写),若没有报错(报错为红色显示),则安装成功
三、requestsLibrary关键字
关键字 | 备注 |
Create Session |
创建一个HTTP会话: alias, url, headers={}, cookies=None, auth=None, timeout=None, proxies=None, verify=False url:即服务器的url alias:使用Robot Framework的别名表示当前会话。 header:使用默认的headers字段 auth:NTLM鉴权需用username&password格式 timeout:会话超时时长 proxies:代理服务器的url verify:如果需要证书请求则置为true |
Create Ntlm Session |
创建一个HTTP会话: alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False url:即服务器的url alias:使用Robot Framework的别名表示当前会话。 header:使用默认的headers字段 auth:NTLM鉴权需用[‘domain’,’username’,’password’]格式 timeout:会话超时时长 proxies:代理服务器的url verify:如果需要证书请求则置为true |
Delete | 弃用,查看delete request |
Delete All Sessions | 删除全部的会话 |
Delete Request |
alias, uri, data=(), headers=None, allow_redirects=None 使用别名删除会话 Alias:需要删除的会话的别名 |
Get | 弃用:使用Get Request |
Get Request |
根据提供的别名查找会话并在会话中发送GET请求 alias, uri, headers=None, params={}, allow_redirects=None |
Head | 弃用:使用Head Request |
Head Request |
根据提供的别名查找会话并在会话中发送HEAD请求 alias, uri, headers=None, allow_redirects=None |
Options | 弃用:使用Options Request |
Options Request |
根据提供的别名查找会话并在会话中发送Options请求 alias, uri, headers=None, allow_redirects=None |
Post |
弃用:使用Post Request |
Post Request |
根据提供的别名查找会话并在会话中发送POST请求 alias, uri, data={}, headers=None, files={}, allow_redirects=None |
To Json | 将文本转换成json对象 |
四、Restful api测试案例一
Create Session | api | http://api.jisuapi.com | 创建一个连接到服务的host | |
${addr} | Get Request | api | /driverexam/query | 发送一个get请求附上api+路径,返回结果到对象addr |
Should Be Equal As Strings | ${addr.status_code} | 200 | 返回结果的状态码是否为200 | |
Log | ${addr.content} | 日志打印返回结果的内容 | ||
Log | ${addr.json()} | 日志打印返回结果的json格式 | ||
${responsedata} | To Json | ${addr.content} | 返回结果转化成json格式赋值给变量responsedata | |
${keys} | Get Dictionary Keys | ${responsedata} |
Get Dictionary Keys关键字需要导入Collections库 取出json串的keys |
|
${items} | Get Dictionary Items | ${responsedata} | 取出json串的items | |
${values} | Get Dictionary Values | ${responsedata} | 取出json串的values | |
${str} | Get From Dictionary | ${responsedata} | status | 从json串中获取的值是否有status |
${addr} | 第二段测试 | |||
Should Be Equal As Strings | ... | |||
Log | ... | |||
${responsedata} | ... | |||
${keys} | ... | |||
${items} | ... | |||
${values} | ... | |||
${str} | ... | |||
Delete All Sessions | 删除所有sessions |
接口情况
测试log
二、返回XML格式的,通常Web Service都是返回一个xml格式的内容
#xml方式 | ||||
Create Session | api | http://localhost:8000 | 创建一个连接到服务器的host | |
${dict} | Create Dictionary | accept=application/xml | 在Request的essay-header里加上一个accept=application/xml | |
${addr} | Get Request | api | /hello/qitao | 发送一个get请求附上api+路径,返回结果到对象addr |
Comment | Should Be Equal As Strings | ${addr.status_code} | 200 | 备注 |
Log | ${addr.content} | 打印对象内容 | ||
${responsedata} | Set Variable | ${addr.content} | 设置变量,结果对象内容赋值给responsedata | |
${body} | Get Element Text | ${responsedata} | hello |
XML库的关键字Get Element Text来获取xml的hello节点的文本 此时变量hello中的内容为qitao |
${hello} | Get Element | ${responsedata} | hello | 用Get Element获取到一个Element对象${hello} |
Log | ${hello.text} | 对象${hello}的属性值,qitao | ||
${responsedata} | Add Element | ${responsedata} | <new id="3">test</new> |
XML库的关键字新增Element <new id="3">test</new> |
${new} | Get Element Attribute | ${responsedata} | id | 取值新增element的id值赋给new变量 |
Log | ${new} | 打印new变量的值 | ||
${a} | Element To String | ${responsedata} | <response><hello>qitao</hello><new id="3">test</new></response> | |
Delete All Sessions |
接口情况
三、有用户名和密码的情况下
四、Post请求方式
例子二
第5行也可以这么写
五、其他方式
第1行:获取cookie
第2行:创建一个请求header信息(可以根据自己的情况添加所需的值,类似于jmeter的头文件,不一定是必须的)
第3行:创建session。【注】:这里的api是指alias,即对当前创建的HTTP会话指定的别名。在get request时,可识别session。
第4行:发起请求。返回对象${addr}
第5行:判断请求响应是否为200:200就继续执行用例,否就失败终止
第7行:转成json串格式
第8行:获取json中的count值
第9行:获取json中的data值
第12行:判断count值是否与“预期值:7”一致。一致则通过。
备注:
返回值为编码格式,想变成中文,将参数${data}变为@{data}。
post数据
${data} set Variable { "version": "1.0"}
${uri} set variable /xxxx/xxxx/query
${dict} create Dictionary Host=xxx Content-Type=application/json
create session query http://api.xxxx.com ${dict}
${response} post request query ${uri} ${data} headers=${dict}
${res} To Json ${response.content}
log ${res["result_msg"]}
请求数据设置成变量${data}
${uri} 参数设置
构造请求头字典${dict} 创建一个query session
${response} 接收请求变量
${response.content} 转成json 对象
打印请求结果中的内容
资料地址:
http://blog.sina.com.cn/s/blog_7447a0160102wi53.html
http://blog.csdn.net/jasonliujintao/article/details/69524559