首页 > 其他分享 >Selenium29-数据驱动测试

Selenium29-数据驱动测试

时间:2022-12-27 13:44:42浏览次数:30  
标签:Selenium29 测试数据 ddt 测试 test 驱动 csv data

常见的驱动模式

  • 数据驱动测试:把测试数据从测试代码里分离出来,也称为"表驱动测试"或"参数化测试"
  • 关键字驱动测试:把业务逻辑代码块封装为"关键字",本质就是函数或方法
  • 混合驱动测试=数据驱动测试+关键字驱动测试
  • 行为驱动测试:用自然语言来实现测试用例内容

为什么要做数据驱动测试

  • 测试数据有多组,代码只有一份,实现不同数据运行同一份代码
  • 数据驱动测试
    • 避免编写重复代码
    • 数据与测试脚本分离
    • 通过使用数据驱动测试,来验证多组数据测试场景

数据驱动测试

  • Data-Driven Test

  • 是一种软件测试方法,将测试数据提取到表或外部表格形式的文件里

  • 对一个测试代码里的业务操作,使用表或文件中的所有测试数据来反复执行测试

  • 也称为表驱动测试或参数化测试

  • Python的unittest框架借助于ddt来实现数据驱动测试

    • ddt是一个第三方python库,用于实现数据驱动测试
    • 安装ddt: pip install ddt

ddt基础装饰器

  • ddt本质其实就是用装饰器来模拟多组测试数据,一组数据一个测试场景
  • 装饰器的作用是增强类、函数、方法的功能
  • @data 用来装饰测试方法,通过装饰器的参数来准备多组测试数据
  • @ddt 用来装饰测试用例实现类,自动读取数据内容,按照数据组数来自动生成多个测试方法

ddt基础使用步骤

  • 导入装饰器

    from ddt import ddt,data
    
  • 使用@ddt装饰类

    @ddt
    class mytestclass:
    
  • 使用@data准备多组测试数据

    @data(值1,值2,值3...)
    def test_**(变量): # 增加形参变量来接收数据
    	print(变量) # 在测试方法中可使用变量
    
  • 注意

    • 运行代码时,必须整个类来运行,不能单独运行某一个测试方法
  • import unittest
    from ddt import ddt,data,unpack
    @ddt
    class MyTestCase(unittest.TestCase):
        @data(1,2,3,4,5)
        def test_something(self,value):
            print(value)
    if __name__ == '__main__':
        unittest.main()
    

unpack装饰器

  • 解决的问题:每组测试数据有多个值,用列表、元组或字典传入,需要解包后才能使用
  • @unpack装饰器对列表、元组或字典进行解包,获取其中的值
@ddt
class ....
	@data([值11,值12,值13],[值21,值22,值23])
	@unpack
	def test_....(变量1,变量2,变量3):
		.....

注意:

  • 每组数据里数据个数必须一致
  • 每组数据里有几个值,就需要准备几个变量

针对calculate.py单元测试的用例,使用ddt来简化代码

  • 把加法计算的三个测试方法test_add1、test_add2、test_add3合并为一个测试方法test_add,用它来测试三组加法的数据。
  • 把减法计算的三个测试方法test_sub1、test_sub2、test_sub3合并为一个测试方法test_sub,用它来测试三组减法的数据。

外部文件数据

问题:ddt测试数据量大时,与业务逻辑一起写在测试代码里会较为混乱,如何管理大量的测试数据才能最大限度减少耦合度
解决方案:

  • 数据量大时,建议提取到外部文件里存储管理
  • 数据存储在外部文件里,方便后期更新和维护,也可以进行数据复用

外部文件格式: CSV、JSON、YAML、TXT、EXCEL

file_data装饰器

  • @file_data 装饰测试方法,参数是文件名(包含路径)
  • @file_data 支持的文件格式:json 或 yaml类型
    • 如果文件是以.yml或者.yaml结尾,ddt会作为yaml类型处理
    • 其它文件都会作为json文件处理
    • 如果使用yaml格式,需要安装yaml模块:pip install pyyaml
    • JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据
    • YAML是一种直观的数据序列化格式,可读性强,可被支持YAML库的不同的编程语言程序导入

json

yaml

CSV模式

  • Python自带了csv模块,导入import csv后使用它读取csv文件

  • 针对calculate.py单元测试的用例,使用csv格式的数据文件来提供测试数据

    • 在testcase8002.py代码基础上改造,使用csv格式的两个数据文件。
    • add_file.csv存储加法数据,sub_file.csv存储减法数据。
    • 提示:注意数据类型需要强制转换。

模块化程序设计

  • 应用场景:把通用的功能代码,封装设计为函数(或类里的方法),把它存储在一个单独的模块里,需要使用这段功能的代码块时,调用这个通用的函数。
  • 读取csv文件的功能的代码块,希望设计一个独立的工具模块
    • utils(工具包)---New---Python file---read_csv.py
    • 导入csv模块,定义一个读取csv文件内容的工具类,假设叫做CSVUtil定义一个构造方法,传入csv文件的路径作为参数,初始化成员变量file_path的值
    • 定义一个方法(假设get_list_data),读取成员变量file_path表示的文件所有内容,返回该内容
    • 注意:参数、返回值的数据类型(例如:大列表里有小列表)
  • 使用工具模块
from utils.read_csv import CSVUtil
d=CSVUtil("..\\testdata\\test4.csv").get_list_data()

标签:Selenium29,测试数据,ddt,测试,test,驱动,csv,data
From: https://www.cnblogs.com/sean-test/p/17007911.html

相关文章

  • 机器视觉支架制作(带效果测试)
       图像处理系统中,镜头、光源的选配,对于最后能否产生稳定的识别效果至关重要。而搭载镜头、光源的是支架。机器视觉的支架一般都是根据项目的具体需要进行配置的,搜索......
  • 融云 x OHLA:「社交+游戏」双轮驱动,逐鹿中东陌生人社交
    ​​完整报告,限免下载,点击获取​​走过十多年的出海历程,中国创业者面临的机遇和挑战正在发生根本性变化。TikTok、SHEIN在全球大获全胜的背后,不仅有中国产业链成熟、工程师......
  • 亚马逊蹦床ASTMF381标准测试
    近期亚马逊又开始严查蹦床类产品,被抽查到没有相关认证ASTMF381-16测试报告的将面临产品被下架等处罚!蹦床(Trampoline)是一项运动员利用蹦床的反弹在空中表现杂技技巧的竞技运......
  • Windows操作系统TIME_WAIT状态的TCP连接快速回收时间(性能测试时端口不够用)
    https://www.bilibili.com/read/cv16258140大规模Windows环境下,采用Nginx反向代理服务后,操作系统会产生较多TIME_WAIT的TCP(TransmissionControlProtocol)连接,操作系统......
  • 各个测试工具功能的简单描述及使用
    一、Xmind功能:1.编写测试用例、执行记录测试用例;使用:编写测试用例方法:等价类划分、边界值、场景法、错误推测法;二、Charles(代理服务器,安装SS......
  • Accpac系统v2020新版本测试教程
     Accpac系统v2020新版本测试教程ERP系统(Sage300ERP,Accpac)版本计划将从v2012升级到v2020,由于疫情原因,请大家先在座位上进行日常操作的验证。  大家主要需要......
  • 测试执行中工作效率相关指标
    →执行效率:利用测试用例文档页数除于此次系统测试执行的时间总和(不包含用例文档编写时间)。补充指标方法是用例的个数除于此次系统测试的时间总和。用于获得工作中测......
  • 亚马逊电动自行车审核标准UL测试
    如果您在亚马逊商城发布电动自行车,需要提交UL2849测试报告,必须是由ISO17025认可的实验室出具的检测报告,确认每件商品均已过检测,符合上述适用要求。电子产品作为亚马逊平台......
  • pen-testing, 什么是渗透测试? —— 转发
    原文: https://www.cnblogs.com/sealio/p/16476870.html 什么是渗透测试?渗透测试(PenetrationTest,简称为PenTest),是指通过尝试利用漏洞攻击来评估IT基础设施的安全性。......
  • arch 安装Nvidia驱动!arch解决不识别Nvidia!arch解决无法禁用Nouveau!arch解决无法blackl
    如题,直接在在内核参数里面禁用Noubeau然后再进行安装等操作。注意!!如果你正在使用图形化界面,请一定关闭它的自动启动,比如sddm等等,下面内容只能在tty中操作(在重新生成引导,重......