0 代码自动化测试:RF 框架实现企业级 UI 自动化测试

 

 前言

现在大家去找工作,反馈回来的基本上自动化测试都是刚需!没有自动化测试技能,纯手工测试基本没有什么市场。

但是很多人怕代码,觉得自动化测试就需要代码!代码学习起来很难! 当然代码学习不难,只要有好的学习方法!不过对于目前很多不会代码的同学,我今天要给大家讲一个自动化测试框架,就是不会代码也能做的自动化测试:RobotFramework框架。

可以作为公司要做自动化 不会代码的 临时和紧急情况的替代方案。解一时之需。

什么是RF框架?

你自己不会,你就站在巨人的肩膀上前进,这个RF就是一个巨人。

这是一个别人用Python代码封装的一个的工具和框架。底层是Python代码,提供了非常丰富的关键字,直接可以实现自动化代码想要实现的功能。这些关键字只需要做表格填空就可以了。

所以Robotframework有它得天独厚的优势:

  • 不用写代码,填表格就可以,可读性很高
  • 学习和使用门槛很低,上手不需要任何代码基础
  • 而且也有很多内置库和插件和第三方库可以按照和导入使用,快速实现常见的基本测试需求。

这也就是导致很多没有自动化团队的公司会选择这个工具做自动化测试。

如何使用RF框架做自动化测试?

其实做自动化侧测试就是把手工测试的行为和动作 转化为代码和工具。所以,他的测试步骤和基本思路是一致的。只是手段切换成工具和代码而已。

我们以电商项目为例: 现在要做两条用例:

  • 用例1: 输入用户名和密码,验证码,点击登录,检查是否登录成功
  • 用例2:输入搜索商品名字,点击搜索,检查结果是否正确
如果用手工测试做步骤:

第一步:准备好测试数据和用例

第二步:执行测试,页面点击操作

第三步: 检查测试结果,也叫做断言,验证是否通过

如果通过页面点击效率太低了,而且现在纯页面点工没有市场了。所以,为了提高测试的效率,也为了提高自己的价值,我们需要把以上的手工点击操作进行自动化测试实现。

把以上的操作RF来操作:

RF要做UI自动化 需要借助一个功能库:SeleniumLibrary :

  • 安装 pip install SeleniumLibrary

  • 导入到RF的testsuite里。

    • 建好一个项目,再建一个测试套件,在套件里点击library导入;

    图片.png

    • 然后就可以看到所有的包含的关键字,F5可以查找所有的关键字以及关键字的解释和使用样例。这些关键字就是封装好的功能。用来写自动化用例的。

    图片.png

RF编写测试用例:

先创建一个testcase,命名为【登录】,然后用关键字编写:

1)打开网址,浏览器最大化:

直接使用两个关键字就可以实现: Open Browser, Maximize Browser Window。

图片.png

2)输入用户名和密码的位置,就需要进行元素定位了:RF也支持八大元素定位的方法,比如xpath元素定位。

图片.png

3)断言:判断是否登录成功。使用断言相关的关键字就可以实现。

图片.png

点击运行,看效果以及结果展示:

图片.png

然后RF之所以成为一个测试框架,是因为提供了非常非常详细的框架必备的东西: 测试报告 和日志。

图片.png

图片.png

这样,我们就完成了一个最基本你的用例的编写。

继续写第二条用例:

新建一个新的testcase,写第二条测试用例:搜索商品,检查搜索结果。

图片.png

以上是等待类的关键字,如果页面加载需要时间,就可以用等待的关键字加一个等待元素可见再操作。

实现了基本的功能之后,我们再去优化脚本 :

优化1:每次跑用例有两个动作都要必须要做的: 一个是打开浏览器,一个关闭浏览器。这种就相当于是前提准备和后期必然要的清场。这种操作,我们就可以写成前置和后置。
  • 在testsuite里添加前置和后置:

图片.png

优化2: resource封装用户自定义的关键字

除了打开浏览器,前置里其实还想最大化浏览器,这样多个功能,都要在一次性执行完,可以进行封装。

  • 在testsuite里 new keyword ,自己封装关键字,类似于封装函数。
  • 取个名字,open and maxwin

图片.png

  • 在前置里可以直接写这个封装的关键字的名字。

图片.png

优化3:数据分离和参数化

用户名 密码 验证码 还有搜索的关键字等这些信息,是会变化的,这种变化的数据不能写死在脚本里,需要进行参数化。

  • 在testsuite里add scalar:

图片.png

在用例里就可以进行参数的调用了:

图片.png

这样我们就可以用RF实现一个基本的框架搭建跑UI自动化测试了。

总结

当然,这个RF框架自动化简单 好上手,能够帮助我们的不会代码 但是又要做自动化测试的同学 解决燃眉之需。

但是工具自动化可以算是初级自动化,一方面不值钱,另外一方面也有很多局限性:

  • 1、RF框架是别人代码封装的,很多关键字和依赖的库也是依赖别人的更新和维护,一旦维护不及时,就会出现很多问题;RF就是典型的不怎么维护,所以有很多兼容性的问题。
  • 2、工具使用门槛比较低,但是也受限制于框架本身的语法和要求;
  • 3、难以灵活扩展,如果要针对项目做一些定制化的操作,需要扩展框架之外的功能,还是需要自己写代码。

所以,综上所述,要在企业独立做自动化测试并落地到项目,最好还是使用代码自己搭建框架,这也是企业对于自动化测试工程师的基本要求。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重生奇迹MU如何挂机

1、重生奇迹MU觉醒哪里挂机经验多挂机收益最大化,在重生奇迹MU中玩家可以通过副本获得大量的经验和金币,甚至挂机也有不错的收益,对于玩家来说 2、卡利玛神庙、血色城堡、迷失之城、恶魔广场甚至是挂机自动刷怪,组队都会有经验加…

骑砍战团MOD开发(43)-顶点着色技术

一.顶点着色(vertex_color) 实际GPU渲染时有顶点着色和纹理着色两种方式,顶点着色消耗资源小,GPU将顶点颜色通过插值运算进行渲染.常用于同一物体的不同颜色渲染,如青苹果,红苹果,可以使用动态切换顶点颜色实现,而不通过设置纹理图片实现. Direct3D9中可声明灵活顶点格式 stru…

TorchVision的使用方法、更改默认路径

TorchVision的使用 1. 转换和增强图像 torchvision.transforms.v2 参数作用Resize将输入调整为给定大小RandomShortestSize随机调整输入的大小RandomResize随机调整输入的大小RandomCrop在随机位置裁剪输入RandomResizedCrop裁剪输入的随机部分并将其调整为给定大小RandomIoU…

为什么PCB地与金属机壳用阻容连接?

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

Java的值传递与“引用传递”辨析

目录 Java的值传递与“引用传递”辨析1. 传递方式概述2. 值传递示例3. “引用传递”示例4. 值传递与"引用传递"的实际应用5. 总结:java只有值传递 Java的值传递与“引用传递”辨析 欢迎来到本博客,今天我们将深入研究Java中是值传递还是引用传…

【文件增量备份系统】前端项目构建

文章目录 创建项目安装项目依赖引入element plus组件下载组件在main.js中使用组件测试 整合路由router下载组件创建路由管理器index.js使用路由App.vue上面使用 <router-view />测试 整合axios下载组件工具类axiosRequest.js工具类使用 创建项目 damwangrunqindeMBP dev…

蓝桥杯刷题day06——平均

1、题目描述 有一个长度为n 的数组&#xff08;n 是 10 的倍数&#xff09;&#xff0c;每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均&#xff0c;而更改第i 个数的代价为bi&#xff0c; 他想更改若干个数的值使得这10 种数出现的次数相等&…

论文阅读-一个用于云计算中自我优化的通用工作负载预测框架

论文标题&#xff1a;A Self-Optimized Generic Workload Prediction Framework for Cloud Computing 概述 准确地预测未来的工作负载&#xff0c;如作业到达率和用户请求率&#xff0c;对于云计算中的资源管理和弹性非常关键。然而&#xff0c;设计一个通用的工作负载预测器…

软考 系统分析师系列知识点之信息系统战略规划方法(1)

所属章节&#xff1a; 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 信息系统战略规划&#xff08;Information System Strategic Planning&#xff0c;ISSP&#xff09;是从企业战略出发&#xff0c;构建企业基本的信息架构&#xff0c;对企业内、外信息资源进行…

AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺

今天分享的是AI 系列深度研究报告&#xff1a;《AI专题&#xff1a;海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺》。 &#xff08;报告出品方&#xff1a;华西证券&#xff09; 报告共计&#xff1a;54页 本周热点:海外科技巨头指引&#xff0c;AI主线逻辑依旧坚挺 硬件…

【教3妹学编程-算法题】1696. 跳跃游戏 VI

3妹&#xff1a;好冷啊&#xff0c; 冻得瑟瑟发抖啦 2哥 : 没想到都立春了还这么冷啊~ 3妹&#xff1a;暴雪、冻雨、大雨&#xff0c;这天气还让不让人活啦&#xff01;&#xff01;&#xff01; 2哥 :哎&#xff0c;好多人都滞留的高铁站了&#xff0c;没法回家了 3妹&#xf…

Jetson AGX Orin安装Anaconda,Cuda,Cudnn,pytorch,Tensorrt,ROS

Anaconda&#xff1a;https://repo.anaconda.com/archive/ Cuda&#xff1a;https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048 1&#xff1a;安装Anaconda3 下载&#xff1a;Anaconda3-2021.11-Linux-aarch64.sh chmod x Anaconda3-2021.11-Linux-aarch64.s…

部署自己的捕鱼达人

目录 效果 安装 1.安装httpd 2.下载捕鱼达人 3.启动httpd 效果 安装 1.安装httpd yum -y install httpd systemctl enable httpd 2.下载捕鱼达人 cd /var/www/html/ git clone https://gitee.com/WangZhe168_admin/Fishing-talentGame.git 3.启动httpd systemctl st…

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式 基础(持续更新~)

具体操作&#xff1a; day2: 作用&#xff1a; 出现跨域问题 配相对应进行配置即可解决&#xff1a; IDEA连接的&#xff0c;在url最后加参数?useSSLfalse注意链接密码是123&#xff08;docker中mysql密码&#xff09; 注意&#xff0c;虚拟机中设置的密码和ip要和主机上…

基于Java (spring-boot)的交通管理系统

一、项目介绍 基于Java (spring-boot)的交通管理系统功能&#xff1a;注册登录、个人信息管理、驾驶证业务类型管理、机动车业务类型管理、新闻类型管理、违法处理业务类型管理、驾驶证业务管理、机动车业务管理、新闻管理、违法处理业务管理、用户管理。 二、作品包含 三、项目…

【RT-DETR有效改进】UNetv2提出的一种SDI多层次特征融合模块(细节高效涨点)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本问给大家带来的改进机制是UNetv2提出的一种多层次特征融合模块(SDI)其是一种用于替换Concat操作的模块,SDI模块的主要思想是通过整合编码器生成的层级特征图来增强图像中的语义信息和细节信息。包括皮肤…

【优先级队列(大顶堆 小顶堆)】【遍历哈希表键值对】Leetcode 347 前K个高频元素

【优先级队列&#xff08;大顶堆 小顶堆&#xff09;】【排序】Leetcode 347 前K个高频元素 1.不同排序法归纳2.大顶堆和小顶堆3.PriorityQueue操作4.PriorityQueue的升序&#xff08;默认&#xff09;与降序5.问题解决&#xff1a;找前K个最大的元素 &#xff1a;踢走最小的&…

【计算机网络】物理层概述|通信基础|奈氏准则|香农定理|信道复用技术

目录 一、思维导图 二、 物理层概述 1.物理层概述 2.四大特性&#xff08;巧记"械气功程") 三、通信基础 1.数据通信基础 2.趁热打铁☞习题训练 3.信号の变身&#xff1a;编码与调制 4.极限数据传输率 5.趁热打铁☞习题训练 6.信道复用技术 推荐 前些天发…

Qt:QFileDialog

目录 一、介绍 二、功能 三、具体事例 1、将某个界面保存为图片&#xff0c;后缀名可选PNG、JPEG、SVG等 一、介绍 QFileDialog提供了一个对话框&#xff0c;允许用户选择文件或者目录&#xff0c;也允许用户遍历文件系统&#xff0c;用以选择一个或多个文件或者目录。 QF…

Python代码混淆工具,Python源代码保密、加密、混

引言 Python作为一种高级脚本语言&#xff0c;便捷的语法和丰富的库使它成为众多开发者的首选。然而&#xff0c;有时候我们希望保护我们的Python源代码&#xff0c;避免被他人轻易获取和篡改。为了实现这一目标&#xff0c;我们可以采取代码混淆的技术手段。本文将介绍Python…