zoukankan      html  css  js  c++  java
  • RF-RequestsLibrary

    一、定义

    接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务

    分类: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

  • 相关阅读:
    sb#run():
    aop编程,自定义注解参数和方法范围
    vue 工程化
    mybatis SqlSession
    java传时间
    树的同构
    串的模式匹配
    堆栈模拟队列
    银行业务队列简单模拟
    一元多项式的乘法与加法运算
  • 原文地址:https://www.cnblogs.com/zz27zz/p/7347273.html
Copyright © 2011-2022 走看看