云图网
  • 业界资讯
  • 技术专区
    • 云计算
    • 人工智能
    • 信息安全
    • 大数据
    • 研发管理
    • 大前端
    • 开源
    • 智能运维
    • 编程笔记
    • WordPress
  • 企业战略规划
  • 下载专区
  • 江湖史
  • 随笔记录
登录 注册
投稿
  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

相关推荐

  • PAT (Advanced Level) Practice 1008 Elevator 分数 20 Python 解法 2022年8月1日
  • 脏数据的惊人影响 2022年9月13日
  • 数据结构10分钟入门--栈 2022年9月8日
  • java获取目路下所有文件及子目录_Java编程获取文件列表及子文件目录的方法(非递归)... File dir = new File(path); dir.listFiles() 获取指定路径下文 2022年9月6日
  • Deep Learning-深度学习(二) 2022年7月11日
  • django orm性能优化 2022年7月10日
  • Python 推导式 【Derivation】 2022年8月12日
  • 函数传参指定默认列表与不指定默认列表 2022年8月17日
  • 2022-07-25 第二组 程梓杭 Java(9) 链表练习 2022年7月25日
  • Java递归树(构建和收集子孙节点二种方式) 2022年9月14日

发表回复

请登录后评论...
登录后才能评论

热门标签

AI (11871) aliyun (95062) Android (10391) c (14594) go (7786) google (20654) html (8304) https (10802) iPhone (21436) jd (7444) linux (18686) MD (8346) microsoft (7561) Phone (21786) python (7226) windows (18482) 人工智能 (9889) 安全 (28526) 开源 (16950) 微软 (13275) 手机 (21138) 游戏 (13254) 百度 (7189) 硬件 (14378) 美国 (20456) 苹果 (10017) 观察 (7533) 谷歌 (8726) 车 (28069) 通信 (7496)
  • 欢迎投稿
  • 隐私政策
  • 使用协议
  • 服务条款
  • 版权声明

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

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