需求:完成投资的业务流测试。

步骤: 审核项目、投资等步骤依赖于前面登录、添加项目的操作

 

 思路:

1.对数据进行预处理,接口访问。数据替换,字符串转为字典,动态获取类的属性

2.访问接口,得到接口的返回结果

3.从响应结果中读取下面接口需要的数据,设置为同名的属性:#invest_token#

4.断言

 

 未封装前代码示例:

    @data(*cases)
    def test_invest(self, info):
        # 1,对数据进行预处理 , 接口访问。 数据替换, 字符串转化成字典
        # prev_data(info) -> info

        json_data = info['json']
        headers = info['headers']
        # 完成替换
        json_data = self.replace_data(json_data)
        headers = self.replace_data(headers)

        headers = json.loads(headers)
        json_data = json.loads(json_data)
        expected = json.loads(info['expected'])
        extractor = {}
        if info['extractor']:
            extractor = json.loads(info['extractor'])

        # 2,访问接口,得到接口的返回结果。
        resp = requests.request(method=info['method'],
                         url=config.host + info['url'],
                         headers=headers,
                         json=json_data).json()

        # 3. 响应结果当中读取接下来接口需要的数据,设置成#同名的属性 #investor_token
        # 获取投资人登录的 id 和 token
        # 把 id 设置成 APICase.investor_member_id
        # 把 token 值设置成 APICase.investor_token
        # 通过 jsonpath $..id  $..token
        # 设置属性,属性名称也要写到 excel,  investor_member_id
        for prop_name, jsonpath_expression in extractor.items():
            value = jsonpath(resp, jsonpath_expression)[0]
            # 设置 APICase 实例属性还是类属性
            setattr(APICase, prop_name, value)

        # 4, 断言
        for key, value in expected.items():
            self.assertEqual(value, resp[key])

 

封装过程:

步骤1:登录的账号可以从配置文件获取,每次执行用例前执行一遍

 

 步骤2 :进行数据的预处理,在base.API中封装好方法,在测试类中再继承base.API

 

 

步骤3:访问接口,得到接口的返回结果

 

 

步骤4:提取数据,设置下个接口需要的同名属性,以便下个接口调用时能动态获取类的属性

 

 

 

 

步骤5:封装断言

 

 

步骤6:完整封装所有步骤

 

 

posted on 2021-11-06 15:40  熊猫星人  阅读(73)  评论(0编辑  收藏  举报