一、前言
最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新!
这是python+selenium实现Web自动化第八篇博文
二、Selenium之-数据驱动框架
那么问题来了,什么是数据驱动呢?就是,数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变,也就是参数的应用化。
这里对于数据驱动测试,总结起来就是,数据驱动绝非读取文件(excel、csv、xml)中数据进行参数的赋值测试,因为采用的这种方式的测试,工作重心反而变成了如何读写文件,而对于自动化测试中关心的执行结果统计、断言结果反而不是那么容易去实现。尤其是测试页面结构发生大的调整时,文件类的字段调整获取也要发生较大的修改,所以文件数据驱动测试也是可以的,但是并不是最优解。
那么什么才是最优的数据驱动测试呢?是的,用单元测试 unittest 结合 ddt 库。使用单元测试可以很方便的解决两个问题:
(1)断言。利用单元测试的断言机制,我们可以方便的进行预期结果和实际结果的对比;
(2)数据统计。执行完测试用例后,一共执行了多少条用例,执行成功多少,失败多少,失败的用例错误在哪里?单元测试框架会帮我们统计展示。
1. DDT 入门
Python 的 unittest 没有自带数据驱动功能,如果使用 unittest, 同时又想使用数据驱动,就用 DDT 吧。奉上 ddt 官方文档 《DDT 官方文档》。
DDT 的使用方法:
(1) ddt.ddt --- 装饰类,也就是继承自 TestCase 的类;
(2) ddt.data --- 装饰测试方法,参数是一系列的值。
(3) ddt.file_data --- 装饰测试方法,参数是文件名。文件可以是 json 或 yaml 类型,除.yaml结尾的文件,其他文件均会作为json文件处理。
(4) ddt.unpack --- 传递的是复杂的数据结构是使用。如:元组或列表。添加到 unpack 上之后,ddt 会自动把元组或者列表对应到多个参数上。
(5) 测试用例方法名生成规则 ---
#!/usr/bin/env python
2. 实践应用
将 ddt 引入到自动化测试中。
#!/usr/bin/env python
三、关键字驱动框架
关键字简单来说就是,把我们的执行操作每一个关键步骤当成一个关键字来对待,用来驱动程序的设计开发。例如:进行web自动化我们的首要是打开浏览器,是的 “打开浏览器” 我们就可以作为一个关键字来对待它,关键字就是来驱动我们程序设计的关键步骤。通过关键字的改变从而驱动自动化测试的执行,最终引起测试结果的改变。
对于测试一个注册页面,我们来梳理下看有哪些关键词,更深层次了解下关键词模型:
(1) 打开浏览器 ---> 打开浏览器
(2) 输入注册页面的url ---> 输入测试地址
(3) 页面加载等待 ---> 页面加载等待
(4) 输入(注册邮箱、用户名、密码、验证码)---> 输入元素
(5) 点击注册按钮 ---> 点击元素
(6) 退出浏览器
1. 构建关键词类
#!/usr/bin/env python
2. 关键词模型测试用例
我们关键词方法直接从 register_keyword 中读取即可,但是测试数据从哪获取到从而传给相应的关键词方法呢?为了方便测试数据方便管理,我们可以将其存储到 Excel中去并获取。
2.1 读取Excel
#!/usr/bin/env python
2.2 测试用例实践
前面将测试测数据存在到excel中了,接下来怎么写关键字对应的测试用例。
(1) 拿到操作值,是否执行
(2) 拿到执行方法
(3) 拿到输入数据
(4) 是否有输入数据
执行方法(输入数据,操作元素)
没有输入数据
执行方法(操作元素)
(5) 对比预期结果和实际结果的值
对比结果一样,测试结论为pass;否则为fail
#!/usr/bin/env python
四、行为驱动模型
什么是行为驱动测试呢?行为驱动(Behave Driven Development)测试,是一种敏捷的开发方法,通常应用在自动化测试中,通过使用自然描述语言确定自动化脚本。笔者不喜欢这种方式用在自动化脚本里。并且目前市面上应用得也不广泛,这里就不在累述了。
![b63397f84e80887d362d9adca8f07296.png](https://i-blog.csdnimg.cn/blog_migrate/e3cb7711f21d8efc15405c65022e8476.png)
五、Selenium成套博文地址,总有你需要的:
逍遥子:[01篇]python+selenium实现Web自动化搭建环境,自动化原理,定位元素以及浏览器操作
逍遥子:【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!
逍遥子:【03篇】python+seleniumWeb自动化:三类等待,多窗口切换,警告框处理,下拉框选择
逍遥子:【04篇】python+selenium Web自动化:文件上传,Cookie,调用 js,错误截图
逍遥子:【05篇】python+selenium Web自动化:读取ini文件,元素封装,代码封装,异常处理
逍遥子:【06篇】python+selenium实现Web自动化:日志处理
逍遥子:【07篇】python+selenium实现Web自动化:PO模型,PageObject模式!
逍遥子:【08篇】python+selenium实现Web自动化:数据驱动框架,ddt,关键字驱动框架
如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣请拉到最上面关注笔者的名字!
一箭三雕:如果你觉得本文对你有帮助,请关注,赞同,分享三连!谢谢!
作者出处:逍遥子:【08篇】python+selenium实现Web自动化:数据驱动框架,ddt,关键字驱动框架
转载声明:欢迎转载,但未经作者同意请保留此段声明,并在文章明显位置给出原文链接。