接口自动化_UnitTest框架(yaml,ddt)10


yaml文件的读取

#导包
import yaml

'''
yaml读取文件与常规文件不同,通过open形成file格式的内容,基于yaml库来实现内容的识别和读取
./data/data_dict.yaml--->yaml文件放的路径位置
'''

#封装函数
def yamlRead(path):
file = open('./data/data_dict.yaml', 'r', encoding='utf-8')
# 读取yaml格式的数据内容并保存原有的格式
data = yaml.load(stream=file, Loader=yaml.FullLoader)
return data

ddt模块的使用
import unittest
# ddt模块的导入
from ddt import ddt, data, unpack, file_data

'''
ddt的使用:
1. 在需要调用ddt模块的类名处,通过装饰器的形式声明调用
2. ddt驱动文件内容,除去Yaml之外,其他的文件都需要自行定义函数来驱动
读写文件内容进行数据驱动其本质还是驱动的数据
3. yaml文件是唯一一种可以和ddt模块完美搭配的文件格式,通过file_data装饰器来处理
'''
'''
在ddt的数据驱动中,如果data装饰器设置有多个值,那么就会运行多次测试用例。
data装饰解析机制:
@data('虚竹', '贾嫣')
基于,来进行解析数据,获得'虚竹'和'贾嫣'两个不同的字符串,data会认为本次用例
将会执行两次,一次传入'虚竹',一次传入'贾嫣'
例如登录:
多组不同数据,执行同一个流程
如果单次要传入多个数据,就需要对数据内容进行打包:
例如:
@data(['虚竹', 18], ['贾嫣', 10])
基于,进行解析,会获得['虚竹', 18]和['贾嫣', 10]数据内容
unpack与data的解析机制是一样的,都是依照同样的规则进行解析内容,
只是unpack解析的是data已经解析之后的数据内容
data解析之后确定用例的执行次数
unpack只是将本次执行的数据进行解析
'''
@ddt
class UnitDdt(unittest.TestCase):
  @file_data('./data/data_dict.yaml')
  def test_01(self, **kwargs):
  print(kwargs)

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