• 自动化测试之 ddt 驱动 yaml/yml 文件


    一、上篇文章我们使用了 unittest + ddt 驱动 json 文件做数据驱动测试,本篇文章我们采用 unittest + ddt 驱动 yaml/yml 文件来实现数据驱动测试,话不多说上源码。。。

    • ddt.file_data:装饰测试方法,参数是文件名。文件可以是 json 或者 yaml 类型。
      • 注意:如果文件是以 “.yml”或者".yaml" 结尾,ddt 会作为 yaml 类型处理,其他文件都会作为 json 文件处理。  

      • 如果文件是列表,列表的值会作为测试用例参数,同时,会作为测试用例方法名后缀显示。    

      • 如果文件是字典,字典的 key 会作为测试用例方法的后缀显示,字典的 value 会作为测试用例参数。  

    二、安装 yaml 模块

    • pip install pyyaml
    • 注意:安装的包名为 pyyaml,但是导入的是 yaml
    • yaml 文件可以通过 open 函数来读取,然后通过 load() 方法转换成字典
    • 如下图实例

    import yaml
    
    f = open("ddt_data.yaml", encoding="utf8")
    print(yaml.load(f))
    f.close()
    
    # 运行结果如下
    """
    [{
    'url': 'http://cms.duoceshi.cn/xxx/xxxx/xxxxx', 
    'method': 'post', 
    'header': {'Content-Type': 'application/x-www-form-urlencoded'}, 
    'params': {'userAccount': 'admin', 'loginPwd': 123456}
    }]
    """
    • 如下图为我的数据文件,且文件中数据类型为字典

    import requests
    import unittest
    from ddt import ddt, file_data
    
    @ddt
    class CmsLogin(unittest.TestCase):
    
        @file_data("ddt_data.yaml")
        def testcase(self, method, url, header, params):
            res = requests.request(method, url, headers=header, data=params)
            print(res.text)
    
    if __name__ == '__main__':
        unittest.main()
    
    # 运行结果如下
    """
    Ran 2 tests in 0.215s
    
    ..
    {"code":"200","msg":"登录成功!","model":{}}
    {"code":"400","msg":"登录帐号不存在!","model":{}}
    ----------------------------------------------------------------------
    """
    • 如下图为我的数据文件,且文件中数据类型为列表

    import yaml
    from ddt import ddt, data, unpack
    
    def get_yml_data(yml_file):
        with open(yml_file, encoding="utf8") as f:
            return yaml.load(f)
    
    @ddt
    class CmsLogin(unittest.TestCase):
    
        @data(*get_yml_data("ddt_data.yml"))
        @unpack
        def testcase(self, name, age):
            print(name + "----" + str(age))
    
    if __name__ == '__main__':
        unittest.main()
    
    # 运行结果如下
    """
    Ran 3 tests in 0.000s
    
    ...
    Evan----19
    Lvan----20
    Alex----21
    """
  • 相关阅读:
    GoldenGate 19.1实时文本文件加载攻略
    windows 10 excel 打开超连接提示 组织策略阻止...
    验证ogg同步数据库表无主键表且目标表包含隐藏字段
    配置ogg从Oracle到PostgreSQL的同步复制json数据
    pi
    GoldenGate 19.1 发布
    ogg同步DDL时,源和目标端表空间名称不同的解决思路
    总目录索引(开发精华总结)
    Spring Cloud Nacos分布式配置中心
    Spring Cloud Nacos&Feign负载均衡
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/14099918.html
Copyright © 2020-2023  润新知