首页 > 其他分享 >ddt数据驱动中unpack和*的区别

ddt数据驱动中unpack和*的区别

时间:2024-05-20 22:52:45浏览次数:22  
标签:readCsv name -- data ddt 驱动 unpack

分析

在使用ddt导入数据的时候,会分别用到*解包和unpack,经常会把这两个认为是同一个用法,其实不是

// 我们定义一组CSV数据
null,测试数据,存放地点名称必填,请重新输入。
// 数据驱动
import csv
def readCsv():
    with open("teatdata2.csv", encoding="utf-8") as f:
        data = csv.reader(f)
        tuple1 = []
        for i in data:
            tuple1.extend(i)
        return tuple1
import unittest

from ddt import ddt, data, unpack
from csvv import readCsv

@ddt
class Test01(unittest.TestCase):
	
    # 得到数据驱动返回的内容(原封不动)
    @data(readCsv())
    def test01(self,value):
        print("test01",value)

    # 把得到的数据拆开为多个(接受的变量数量=值的数量)(只执行一次)
    @data(readCsv())
    @unpack
    def test02(self,name,test,exp):
        print("test02",name,test,exp)

     # 数据内的值依次输出(只有一个变量)(执行次数=变量数量)
    @data(*readCsv())
    def test03(self,value):
        print("test03",value)

    #依次取出数组里面嵌套的数组,再解开-->参数取决于数组的数组内的元素
    @data(*readCsv())
    @unpack
    def test04(self,name,test,exp):
        print("test03",name,test,exp)

if __name__ == '__main__':
    unittest.main()

在遇到数据是嵌套的时候,如: [{1,2},{3,4},{5,6}]

可以使用: @data(*@readCsv()) #-->依次得到 {1,2}-->{3,4}-->{5,6}

之后使用:.@unpack .

    • test一共会被执行三次(需要用两个变量来接收)
      • #{1,2}--解开--> 1 和2
      • #{3,4}--解开--> 3 和4
      • #{5,6}--解开--> 5 和6

总结:

@unpack是当一次性要用到数组的全部内容的时候来解开为多个变量

*会依次的得到数据内每个下标的值.

当解开后需要使用全部数值的时候就要加上@unpack

    • * 主要是对列表[]分解
    • ** 主要是对元组()分解

标签:readCsv,name,--,data,ddt,驱动,unpack
From: https://www.cnblogs.com/Zshucan/p/18202976

相关文章

  • 逆向 | 驱动挂靠进程直接读内存
    逆向|驱动挂靠进程直接读内存参考:https://cloud.tencent.com/developer/article/2358904https://github.com/Whitebird0/driver_read_and_write/blob/main/04-读写内存/ReadMemory.c代码如下:代码不长但是有坑,比如说ExAllocatePool2的参数就跟之前不一样了,这个点我调试了好......
  • VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 集成 Realtek 网卡驱动和 NVMe 驱动 (
    VMwareESXi6.7U3umacOSUnlocker&OEMBIOS集成Realtek网卡驱动和NVMe驱动(集成驱动版)UIfix此版本解决的问题:VMwareHostClient无法将现有虚拟磁盘(VMDK)附加到虚拟机请访问原文链接:https://sysin.org/blog/vmware-esxi-6-sysin/,查看最新版。原创作品,转载请保......
  • [998] Python unpacking operators (* and **)
    ref:Pythonunpackingoperators(*and**)(RECOMMENDED)ref:PythonFunctionsref:PythonUnpackDictionary:AComprehensiveGuideHerearesomecrucialthingsfortake-awayofthe unpackingoperators:Asingleasterisk * unpacksitemsfromlists,tupl......
  • 嵌入式Linux中的LED驱动控制(以野火STM32MP157开发板为例)
    在嵌入式Linux系统中,由于从硬件到软件都是自己定制的,所以很多时候需要对自己定义的设备编写驱动程序。本例就以野火STM32MP157开发板为例,讨论如何控制开发板上三个LED的亮灭。先来看一下LED部分的电路原理图,如下所示。从上图中可以看到,三个RGB颜色的二极管采用共阳接法,因此在......
  • IMX6ULL Linux内核网络驱动修改
    IMX6ULL网络驱动修改主要修改arch/arm/boot/dts/imx6ul-14x14-evk.dtsi设备树文件即可,修改方式和u-boot的设备树修改一致。硬件电路设备树修改需要修改的设备树位置:arch/arm/boot/dts/imx6ul-14x14-evk.dtsi增加复位引脚信息从上面的原理图可知网口1使用的复位引脚是GPIO......
  • 驱动通信1
    05驱动通信介绍通信流程:R3->符号链接->设备对象->驱动对象->驱动功能驱动通信实质上是设备通信设备是挂在驱动上的DeviceObject上面的所以我们看一下设备对象可以参考微软官方文档kd>dt_DEVICE_OBJECTntdll!_DEVICE_OBJECT+0x000Type:Int2B//类型(设......
  • 驱动内存加载[理论]
    07驱动内存加载驱动加载介绍内存驱动加载不需要签名当双击一个PE程序的时候发生了什么1.通过explorer.exe(资源管理器)定位到双击的文件2.资源管理器通过CreatProcess创建进程3.创建进程的时候开辟一块空间此时在R3(PEB)和R0(填充基址)需要的地方挂上R3的物理页4.通过文......
  • 驱动通信2
    06通信封装缓冲区模式看这段代码#defineTESTCTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS)其中的METHOD_BUFFERED字符就是缓冲区模式f12进去后可也发现有三种缓冲区模式#defineMETHOD_BUFFERED0//缓冲#defineMETHO......
  • 驱动内存加载[实战]
    08驱动内存加载[项目]目标:实现一个加载器,让驱动不落地加载DOS头和NT头DOS头kd>dt_IMAGE_DOS_HEADER-r3ntdll!_IMAGE_DOS_HEADER+0x000e_magic:Uint2B+0x002e_cblp:Uint2B+0x004e_cp:Uint2B+0x006e_crlc......
  • 驱动基础
    01HelloWorld驱动基础知识驱动不是进程,本质上和DLL一样是模块NT驱动:如果绑定设备,不能卸载WDM驱动:热拔插,可以更新卸载WDF驱动:简化开发,相当于事件驱动机制,依赖环境KWDF驱动:内核驱动框架UWDF驱动:用户驱动框架(支持在用户下运行的)学的主要是NF和WDM驱动驱动内存不共享驱动文......