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

1、上篇文章咱们使用了 unittest + ddt 驱动 json 文件作数据驱动测试,本篇文章咱们采用 unittest + ddt 驱动 yaml/yml 文件来实现数据驱动测试,话很少说上源码。。。json

  • ddt.file_data:装饰测试方法,参数是文件名。文件能够是 json 或者 yaml 类型。
    • 注意:若是文件是以 “.yml”或者".yaml" 结尾,ddt 会做为 yaml 类型处理,其余文件都会做为 json 文件处理。  app

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

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

2、安装 yaml 模块post

  • 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
"""
相关文章
相关标签/搜索