requests---通过file_data方法请求yaml数据

 前面介绍了通过ddt的方法请求yaml数据,当时我们用的方法是直接ddt.data的方法去读取的,也非常简单,今天我们通过ddt方法中的file_data读取数据

file_data

file_data属于ddt库中的一个方法,主要作用在安静这边理解就是读取json或者是yaml结尾的文件。

源码:

def file_data(value):
    """
   方法装饰器添加到您的测试方法中。
应该添加到' ' unittest.TestCase ' '实例的方法中。
' ' value ' '应该是相对于文件目录的路径
包含修饰过的' ' unittest.TestCase ' '。该文件
应该包含JSON编码的数据,可以是列表或
字典
对于列表,列表中的每个值对应一个
测试用例,值将连接到测试方法
的名字。
对于dict,键将用作名称的后缀
测试用例,值将作为测试数据提供。

    """
    def wrapper(func):
        setattr(func, FILE_ATTR, value)
        return func
    return wrapper

小试牛刀

这里还用上次的那个接口来做。详情见:requests---通过yaml+ddt封装测试数据

yaml文件

配置测试用例。

test01:
  -
    url: http://apis.juhe.cn/simpleWeather/query
    test_name: 正确的key和正确的city
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  上海
    cake: 查询成功
  -
    url: http://apis.juhe.cn/simpleWeather/query
    test_name: 正确的key和错误的city
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  未知地
    cake: 暂不支持该城市

执行文件

这里安静先对请求的接口进行封装,然后在通过file_data进行读取yaml文件,因为这里又两条用例,所以通过for依次进行读取。最后进行断言调试

import requests
import ddt
import unittest

@ddt.ddt
class Test(unittest.TestCase):
    # 封装接口
    def select(self,url,key,city):
        data = {
             "key":key,
            "city":city
        }
        r = requests.post(url,data=data)
        return r
    # 请求数据
    @ddt.file_data('data.yaml')
    def test_01(self,value):
        for  i in value:
            url = i.get('url')
            key = i.get('key')
            city = i.get('city')
            cake = i.get('cake')
            result = Test().select(url=url,key= key,city= city).text
            self.assertIn(cake,result)

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

这里安静通过file_data读取yaml数据,我们也可以通过file_data进行读取json文件,然后测试数据放入到json文件中执行

原文地址:https://www.cnblogs.com/qican/p/13297917.html