IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 数据驱动ddt的简单使用 -> 正文阅读

[开发测试]数据驱动ddt的简单使用

什么是数据驱动

当我们的测试脚本都是重复的,只有输入的数据变化时,每次更换一个数据执行,都要写一个测试脚本,这样会使我们的代码显得特别乱,特别冗余。
如果我们使用数据驱动,那么只用写一个脚本,在脚本执行的时候,他会自己不断更新数据。简单理解为:数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。
数据驱动ddt可以实现测试数据与测试脚本的分离,通过ddt来将测试数据加载到脚本中。采用数据驱动设计模式使一组数据对应一个测试用例,用例自动加载生成。

unittest测试框架下面没有数据驱动,所以在使用unittest框架的时候,还要使用数据驱动,就必须先下载安装ddt。
在cmd中先检查之前有没有下载过数据驱动:
pip show ddt
当显示show 不是内部命令的时候,可以使用pip.exe show ddt(可能需要升级一下pip的版本)
当显示没有安装过,直接使用下面的命令进行安装
pip install ddt

测试用例,必须以test_开头,在执行测试脚本的时候,会自动执行,不以test_开头的脚本必须要调用才会执行。

使用ddt时,必须引入ddt的包
from ddt import ddt,file_data,unpack,data
增加ddt数据的3种方式:

  1. @data(“王一博”,“Lisa”,“阿里巴巴”)
  2. @file_data(‘test_baidu_data.json’) test_baidu_data.json数据传入进去,可以一次性添加许多个不同的数据
  3. @data([“林俊杰”,“林俊杰_百度搜索”],[“王俊凯”,“王俊凯_百度搜索”])
    @unpack —传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上。

为了创建数据驱动测试,需要在测试类上使用 @ddt 装饰符,在测试方法上使用 @data 装饰符。@data 装饰符可以把参数当做测试数据,参数可以是单个值,列表,元组,字典,对于列表和元组,需要使用 @unpack 装饰符把元组和列表解析成多个参数,让其测试数据与测试预期结果之间一一对应。

from selenium import webdriver
import unittest
import time
import os,sys
from selenium.common.exceptions import NoAlertPresentException
from ddt import ddt,file_data,unpack,data
@ddt
class testCase1(unittest.TestCase):
    def setUp(self) :
        #初始化
        self.driver=webdriver.Chrome()
        self.url="https://www.baidu.com/"
        self.driver.get(self.url)
        self.driver.maximize_window()
        time.sleep(3)
    def tearDown(self):
        #关闭浏览器
        self.driver.quit()
   #方法以test_开头都会默认去执行
    #数据驱动ddt测试用例  1  数据和方法放在一块,混乱
    # @data("王一博","Lisa","阿里巴巴")
    
    #文件路径放在和测试脚本路径同级的文件夹下面
    # @file_data('test_baidu_data.json')
    #判断把内容搜索出来之后,和预期是否匹配
    @data(["林俊杰","林俊杰_百度搜索"],["王俊凯","王俊凯_百度搜索"])
    @unpack
    #unpack的作用,每次传入两个以上的参数时将元素一一对应
    def test_baidu1(self,value1,value2):
        driver=self.driver
        driver.find_element_by_id("kw").send_keys(value1)
        driver.find_element_by_id("su").click()
        time.sleep(6)
        self.assertEqual(driver.title,value2,msg="搜索失败!!!")
        time.sleep(6)
    if __name__ == '__main__':
        #参数verbosity=0表示打印出每一个测试用例的执行情况
        unittest.main(verbosity=2)

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:51:54  更:2021-08-08 11:52:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 23:52:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码