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

实验简介

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

实验目的

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

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

实验流程

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请求

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

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

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

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

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

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

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系统的登录和断言:

具体的脚本如下:

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或其它系统的自动化测试开发。

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文速览字节最新分布式操作系统KubeWharf

一文速览字节最新分布式操作系统KubeWharf KubeWharf 是字节跳动基础架构团队在对 Kubernetes 进行了大规模应用和不断优化增强之后的技术结晶。 这是一套以 Kubernetes 为基础构建的分布式操作系统,由一组云原生组件构成,专注于提高系统的可扩展性、功…

怪兽吃糖果

欢迎来到程序小院 怪兽吃糖果 玩法:左右飞出的糖果,点击鼠标糖果即为怪兽吃掉,不同的糖果不同的分数奖励, 吃不掉的糖果会扣除一次生命,共三次生命值,点击炸弹游戏结束,快去吃糖果吧^^开始游戏…

基于ssm大学生创新创业平台项目管理子系统设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生创新创业项目信息管理混乱,出错率高,信…

Redis持久化AOF详解

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍 通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。 因此…

外汇天眼:新手做外汇交易需要注意什么?

外汇投资是一个充满机会和挑战的市场,对于新手来说,了解一些必要的知识和技巧是非常重要的。 以下是一些新手投资外汇必须注意以下几点: 1.了解外汇市场的基本知识 在进入外汇市场之前,了解一些基本知识是必要的。 这包括外汇市…

亚马逊鲲鹏系统:防关联技术守护您的账户安全

亚马逊买家账号注册是一项相当简便的操作,但当涉及到批量注册时,我们就需要更加注意防关联的问题。对于那些对此领域不够熟悉的朋友们,可以使用亚马逊鲲鹏系统,这款系统能够为我们提供一站式的解决方案。该系统不仅支持买家账号的…

从零开始学习 Python 网络爬虫:使用 Beautiful Soup 解析网页

在这篇文章中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,以获取并解析网页内容。我们将使用 Beautiful Soup 库,它是一个非常强大的库,用于解析和操作 HTML 和 XML 文档。让我们开始吧! 一. 安装 Beautiful …

mysql,树形结构表中,查询所有末节点数据(叶子结点)

需求:在一个可以存放多级目录的表中,查询出某个课程目录下所有末节点(因为只有末节点可以挂载资源) 例如下图: 其中 1.11.2.12.1 都是末节点,因为他们已经没有下一级了 catalog表中重要字段有:c…

【论文解读】System 2 Attention提高大语言模型客观性和事实性

一、简要介绍 本文简要介绍了论文“System 2 Attention (is something you might need too) ”的相关工作。基于transformer的大语言模型(LLM)中的软注意很容易将上下文中的不相关信息合并到其潜在的表征中,这将对下一token的生成产生不利影响…

【docker四】使用Docker-compose一键部署Wordpress平台

目录 一、YAML 文件格式及编写注意事项(重要) 1、yaml文件使用时注意事项: 2、yaml文件的基本数据结构: 2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数&#xff0c…

SpringIOC之DependsOn

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

scikit_feature_selection实战

在进行李宏毅HW01作业时,需进行特征选择。 选用scikit-learn 中的feature_selection. 参考: selectkbest feature selection 实战注意点: chi 2 适用于非零的参数, 如果报错,换用 f_classif model SelectKBest(…

Unity 修改游戏对象的旋转角度Rotation的方法

在Unity中要修改游戏对象中的旋转角度,即下图中的Rotation: 有三个方法: 1、 使用欧拉角(Euler Angles):欧拉角是一组表示旋转的三个角度值(绕X轴的旋转、绕Y轴的旋转和绕Z轴的旋转)。 transf…

2019年第八届数学建模国际赛小美赛A题放射性产生的热量解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 A题 放射性产生的热量 原题再现: 假设我们把一块半衰期很长的放射性物质做成一个特定的形状。在这种材料中,原子核在衰变时会以随机的方向释放质子。我们假设携带质子的能量是一个常数。质子在穿过致密物质时&#x…

重生奇迹MU翅膀合成方法

重生奇迹MU翅膀,攻击力和吸收伤害都相当强大,但是合成难度极高,下面给大家详解怎么合成! 方法/步骤 1、先到商店买加4追4物品,级别越高越好,可以买多个,数量越多,合成几率越高&…

【PWN】学习笔记(一)【二进制基础】

目录 课程教学一次简单的Hack程序的编译与链接Linux下的可执行文件格式ELF进程虚拟地址空间程序的编译与链接程序的装载与进程的执行x86&amd64汇编简述 课程教学 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12…

基于ssm的疫情物质管理系统论文

摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统&am…

全能数据分析软件Tableau Desktop 2019 mac功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

光栅化渲染:优化技巧

我们在前面的章节中介绍的所有技术都是光栅化算法的基础。 不过,我们只是以非常基本的方式实现了这些技术。 GPU 渲染管道和其他基于光栅化的生产渲染器使用相同的概念,但它们使用这些算法的高度优化版本。 展示用于加速算法的所有不同技巧远远超出了介绍…