数据驱动应用

数据驱动:

分隔代码块和数据。再unittest中通过ddt实现,ddt(data driver test数据驱动测试)

1、数据驱动的第一种方式 data传参

 

 通过data传一个list集合,unpack解包,参数有值

@是python语法,装饰器

可以多个用例一起执行

2、数据驱动的第二种方式  通过.txt传测试用例数据,如果是csv等也是open file这样的形式

要做元组的形式,*,不定长参数,不限制参数个数

*以元组的形式去解读

**以字典的形式去解读

3、数据驱动第三种方式 可以直接读取yaml文件

yaml的安装:pip install pyyaml

 代码:

#导入unittest包
import unittest
from ddt import ddt,data,unpack,file_data
#读文件的方法,放在类的外面
def read_file():
    file=open('data.txt','r',encoding='utf-8')
    li=[]
    #每行遍历
    for line in file.readlines():
    li.append(line.strip('\n').split(','))
    file.close()
return li
@ddt
class UnitDemo(unittest.TestCase):
    #前置条件
    #->Noneunittest更新以后默认在调用**补全,可以去掉不影响
    def setUp(self)->None:
        print('setUp')
    #后置条件
    deftearDown(self)->None:
        print('tearDown')
    #传入的参数是字典格式
    @file_data('data.yaml')
    def test_1(self,**user):
        username=user.get('username')
        password=user.get('password')
        #print(username+"+"+password)
        print(password)
        print(username)
if__name__=='__main__':
    #运行unittest测试用例
    #正常测试用例是前后关联的,如果不使用main函数调用,直接执行很可能会报错
    unittest.main()

 @ddt不可缺少,每一种数据驱动都需要@ddt

 为什么file_data不需要加unpack

unpack的作用是解析list,list.split(',')

字典里面可以通过key直接查到value,字典里面不会有一样的值 

不通过ddt进行yaml文件读取

1、通过文件读取到测试数据read_file()方法,可以读取.txt,保存到list,通过@data(*read_file())函数解析数值,通过@unpack对数据进行二次拆包,拆完之后传递到方法中运行

2、使用file_data读取yaml文件,@file_data('test.yaml'),这样是不管yaml文件中有多少条数据,我们都可以通过file_data直接解析,不需要@unpack拆包

yaml文件读取数据操作:

代码:

import yaml

file=open('test.yaml',encoding='UTF-8')
#loader=yaml.FullLoader必须要添加
res=yaml.load(file,Loader=yaml.FullLoader)

注意事项:python3导入pyyaml,如下图:

使用file_data读取yaml文件,@file_data('test.yaml'),

传入的参数是字典形式,不需要添加@unpack进行数据解包

@file_data是做文件的读取,里面封装的方法如果读取yaml文件就是上面的open和yaml.load方法

如果读取其他形式的文件,比如.txt 等可能有其他操作

猜你喜欢

转载自blog.csdn.net/Lynn1111111/article/details/122579892