云图网
  • 业界资讯
  • 技术专区
    • 云计算
    • 人工智能
    • 信息安全
    • 大数据
    • 架构设计
    • 研发管理
    • 物联网
    • 数据库
    • 区块链
    • 大前端
    • 开源
    • 移动开发
    • Java
    • linux专区
    • PHP
    • python
    • 智能运维
    • 编程笔记
    • 编程教程
    • WordPress
  • AIGC
  • 企业战略规划
  • 下载专区
  • 江湖史
  • 随笔记录
登录 注册
投稿
  1. 云图网首页
  2. 技术专区
  3. 编程笔记

unittest框架之DDT驱动

2022年4月17日 14:05 • 编程笔记


框架:unittest+python+ddt

一、DDT数据驱动

1.为什么需要数据驱动

比如测试数据有多组,代码只有一份,DDT数据驱动可以实现不同数据运行同一份代码

数据驱动测试:

1)避免编写重复代码
2)数据与测试脚本分离
3)通过使用数据驱动测试,来验证多组数据测试场景
4)通常来说,多用于单元测试和接口测试

2.驱动模式介绍

数据驱动:Data-Driven Tests(DDT)即数据驱动测试,可以实现不同数据运行同一个测试用例。ddt本质其实就是装饰器,一组数据一个场景。

关键字驱动(核心:把业务逻辑封装成关键字login,只需要调用login)

混合驱动模式(关键字驱动+数据驱动):市场主流

行为驱动测试:用中文描述测试用例

3.DDT是通过装饰器的形式来调用的。

装饰器:完成一种特定功能的函数(事务),在python里面装饰器是以@开头,并且装饰器有两种:类装饰器、函数装饰器。

 

ddt里面有哪些装饰器:

@ddt(申明当前类使用ddt框架)

@data(函数装饰器,用于给测试用例传递数据)

@unpack(函数装饰器,将传输的数据包解包)一般作用于元组tuple和列表list。

@file_data(函数装饰器,可直接读取yaml/json文件)

 

4.实战 @ddt,@data

安装

 unittest框架之DDT驱动

 

 

@ddt
class TestLogin(MyUnit):
    @data(10)  
#传输 10
   
@unpack   
#给list或元组解包
   
def test_01_login(self,args):

print(args)

python数据类型:数字(int,float,complex)字符串、列表list、元组tuple、集合、字典dict

总结:当传单个值,所有类型都可以传,用例执行1次。

如果data传入多个值的时候,那么有几个值执行几个

    @data((1,23),( "liyou","lili"))   #传输元组
   
@unpack    #给list或元组解包
   
def test_01_login(self,args1,args2):

print(args1,args2)

    @data({"name":"李老师","age":"18"},( "name":"王老师","age":"19"))   #传输字典
   
@unpack    #给list或元组解包
   
def test_01_login(self,name,age):

print(name,age)

 

@unpack

如果是数字或者字符串,那么不需要解包

如果是元组和列表的话,那么可以通过@unpack,但是参数的个数必须和解完包后的值的个数一样

如果是集合,无法解包

如果是字典,可以解包,但是参数的名字和个数必须和字典的键保持一致

在common模块,添加excel_util.py文件

#读取excel文件
def read_excel(self):
    #xlrd,openpyxl
    #
加载excel工作簿
   
wb = openpyxl.load_workbook(self.get_object_path()+“data/login_data.xlsx”)
    #获得sheet对象
   
all_list = []
    sheet=wb[‘login’]
    #获得excel的行数和列数
   
#
print(sheet.max_row,sheet.max_column)
    #
循环
   
for rows in range(2,sheet.max_row+1):
        tmp_list = []
        for cols in range(2,sheet.max_column+1):
           
tmp_list.append(sheet.cell(rows,cols).value)
        all_list.append(tmp_list)
    return all_list

在数据驱动中使用

@data(*ExcelUtil().read_excel())   #*号表示解析掉[]
@unpack    #给list或元组解包
def test_01_login(self,username,passwd):
    “””测试用i1″””
   
print(“用例1—————–“)
    global driver
    driver=self.driver
    url = ‘https://shop.szmachong.com/?s=user/logininfo.html’
   
login_page = LoginPage(driver,url)
    login_page.open_url()
    login_page.input_account(username)
    login_page.input_pwd(passwd)
    login_page.click_bt()
    sleep(2)
    login_page.checkSucess()

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/244656.html

datalistloginunittest元组框架驱动
赞 (0)
0 0
生成海报
Kafka消费进度监控
上一篇 2022年4月17日 14:05
k8s备份工具之velero
下一篇 2022年4月17日 14:06

相关推荐

  • C# System.Data.SQLite 建库 2022年8月16日
  • day08 集合API | 遍历_ | 泛型 |增强For循环 2022年7月16日
  • CREATE LOGIN (Transact-SQL) 2022年8月15日
  • Shell编程 2022年7月5日
  • Data-Stash数据快速同步 2022年7月17日
  • 数据结构—总结 2022年8月4日
  • 学习:python 文件的读写 2022年8月16日
  • 关于python:在将字典的值(列表)与另一个列表进行比较时更改字典的键 2022年6月19日
  • Java集合之List接口(上) 2022年7月13日
  • [Algorithm] Doubly Linked list construction 2022年8月4日

发表回复

请登录后评论...
登录后才能评论
  • 欢迎投稿
  • 隐私政策
  • 使用协议
  • 服务条款
  • 版权声明

Copyright © 2006-2025 YTSO.COM 版权所有 鲁ICP备15002310号-3 Powered by WordPress

免责声明:本站信息来自互联网收集分享,版权归原创者所有,如果侵犯了您的权益,请发邮件给39941211@qq.com通知我们删除.