当前位置: 首页 > news >正文

自动化测试框架设计核心理念——关键字驱动

很多人在接触自动化测试时,都会听到关键字驱动这样的一个概念,但是在研究时却有些不太清楚这种驱动模式的设计及实现到底该如何着手去做。

关键字驱动,作为一种自动化测试框架的设计形式,在很早的时候就已经有提及过了。它的基本原理或者说构思就是将原本的自动化代码进行代码与数据的分离,再将分离出来的代码二次分离,形成所谓行为代码与测试代码,而后再经由数据内容驱动行为代码,生成测试代码。从而更加便捷地进行自动化测试代码的管理,以及提高自动化的复用性,让使用者更加容易理解和使用自动化(毕竟还是有很多很多测试人员对代码一窍不通。


可能这个解释听起来有点复杂,那么我举个很简单的例子让大家了解一下关键字驱动的形式:

1. 我在吃饭。

2. 你在吃饭。

3. 他在吃饭。

这一组内容可以看到,不论是谁,都在做着吃饭这样的一个行为,而其中重点的是角色,也就是所谓的“你我他”,那么我们可以将“吃饭”这个行为提取出来,作为一个公共的内容,这样就只需要提供一个角色数据,就可以实现任何一个人吃饭的这样一件事情了。而这个提取行为作为公共内容的过程,就是所谓的关键字封装,通过角色数据去驱动这样的一个行为,形成这一件事情,这就是所谓的“关键字驱动+数据驱动”的自动化测试设计模式了。


那么在自动化测试中我们要实现关键字驱动的话,该如何去做呢?

首先是环境的准备:

1. Selenium+WebDriver常规组建的生成:(有关这部分可以参照我之前写的的Selenium环境搭建)

在Pycharm中导入Selenium模块

在Python安装根路径下添加driver文件

2. 如果想要结合数据驱动,则依据数据文件格式选择对应的组件安装:

Excel可以通过xlrd

yaml可以通过pyyaml

还有很多其他不一一例举了。

3. 如果想要整个框架做的更加完善,可以添加很多其他的内容,比如说logging日志记录,Requests接口自动化,Appium/uiautomator2移动端UI自动化等等等等,这里依据个人喜好和需要进行添加即可。

准备好环境后,就是重点的关键字封装提取,在这里以Selenium为例:

先看基本的工程结构:

定义一个最基本的关键字结构,创建一个包,专门用于管理各类关键字类对象,可以是WebUI,AppUI,接口的关键字对象。作为一个关键字库,用于存放和被调用。再定义一个包,专门用于调用关键字库的内容,实现自动化的执行,当然,也可以用其他形式,这里很多方法可以应用。

接着再来看看关键字类如何实现:

关键字类中,将常规的元素操作行为从Selenium对象中提取出来,然后进行二次封装,生成自己的关键字库,这个库可以理解为是工具库,当实际测试过程中需要应用到任何的方法时,直接通过实例化这个库,然后在库中进行调用即可。这个类中,在执行过程中是有可能会出现异常的,比如元素查找失败,超时等等,所以最好在关键字封装时,添加异常处理机制,避免在运行时出现异常而导致无法捕捉具体原因。

关键字类的调试:

因为没做数据驱动类,所以直接在Pycharm中编写测试代码中对已生成的关键字类进行调试,通过运行可以发现,整个过程已经可以正常实现,也就意味着,这个关键字对象库没有太大问题,而我们后续需要做的,就只是在这个对象库中不停添加需要的关键字即可。而结合到数据驱动,像是Excel、yaml等之后,也可以通过这些数据文件来驱动我们的对象库。

SO.

通过关键字驱动的实现,可以很好地将常规的自动化代码进行操作行为与测试代码的分离,生成复用性较高的自动化测试模式。而且结合到数据驱动,可以应用到多种不同类型的业务系统,来实现自动化测试工作。从而提升我们的工作效率以及个人的自动化测试能力。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

http://www.lryc.cn/news/440685.html

相关文章:

  • GO GIN SSE DEMO
  • GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析
  • 【React Native】路由和导航
  • Linux环境基础开发工具---vim
  • python AssertionError: Torch not compiled with CUDA enabled
  • Pandas的入门操作-Series对象
  • 自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计
  • H5依赖安装
  • MatchRFG:引领MemeCoin潮流,探索无限增长潜力
  • 2024/9/18 模型的存储与读取
  • 在 fnOS上安装 KVM 虚拟化,并使用 Cockpit 网页管理虚拟机
  • VUE实现刻度尺进度条
  • ZYNQ FPGA自学笔记~点亮LED
  • 攻击者如何在日常网络资源中隐藏恶意软件
  • 《深度学习》深度学习 框架、流程解析、动态展示及推导
  • “中秋快乐”文字横幅的MATLAB代码生成
  • 【Node.js】RabbitMQ 延时消息
  • 前后端分离Vue美容店会员信息管理系统o7grs
  • 初学Linux(学习笔记)
  • 新增的标准流程
  • WebSocket 协议
  • [mysql]mysql排序和分页
  • 开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略
  • 一次渲染十万条数据:前端技术优化(上)
  • springboot实训学习笔记(5)(用户登录接口的主逻辑)
  • python中网络爬虫框架
  • GEC6818初次连接使用
  • 解释下不同Gan模型之间的异同点
  • Hadoop的一些高频面试题 --- hdfs、mapreduce以及yarn的面试题
  • Day99 代码随想录打卡|动态规划篇--- 01背包问题