项目结合数据库校验

本文介绍了在测试充值接口时如何进行接口校验和数据库余额校验。首先,详细阐述了编写测试用例的过程,包括登录、获取token和member_id,以及断言的注意事项。接着,讨论了代码优化,如将登录接口封装为类,并利用jsonpath处理响应数据。在余额校验部分,分别展示了接口返回数据和数据库查询的校验方法,强调了敏感信息的安全存储和Decimal类型在精度控制上的作用。最后,总结了接口关联测试的方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.测试充值接口

想要测试充值接口,那肯定是要先登录账号后,才可以进行充值。查看接口文档,可以看到我们需要得到token和member_id字段值

测试步骤:

  1. 访问登录接口,得到token,member_id
  2. 把token添加到headers中
  3. 把member_id添加到请求数据当中
  4. 访问充值接口
  5. 进行余额校验  

编写代码之前,需要先把测试用例编写好,编写用例时需要参考接口文档来确定请求头和参数需要的字段内容,然后借用postman来编写预期结果

自动化测试用例代码如下:

import unittest
import requests
import json
from config import config
from ddt import ddt, data
from common.excel import read_excel

# 得到测试数据
excel_data = read_excel(file_name=config.cases_dir, sheet_name='recharge')


@ddt
class TestRecharge(unittest.TestCase):
    @data(*excel_data)
    def test_recharge(self, info):
        # 访问登录接口
        headers = {"X-Lemonban-Media-Type": "lemonban.v2"}
        json_data = {"mobile_phone": "15100002222", "pwd": "12345678"}
        login_resp = requests.request(url=config.host + 'member/login',
                                      method='post',
                                      headers=headers,
                                      json=json_data).json()  # 一定要注意加上.json,否则会报错
        # 获取member_id和token
        member_id = str(login_resp['data']['id'])  # id是个整数类型,所以要转换成str,才方便下边替换
        token = login_resp['data']['token_info']['token']
        # info替换标记的测试数据
        json_data = info['json']
        headers = info['headers']
        # 替换请求体
        if "#member_id#" in json_data:
            json_data = json_data.replace("#member_id#", member_id)
        # 替换请求头
        if "#token#" in headers:
            headers = headers.replace("#token#", token)
        # 转化成字典类型
        json_data = json.loads(json_data)
        headers = json.loads(headers)
        expected = json.loads(info['expected'])
        # 访问充值接口
        recharge_resp = requests.request(url=config.host + info['url'],
                                         method=info['method'],
                                         headers=headers,
                                         json=json_data).json()
        # 断言
        for key, value in expected.items():
            self.assertEqual(value, recharge_resp[key])

运行结果:

 编写代码中遇到的问题:

  1. excel_data = read_excel(file_name=config.cases_dir, sheet_name='recharge')读取的sheet表格名字一定记住更换
  2. @data(*excel_data)此行代码的*一定不要忘记,否则程序报错,找了半天问题
  3. 请求接口的代码一定要加上.json()                                                                                     
  4. member_id = str(login_resp['data']['id'])一定要把member_id转化成字符串,因为member_id是int
  5. for key, value in expected.items():
        self.assertEqual(value, recharge_resp[key])断言的代码容易出错,要么直接复制之前写的没问题,要么自己写的时候一定要注意,再不行就用V3版本的断言

虽然测试用例编写好了,但是可以看出代码太多,可重复利用的代码也不少,因此接下来我们需要进行以下几个方面的优化:

  • 一个用例的代码太多-->封装函数或者类解决
  • 响应数据的获取-->jsonpath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值