requests---通过yaml+ddt封装测试数据

整体思路

我们主要思想就是进行测试数据的分离:

1、一个写数据的地方

2、一个读数据的文件

3、编写测试用例

封装读取Yaml

简单的进行对读取yaml进行封装,方便我们后面调用

import yaml
import os
class   GetYaml():
    def __init__(self,file_path):
        # 判断文件是否存在
        if os.path.exists(file_path):
            self.file_path = file_path
        else:
            print('没有找到%s文件路径'%file_path)
    
        self.data = self.read_yaml()
    def read_yaml(self):
         with open(self.file_path,'r',encoding='utf-8')as f:
            p = f.read()
            return p
    def get_data(self,key=None):
        result = yaml.load(self.data,Loader=yaml.FullLoader)
        # 判断key是否存在
        if key == None:
            return result
        else:
            return result.get(key)

if __name__ == '__main__':
    read_yaml = GetYaml('data.yaml')
    xx = read_yaml.get_data('test_case')
    print(xx)

写入测试数据

我们将测试的数据写入到yaml中

test_case:  查询
url: http://apis.juhe.cn/simpleWeather/query

test01:
  -
    test_name: 正确的key和正确的city
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  上海
    cake: 查询成功
  -
    test_name: 正确的key和错误的city
    key:  331eab8f3481f37868378fcdc76cb7cd
    city:  未知地
    cake: 暂不支持该城市

test02:
  -
    test_name: 错误的key值和正确的city
    key:  331eab8f3481f37868378fcdc76cb7c
    city: 上海
    cake: 错误的请求KEY
  -
    test_name: 错误的key值和错误的city
    key: 331eab8f3481f37868378fcdc76cb7c
    city: 未知地
    cake: 错误的请求KEY

完成数据读取

读取yaml已经全部封装好了,然后数据也填写完成了,接下来就需要我们编写测试用例了。这里安静用到了ddt的格式进行读取yaml的数据,当然我们也可以使用ddt.file_data()的方法进行读取

这里分别写了两种获取yaml的数据内容

import os,requests
import ddt
import unittest
from Interface.A3 import GetYaml
# 获取到文件路径
file = os.path.join(os.path.dirname(__file__), 'data.yaml')
yaml_data = GetYaml(file)
result  = yaml_data.get_data()
url = result['url']
test_01 = result['test01']

@ddt.ddt
class Test(unittest.TestCase):
    # 封装一个查询天气
    def select(self,key,city):
        data = {
             "key":key,
            "city":city
        }
        r = requests.post(url,data=data)
        return r

    @ddt.data(*test_01)
    def test01(self,yaml_data):
        print('当前测试用例名称:%s'%yaml_data['test_name'])
        print('city:%s;key:%s'%(yaml_data['city'],yaml_data['key']))
        result = self.select(city=yaml_data['city'],key=yaml_data['key'])
        self.assertIn(yaml_data['cake'],result.text)

    @ddt.data(*result['test02'])
    def test02(self,data):
        print('当前测试用例名称:%s'%data['test_name'])
        print('city:%s;key:%s'%(data['city'],data['key']))
        result = self.select(city=data['city'],key=data['key'])
        self.assertIn(data['cake'],result.text)

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

运行代码会发现用例已经执行完成了。
在这里插入图片描述
这里简单的对yaml数据进行分离,可能写的不是很完善,大佬们看到后勿喷。

点赞关注~~加入我们,了解更多,642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值