【接口自动化_11课_框架实战:基于封装的框架进行实战演练-下】

目标: 在原有基础上进行框架优化,本内容不做强制要求,了解即可。

1.  Faker(伪造器)模块生成数据

2.  实战:结合框架动态生成请求数据

3.  实战:响应进行动态断言处理

一、  Faker(伪造器)模块生成数据

1、对faker对象,需要设置语言

name这个方法,是faker这个类本身的属性。方法都是类里提供的,不是随便写的

2、使用:快速随机生成伪造数据

 

3、常见用法

 

4、大量生成数据 --通过循环

5、处理空格

正常运行的英文名字,中间会有空格

需要做一个拼接的动作

class ReqDataDriver():
    def get_name(self):
        """
        获取用户名
        @return:
        """
        data = faker_data.name()
        # 以空格分割,并且合并
        return ''.join(data.split())

处理后的结果: 

 

二、实战:结合框架动态生成请求数据

1、通过faker方法去进行封装对应的获取数据的方法

2、维护一个文件,告诉Faker,需要生成哪些数据。

将请求数据驱动文件,与告知框架(faker)要生成的数据文件,做映射 。可以通过反射的方式

3、写一个方法: 执行之前生成数据。

1)第一步:读取yaml文件,获取要生成数据 :

{

regName:get_name,

regPhone: get_Phone

}

#读取yaml文件,
def GenerateData():
    # 由于这里的file_path和read_yaml()方法本身的参数路径不一致,所以这里需要专门指定一下路径
    data = FileDataDriver.read_yaml(file_path="./data/DriverData/DriverData.yaml")

    all_data = {}
    for key, value in data.items():
        #getattr反射(实例化的对象, 方法或者属性名)
        re_value = getattr(REQDATADRI, value)()
        all_data.update(
            {key: re_value}
        )

    return all_data

2)第二步:循环遍历,生成对应的数据并且组成一个新的数据字典。setup_class

 三、实战:响应进行动态断言处理

1、excel维护数据源:[{},{},{}]

{ "errorMsg":"昵称判断", 
"target": "$.data.nickname", # 实际结果,可以是jsonpath 也可以是正则 
"type":"equals", # 对比符号 
"value": "哈米老师" # 期望结果 
}

2、写断言的工具类---AssertUtils.py

第一步: 断言有多个场景:等于、不等于、包含... (断言方法先给写好)-AssertUtils.py

3、核心执行器-添加代码【遍历调用断言的工具类里的断言方法】

 

from P11_PytestFrame.Common.AssertUtils import assert_exec

#响应多个数据断言
        for assert_option in eval(CaseData.get("assertOptions", '[]')):
            # 5.1 获取目标值
            target_value = None
            #如果对应的头的 $.则意味着这个是JSONpath提取
            if assert_option["target"].startswith("$."):
                # jsonpath 提取
                target_value = self.ak.get_text(res.json(), assert_option["target"])
            else:
                # 正则提取--不常用
                pattern = re.compile(assert_option["target"])
                target_value = re.findall(pattern, res.text)[0]

            # 5.2 进行判断
            assertResult = assert_exec(assert_option["type"], target_value, assert_option["value"])

            assert assertResult, "断言不通过:" + assert_option["errorMsg"]

四、扩展:上传图片问题

上传图片问题:(附加)-- 接口

读书屋上传头像功能 (2个)- 上传和提交(或者是修改)

1、第一个接口:上传--- 返回响应数据 :{msg:上传成功,path:图片路径}

2、修改接口:图片途径做为请求数据 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值