unittest DDT与yaml

Yaml是什么:
Yaml与json类似,都是用来描述数据的一种文件格式
Yaml有自格式化的特点,风格与python一致
Yaml与xml、json一样,具有自我描述性
Yaml与unittest有着完美的支持

Yaml与json对比(左边是json,右边是yaml):
在这里插入图片描述
在这里插入图片描述

Yaml的基础语法:
1.YAML使用可打印的Unicode字符,建议使用UTF-8编码
2.使用空白字符(不能使用Tab)分层,同层元素左侧对齐
3.Yaml文件使用.yaml或者.yml作为扩展名
4.单行注解由井号(#)开始,可以出现在行中任意位置
5.每个清单成员以单行表示,并用短杠+空白(- )起始
6.每个杂凑表的成员用冒号+空白(: )分开键和值
7.字符串一般不使用引号,但必要的时候可以用引号框柱
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yaml数据类型中常用:整数、小数、空值、布尔值、字符串、日期
在这里插入图片描述
Yaml的其他语法:初学者用不到
在这里插入图片描述

unittest中使用Yaml,代码示例:

'''
ddt 数据驱动测试
将数据从py文件中分离,真正做到数据与代码分离,便于维护之-----
yaml文件的数据读取:要先安装yaml三方库(pip install pyyaml)
'''



import unittest
from ddt import ddt,data,unpack,file_data



# 使用yaml数据文件
@ddt
class TestMyCase(unittest.TestCase):  # 需要继承父类unittest.TestCase

    # 单一参数的数据驱动
    @unittest.skip
    @file_data("phone.yaml")
    def test_1(self,phone):
        print('测试手机号注册流程:',phone)



    # 多参数的数据驱动
    # 注:file_data在处理多个参数传递需求的时候,无法满足要求,就算加上unpack也不能自动解包,解决方法见test_3
    @unittest.skip
    @file_data("userdata.yaml")
    @unpack  # 装饰器:解包
    def test_2(self,username,password=None):
        print('测试用户登录流程:',username,password)


    # 在yaml数据文件中采用对象的定义方式来定义数据内容,见文件userdata1.yaml(推荐使用test_3中的方法来定义数据)
    # 注意:yaml数据文件的key和程序测试方法的入口参数必须同名,如本例中为username和password,如果不同名,解决方法见test_4
    @unittest.skip
    @file_data("userdata1.yaml")
    def test_3(self, username, password=None):
        print('测试用户登录流程:', username, password)


    # 如果key和入口参数不一致,处理方法如下(使用到的文件userdata1.yaml,将入口参数转化成字典,再通过获取字典中的值拿到用户名和密码):
    @file_data("userdata2.yaml")
    def test_4(self, **userdata):
        username = userdata['name']
        password = userdata.get('pwd')   # 等同于password = userdata['pwd']
        print('测试用户登录流程:', userdata)
        print('测试用户登录流程:', username,password)




if __name__ == '__main__':
    unittest.main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值