zoukankan      html  css  js  c++  java
  • robotframework接口自动化

     

    robot framework框架在测试接口上比soapUI好用的多,在此介绍下get方法的HTTP接口,其实这个接口也是把POST数据作为参数进行get请求,使用post 方法也是一样,一共6步就可完成接口用例自动化

     使用Requests 和 RequestLibrary库

    Python的requests库提供了非常方便且人性化的接口调用方法,上手快,功能强大且完美,甩同类库urllib2(python3中为urllib), httplib(python3中为http.client)好几条街。缺点是封装了太多层,不利于http底层原理的理解。

    RequestsLibrary是基于requests模块做的RF库,其根基本身就强大,再加上git上有一些大神一直在对其进行持续地更新及维护,提供了很不错的官方Demo,从使用人数来说,也是完爆那些HTTPLibrary之流,意味着遇到问题得到解答的机会更大

    Python3 中的 http 包中含有几个用来开发 HTTP 协议的模块。
      http.client 是一个底层的 HTTP 协议客户端,被更高层的 urllib.request 模块所使用。
      http.server 包含基于 socketserver 的基本 HTTP 服务器的类。
      http.cookies 实现 cookie 状态管理
      http.cookiejar 与 cookie 相关

    1、requestlibrary库介绍

    Keyword

    Arguments

    Documentation

    Create Ntlm Session

    alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False

    创建一个HTTP会话:

    url:即服务器的url

    alias:使用Robot Framework的别名表示当前会话。

    header:使用默认的headers字段

    auth:NTLM鉴权需用[‘domain’,’username’,’password’]格式

    timeout:会话超时时长

    proxies:代理服务器的url

    verify:如果需要证书请求则置为true

    Create Session

    alias, url, headers={}, cookies=None, auth=None, timeout=None, proxies=None, verify=False

    创建一个HTTP会话:

    url:即服务器的url

    alias:使用Robot Framework的别名表示当前会话。

    header:使用默认的headers字段

    auth:NTLM鉴权需用username&password格式

    timeout:会话超时时长

    proxies:代理服务器的url

    verify:如果需要证书请求则置为true

    Delete

    alias, uri, data=(), headers=None, allow_redirects=None

    弃用,查看delete request

    Delete All Sessions

     

    删除全部的会话

    Delete Request

    alias, uri, data=(), headers=None, allow_redirects=None

    使用别名删除会话

    Alias:需要删除的会话的别名

    Get

    alias, uri, headers=None, params={}, allow_redirects=None

    弃用:使用Get Request

    Get Request

    alias, uri, headers=None, params={}, allow_redirects=None

    根据提供的别名查找会话并在会话中发送GET请求

    Head

    alias, uri, headers=None, allow_redirects=None

    弃用:使用Head Request

    Head Request

    alias, uri, headers=None, allow_redirects=None

    根据提供的别名查找会话并在会话中发送HEAD请求

    Options

    alias, uri, headers=None, allow_redirects=None

    弃用:使用Options Request

    Options Request

    alias, uri, headers=None, allow_redirects=None

    根据提供的别名查找会话并在会话中发送Options请求

    Post

    alias, uri, data={}, headers=None, files={}, allow_redirects=None

    弃用:使用Post Request

    Post Request

    alias, uri, data={}, headers=None, files={}, allow_redirects=None

    根据提供的别名查找会话并在会话中发送POST请求

    To Json

    content, pretty_print=False

    将返回的数据转换为JSON格式

    使用pip命令执行库安装

    pip install -U robotframework-requests

    安装成功后即可打开RIDE添加测试用例。

    测试案例
    这里的demo我们是用到了flask的网站,做了几种例子,大家了解一下,如果需要更完整的了解,建议看一下RequestsLibrary在github上的测试案例。

    3.4.0 使用demo前的准备
    我用了flask来实现了一个demo网站,它可以快速建立起一个网站,只用一些简单的语句。
    如果使用pip安装会比较方便,特别是在mac电脑上,为了保证例子能正常运行,大家需要安装四个东东,flask、flask-httpauth、flask_restful、python-simplexml。

    只需要运行如下命令:

     

    pip install flask
    pip install flask-httpauth
    pip install flask_restful
    pip install python-simplexml

    安装完成之后就可以运行我们的demo-website了

    demo的地址是:https://github.com/qitaos/rf-demos

    demo-website的地址是:https://github.com/qitaos/rf-demos/tree/master/demo-website

    下载整个工程之后,进入demo-website目录,

    运行命令
    python flaskdemo.py
    运行成功后会有提示信息

    python flaskdemo.py

    1. Running onhttp://127.0.0.1:8000/ (Press CTRL+C to quit)
    2. Restarting with stat
      这里提示我们服务器已经启动,访问http://127.0.0.1:8000/ 或者 http://localhost:8000/ 就可以打开页面了。
      如果有任何出错信息,有可能是前面的测试库没有安装完整。

    1、get request json
    访问http://localhost:8000/users/1 的时候,它会返回一个json:
    {“1”: “john”}

    Robot <wbr>Framework之---接口测试实战

    如果把1换成5,它会返回一个404的json:
    {
    “message”: “NotFound: http://localhost:8000/users/5“,
    “status”: 404
    }

    Robot <wbr>Framework之---接口测试实战

    所以这里第一个案例就是来测试这2个接口请求。

    首先要先Create Session创建一个连接到服务器的host,然后通过Get Request发起请求,请求的返回是个Request对象${addr},所以在这里的变量是个对象,而对象的属性值的有${addr.status_code}和${addr.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值了。脚本见表格

    Robot <wbr>Framework之---接口测试实战

    2、getrequest xml

    前面一个例子是接口返回json进行处理的,这个例子是接口返回xml格式内容。访问http://localhost:8000/hello/qitao,会返回一个xml格式的内容:

    qitao

     

    Robot <wbr>Framework之---接口测试实战

    案例比较长,分两个部分说,第一个部分其实还是用json来处理,虽然返回的是xml,但是requestslibrary自动把它处理成json了。所以它的这部分处理其实和前面的案例一样。脚本见表格

    Robot <wbr>Framework之---接口测试实战

    那么想要返回xml怎么处理呢?这里就要在Request的essay-header里加上一个accept=application/xml,此时返回的就是一个xml格式的内容qitao

     

    所以这里用到了XML库的关键字Get Element Text来获取xml节点的文本,使用Get Element获取到一个Element对象${hello},既然是对象,那么它也有属性值${hello.text}。再后面的几行就是用XML库的关键字新增Element,然后取值,这也算是提前准备好来XML的demo了。

     

    这里为什么要做xml的例子呢,其实是因为有一种接口测试就是测试Web Service的,通常Web Service都是返回一个xml格式的内容。这里demo网站没有做Web Service的例子,所以就用这个xml的例子来代替Web Service了。脚本见表格

     

    Robot <wbr>Framework之---接口测试实战

    运行案例结果如图:

    Robot <wbr>Framework之---接口测试实战

    3、增加登录态
    有些接口是需要用户密码登录后才能访问的,如果直接访问http://localhost:8000/401
    会提示要输入用户名密码

    Robot <wbr>Framework之---接口测试实战

    输入正确的用户名密码ok/python,会得到一个返回的信息
    {
    “pass”:”Authorized access”
    }

    但是我们做自动化脚本的时候不能去手动输入的,所以我们可以在Create Session的时候加上用户名密码,就可以直接访问了。

    用户名ok,密码python,我们用${auth}创建个List存起来,然后在Create Session时加上${auth}参数,后面的过程就是前面一样了,不需要自己再手动输入用户密码了。脚本见表格

    Robot <wbr>Framework之---接口测试实战

    运行结果如图

    Robot <wbr>Framework之---接口测试实战

    4、postrequest
    前面几个都是get方式的,这个例子是post方式的。
    这里主要是在essay-header加了一项Content-Type=application/x-www-form-urlencoded,这是最常见的post提交数据的方式,另外还有几种我不太常用的,大家可以根据自己的实际情况来使用。

    然后我们向 http://localhost:8000/post, 发起请求,并将${data}作为post的data传过去。demo网站对post请求做了个处理,将username的值获取到然后以json格式返回。脚本见表格

    Robot <wbr>Framework之---接口测试实战

  • 相关阅读:
    看到就是赚到!Selenium完整框架——告别2017
    《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析
    《selenium2 python 自动化测试实战》(20)——Selenium工具介绍
    《selenium2 python 自动化测试实战》(19)——webdriver错误截图
    《selenium2 python 自动化测试实战》(18)——自动化测试模型(一)
    《selenium2 python 自动化测试实战》(15)——调用js控制滚动条等操作
    《selenium2 python 自动化测试实战》(16)——js操作补充
    《selenium2 python 自动化测试实战》(17)——几个cookies操作
    后缀数组的一些性质----height数组
    hdu1238--Substrings
  • 原文地址:https://www.cnblogs.com/tester-l/p/8311498.html
Copyright © 2011-2022 走看看