工具应用:Robot Framework->对协议级接口进行测试

工具应用:Robot Framework->对协议级接口进行测试_第1张图片

实验简介

本节实验主要为大家讲解如何利用Robot Framework结合常用的关键字完成对Agileone系统中的“需求提案”模块进行协议级接口的自动化测试脚本开发。

实验目的

(1) 掌握RF的Requests库的常用关键字及用法。

(2) 能够熟练运用Requests库来完成接口级自动化测试脚本开发。

实验流程

  1. Requests库常用关键字

我们先来对Requests库的常用关键字进行一个了解:

(1) Create Session:创建一个连接到服务器端URL地址的HTTP会话。

(2) Get Request:发送GET请求,其中也内置了一个关键字叫“Get”,系统已不再建议使用。

(3) Post Request:发送POST请求,同样,也不再建议使用“Post”关键字。

(4) To JSon:将响应的内容转换为JSON数据格式。

(5) Delete All Sessions:清空当前会话。

此处需要特别注意的是,RF已经自动帮我们维护了服务器端与客户端的Session和Cookie,我们只需要在Create Session时指定一个本次连接的别名(Alias),同时在后面的每一次请求处理的过程中都通过此别名来与当前Session建立关系。

下面,我们仍然通过对Agileone的登录,需求提案模块的新增与修改来为大家演示其用法。

2. 先实现一个简单的GET请求

工具应用:Robot Framework->对协议级接口进行测试_第2张图片

对上述代码进行一下说明:

(1) 第1行:Create Session,用于创建一个与对应的服务器地址的连接会话,并将该会话别名设置为“agileone”,以供后面的请求使用,以保持会话状态。

(2) 第2行:发送GET请求到首页,并且将响应赋值给变量${response}。

(3) 第3行:对首页进行简单的断言,此处我们使用了Python的decode函数对响应的内容进行解码处理。同时获取响应的内容需要使用${response.content}属性,而不是直接使用${response},这是需要注意的地方。

(4) 第4行:将响应的内容输出到日志信息中,便于调试时查看。与我们在Java中使用System.out.println()方法输出内容到Console终端上道理是一样的。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

工具应用:Robot Framework->对协议级接口进行测试_第3张图片

3. 实现Agileone的登录与断言

要实现Agileone的登录,最核心的当然是发送POST请求。在RF框架中,我们使用“Post Request”关键字可以实现POST请求的发送。实现POST请求的处理需要有三个核心参数:

(1) 必须在头部自定义POST请求的Content-Type字段值为:application/x-www-form-urlencoded。

(2) 必须指定正确的POST请求的服务器端接收地址。

(3) 必须明确指定POST请求的正文数据。

对于头部字段和请求正文的指定,我们可以直接指定为一个字符串,如“username=admin&password=123456”这种形式,也可以使用关键字“Create Dictionary”创建一个字典对象,将每一个字段一个一个单独赋值,但最终构建出来的,仍然是字符串格式。其它的操作则与GET请求的处理类似,获取到响应,对其进行处理即可。现在我们来看看如何利用“Post Request”关键字实现Agileone系统的登录和断言:

工具应用:Robot Framework->对协议级接口进行测试_第4张图片

具体的脚本如下:

Create Session    agileone    http://localhost/agileone
${headers}    Create Dictionary Content-Type=application/x-www-form-urlencoded
${loginData}    Create Dictionary    username=admin    password=admin    savelogin=true
${respLogin}    Post Request    agileone    /index.php/common/login    data=${loginData}    headers=${headers}
Should Contain    ${respLogin.content}    successful
Run Keyword If    u'${respLogin.content}'==u'successful'    Log   登录成功...
...          ELSE    Log    用户登录失败...

在上述代码中,我们使用了“Create Dictionary”来创建了字典数据,并赋值给变量${headers}和${loginData},最后在发送POST请求时指定给参数data和headers,供POST请求使用。虽然我们看到的字典数据是一个字段一个字段处理的,但是最终,系统会构建出一个完整的请求体,与我们直接写字符串处理的结果是一样的。最后,我们使用了RF自带的判断语句“Run Keyword If”和“… ELSE”来实现一个简单的断言。

4. 需求提案的新增功能测试

当我们完成了登录的操作后,我们已经非常熟悉“Post Request”的用法了,那么现在我们使用原生字符串的方式来发送请求头和请求正文,并继续使用随机数来生成随机的需求提案标题和内容。最终的代码如下:

Create Session    agileone    http://localhost/agileone
${headers}    Create Dictionary    
Content-Type=application/x-www-form-urlencoded
${loginData}    Create Dictionary    username=admin    password=admin    
savelogin=true
${respLogin}    Post Request    agileone    /index.php/common/login   
data=${loginData}    headers=${headers}
${random}    Evaluate    random.randint(10000,99999)    random
${addData}    Set Variable    type=Requirement&importance=Medium
&headline=这是需求标题-${random}
&content=这是需求内容-${random}&&processresult=
${respAdd}    Post Request    agileone    /index.php/proposal/add    data=${addData}    headers=${headers}
Should Match Regexp    ${respAdd.content}    \\d+

思考练习

(1) 上述的脚本中是否还有值得改进的地方,请尝试进行优化。

(2) 请基于上述脚本范例,完成对Agileone或其它系统的自动化测试开发。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

你可能感兴趣的:(软件测试,技术分享,自动化测试,前端,javascript,单元测试,测试工程师,自动化测试,软件测试,接口测试)