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

ops/2024/10/9 2:21:08/

RobotFramework框架可以作为公司要做自动化 但是又不会代码的一种临时和紧急情况的替代方案,上手简单。

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

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

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

什么是RF框架?

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

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

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

  • 不用写代码,填表格就可以,可读性很高

  • 学习和使用门槛很低,上手不需要任何代码基础

  • 而且也有很多内置库和插件和第三方库可以按照和导入使用,快速实现常见的基本测试需求。

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

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

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

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

  • 用例1:输入用户名和密码,验证码,点击登录,检查是否登录成功

  • 用例2:输入搜索商品名字,点击搜索,检查结果是否正确

如果用手工测试做步骤:

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

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

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

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

把以上的操作RF来操作:

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

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

图片

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

图片

  • 安装 pip install SeleniumLibrary

  • 导入到RF的testsuite里。

RF编写测试用例:

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

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

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

图片

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

图片

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

图片

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

图片

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

图片

图片

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

继续写第二条用例:

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

图片

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

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

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

图片

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

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

  • 在testsuite里 new keyword ,自己封装关键字,类似于封装函数。

  • 取个名字,open and maxwin

图片

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

图片

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

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

  • 在testsuite里add scalar:

图片

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

图片

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

总结

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

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

1、RF框架是别人代码封装的,很多关键字和依赖的库也是依赖别人的更新和维护,一旦维护不及时,就会出现很多问题;RF就是典型的不怎么维护,所以有很多兼容性的问题;

2、工具使用门槛比较低,但是也受限制于框架本身的语法和要求;

3、难以灵活扩展,如果要针对项目做一些定制化的操作,需要扩展框架之外的功能,还是需要自己写代码。

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

 最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】


http://www.ppmy.cn/ops/122931.html

相关文章

螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)

3 网络及IP规划 3.1 容器连接网络初步规划 规划所有容器与虚拟机的三张网卡以macvlan的方式进行连接(以后根据应用可以更改),在docker下创建nat、wifi、nei、wai四张网卡,他们和虚拟机及宿主机上NIC的相关连接参数如下表所示&am…

C++常见的内存错误和解决策略

目录 1.未初始化指针 (Uninitialized Pointer) 2.内存分配未成功却使用了它 3.野指针 (Dangling Pointer) 4.内存泄漏 (Memory Leak) 5.重复释放内存 (Double Free) 6.内存越界访问 (Buffer Overflow) 7.错误的数组删除方式 (Mismatched Delete) 8.栈内存溢出 (Stack O…

CSS 效果:实现动态展示双箭头

最近写了一段 CSS 样式,虽然不难,但实现过程比较繁琐。这个效果结合了两个箭头,一个突出,一个内缩,非常适合用于步骤导航或选项卡切换等场景。样式不仅仅是静态的,还可以通过点击 click 或者 hover 事件&am…

Spring Boot中线程池使用

说明:在一些场景,如导入数据,批量插入数据库,使用常规方法,需要等待较长时间,而使用线程池可以提高效率。本文介绍如何在Spring Boot中使用线程池来批量插入数据。 搭建环境 首先,创建一个Spr…

路由交换实验指南

案例 01:部署使用 eNSP 平台实验需求: 安装华为 eNSP 网络模拟平台打开 eNSP 平台,新建拓扑并绘制网络能够成功启动交换机、计算机设备 实验步骤: 安装华为 eNSP 网络模拟平台启动安装程序 配置安装内容 防护墙允许 eNSP 程序的…

SpringCloud Alibaba - Eureka注册中心,Nacos配置中心

Eureka 1、创建服务端 server:port: 8761 # eureka 默认端口spring:application:name: eureka-server # 应用名称(微服务中建议必须定义应用名称) SpringBootApplication EnableEurekaServer // 开启eureka注册中心功能 public class EurekaServerAppli…

力扣206.反转链表

题目链接:206. 反转链表 - 力扣(LeetCode) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5]输出:[5,4,3,2,1] 示例 2: …

map和set的使用

引言 序列式容器和关联式容器 序列式容器:逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧密的关联关系,例如:string、vector、list、deque、array. 关联式容器:关联式容器也是用来存储数据的&#x…