前言
网盗概念^-^相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动。(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用户名和密码来验证登录模块对系统的影响,那么如果我们每一条数据都编写一条测试用例,这无疑是增加了代码量,代码重复,且显得那么臃肿(谁不喜欢身材好的呢?你懂的),这时候我们可以使用不同数据驱动代码执行相同的用例测试不同的场景。
一、实施数据驱动步骤
我们再来说说实施数据驱动测试的步骤:
1.创建/准备测试数据
2.封装读取数据的方法,保留测试脚本调用的接口/属性(我们需要传递给脚本什么参数)
3.编写自动化测试脚本
4.脚本中调用封装好的处理数据文件的模块并引入测试数据
5.执行测试脚本并分析测试结果
二、数据驱动测试环境准备
1.安装python3.x开发环境(能看到此文章的应该都有这个环境,没有的自行百度吧)
2.安装数据驱动模块ddt
安装方式1:cmd下执行命令 pip install ddt
安装方式2:
https://pypi.org/simple/ddt/ 下载 并解压任意目录,cmd 运行命令python setup.py install
3.验证安装 pycharm 新建python文件并输入 import ddt 运行无报错信息既表示安装成功或者cmd 命令依次输入python回车 import ddt回车 无保存信息表示安装成功
4.unittest框架和ddt进行数据驱动
三、测试步骤
1.访问地址:https://mail.sohu.com/fe/#/login
2.输入用户名和密码
3.点击登录按钮
4.判断是否登录成功
四、数据存储
数据存在当前脚本中
数据准备
我们要实现的是用户登录的操作,所以用户名和密码是必须有的,期望结果可以有也可以没有。数据类型看源代码!
五、实例代码
1 from selenium import webdriver
2 from ddt import ddt, data, unpack
3 import unittest
4 import time
5 from selenium.common.exceptions import NoSuchWindowException
6 '''
7 简单数据驱动测试
8 '''
9 @ddt
10 class ddtTest(unittest.TestCase):
11 # 数据 可以是元祖, 列表, 字典(可迭代对象)
12 value = [['12691569846@sohu.com', 'xiacha11520','https://mail.sohu.com/fe/#/homepage'],
13 ['12691569844@sohu.com', 'xiacha11520','https://mail.sohu.com/fe/#/homepage']]
14 # value = [{'uname':'******@sohu.com', 'password':'xiacha11520','expected':'https://mail.sohu.com/fe/#/homepage'},
15 # {'uname':'******@sohu.com', 'password':'xiacha11520','expected':'https://mail.sohu.com/fe/#/homepage'}]
16 def setUp(self):
17 self.testUrl = 'https://mail.sohu.com/fe/#/login'
18 self.driver = webdriver.Firefox()
19 self.driver.get(self.testUrl)
20
21 @data(*value) # * 解析数据
22 @unpack# 用来解包, 将每组数据的第一个数据传递给uname依次类推, 当数据为字典时,形参需和字段的key值相同
23