1.测试充值接口
想要测试充值接口,那肯定是要先登录账号后,才可以进行充值。查看接口文档,可以看到我们需要得到token和member_id字段值
测试步骤:
- 访问登录接口,得到token,member_id
- 把token添加到headers中
- 把member_id添加到请求数据当中
- 访问充值接口
- 进行余额校验
编写代码之前,需要先把测试用例编写好,编写用例时需要参考接口文档来确定请求头和参数需要的字段内容,然后借用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])
运行结果:
编写代码中遇到的问题:
-
excel_data = read_excel(file_name=config.cases_dir, sheet_name='recharge')读取的sheet表格名字一定记住更换
-
@data(*excel_data)此行代码的*一定不要忘记,否则程序报错,找了半天问题
- 请求接口的代码一定要加上.json()
-
member_id = str(login_resp['data']['id'])一定要把member_id转化成字符串,因为member_id是int
-
for key, value in expected.items(): self.assertEqual(value, recharge_resp[key])断言的代码容易出错,要么直接复制之前写的没问题,要么自己写的时候一定要注意,再不行就用V3版本的断言
虽然测试用例编写好了,但是可以看出代码太多,可重复利用的代码也不少,因此接下来我们需要进行以下几个方面的优化:
- 一个用例的代码太多-->封装函数或者类解决
- 响应数据的获取-->jsonpath