背景说明: 1、为了防止三天打鱼两天晒网式学习 2、每日更新1-2个小知识点或者案例 3、只看和跟着做的理解程度是不一样的 4、建议一起打卡练习 5、互相督促打卡 + v:yifuqiang2021
ddt+Yaml自动化实现
安装:pip install PyYaml 说明: yaml文件是唯一一种可以和ddt模块完美搭配的文件格式 通过file_data装饰器来处理 Yaml文件本身与txt没有太大的区别,都可以用于存放字符串。 一般用于配置或者数据提供场景来进行使用 yaml数据类型的定义规范: list定义:通过- 来定义 dict定义:通过: 来定义 所有的数据如果有子元素存在,需要有缩进来规范格式
yaml读取文件与常规文件不同,通过open形成file格式的内容 基于yaml库来实现内容的识别和读取

import yaml# 读取yaml文件file = open('./data/data.yaml','r',encoding='utf-8')# 读取yaml格式的数据内容并保存原有的格式data = yaml.load(stream=file)print(type(data))

可以看到读取的数据类型是list 以及有个Warning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe 解决办法:加上Loader=yaml.FullLoader
import yaml# 读取yaml文件file = open('./data/data.yaml','r',encoding='utf-8')# 读取yaml格式的数据内容并保存原有的格式data = yaml.load(stream=file,Loader=yaml.FullLoader)print(type(data))# 使用list读取内容的方法print(data[4])


注意value前面有个空格
import yaml# 读取yaml文件file = open('./data/dict_data.yaml','r',encoding='utf-8')# 读取yaml格式的数据内容并保存原有的格式data = yaml.load(stream=file,Loader=yaml.FullLoader)print(type(data))# 使用dict读取内容的方法print(data['key'])


将字典类型的数据包在list里 子元素要注意缩进
import yaml# 读取yaml文件file = open('./data/dict_data.yaml','r',encoding='utf-8')# 读取yaml格式的数据内容并保存原有的格式data = yaml.load(stream=file,Loader=yaml.FullLoader)print(type(data))print(data)print(type(data[0]))print(data[0])

每一个字典都是单独的元素

实例:
import yaml# 读取yaml文件file = open('./data/dict_data.yaml','r',encoding='utf-8')# 读取yaml格式的数据内容并保存原有的格式data = yaml.load(stream=file,Loader=yaml.FullLoader)print(type(data))print(data)

导入from ddt import file_data 函数之前@file_data('路径/文件名.yaml')

import unittestfrom ddt import ddt, data, unpack,file_data@ddtclass UnitDdt(unittest.TestCase):@file_data('./data/data.yaml')def test_03(self,name):print(name)if __name__ == '__mian__':unittest.main()


import unittestfrom ddt import ddt, data, unpack,file_data@ddtclass UnitDdt(unittest.TestCase):@file_data('./data/dict_data.yaml')def test_03(self,name):print(name)if __name__ == '__mian__':unittest.main()

提示无法识别age 原因是因为ddt返回来的数据类型是字典,所以函数形参也要对应改变 解决方式:def test_03(self,**kwargs)

import unittestfrom ddt import ddt, data, unpack,file_data@ddtclass UnitDdt(unittest.TestCase):@file_data('./data/dict_data.yaml')def test_03(self,**kwargs):print(kwargs)if __name__ == '__mian__':unittest.main()

import jsonimport unittestimport requestsimport jsonpathfrom ddt import ddt,file_data@ddtclass Demo(unittest.TestCase):@file_data('./data/user.yaml')def test_1(self, user, msg):url = 'http://39.98.138.157:5000/api/login'data = {'username': user['username'],'password': user['password']}res = requests.post(url=url, json=data)print(res.text)# 基于jsonpath提取响应结果msgres_json = json.loads(res.text)msg_result = jsonpath.jsonpath(res_json,'$..msg')print(msg_result[0])# 通过获取的结果与yaml文件msg比对断言校验self.assertEqual(msg_result[0],msg)if __name__ == '__main__':unittest.main()

yaml 安装:pip install PyYaml 数据类型的定义规范: list定义:通过- 来定义 dict定义:通过: 来定义 所有的数据如果有子元素存在,需要有缩进来规范格式 数据的读取: 读取yaml格式的数据内容,会保存原有的格式 file = open('路径/文件名.yaml','r',encoding='utf-8') data = yaml.load(stream=file,Loader=yaml.FullLoader) yaml+ddt 导入from ddt import file_data 函数之前@file_data('路径/文件名.yaml') 应用场景 准备配置文件的数据或者提供特定的测试数据准备
文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




