准备工作完成后,就是用例的规划了。我准备按照这个思路来:
- 先梳理出基础的业务流程,找到相关接口,先写这些接口的用例,写完再根据业务流程做接口组合测试。
接口主要分为两类:WEB页面调用后端的接口,提供给第三方的业务接口。
提供给第三方的业务接口,之前已经用RF写过了,并且集成到了jenkins。
这次主要就是处理WEB页面调用后端的接口,从鉴权的角度,这类接口分成2小类,需要鉴权or NOT。
因为只有我一个人,所以肯定是优先冒烟测试先完成。
整体的鉴权相关设计思路: - 登录接口不要鉴权,该接口返回的token是除去它以外全部接口所必须的。所以用户就弄两个,一个用来测试登录,一个作为预置的测试账户,作为全局token获取用户。
- 获取token放在tests目录下的conftest.py中,结果存到redis中失效时间用token的有效期。存之前先看能不能取出来,能取到就跳过登录获取token,直接返回取到的token。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 小橙子的爸比 (279453094@qq.com)
# @Version : 1.0
# @Update Time : 2025/1/4 下午7:44
# @File : conftest.py
# @IDE : PyCharm
# @Desc : 文件描述信息
import json
import httpx
from jsonpath import jsonpath
from db.database_factory import DatabaseFactory
from utils.nb_logger import httpx_log
from utils.nb_logger import pytest_log
import pytest
from config.env_config import EnvInfo, ApiUri
def pytest_runtest_makereport(item, call):
"""钩子函数收集失败的断言信息存入日志文件"""
if call.excinfo is not None:
msg = {
"module": item.location[0],
"function": item.name,
"line": item.location[1],
"message": str(call.excinfo.value).replace("\n", ":")
}
pytest_log.error(json.dumps(msg, indent=4, ensure_ascii=False))
headers = EnvInfo().stitching_headers()
@pytest.fixture(scope="session", autouse