前面介绍了通过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文件中执行
来源:oschina
链接:https://my.oschina.net/u/4380905/blog/4456669