@startuml
:需求分析;
:测试设计;
:测试用例评审;
:测试执行;
:验收;
:预发布;
:上线;
@enduml
scale 700*500
autonumber
participant 测试人员 as tester
participant 登录模块 as login
participant 管理后台 as admin
participant 客户端 as customer
tester -> login: 编写脚本
login -> admin: 登录接口
admin -> customer: 商品上架接口
admin -> customer: 商品查询接口
customer -> customer: 加购接口
customer -> tester: 测试断言
@startmindmap
*[#Orange] 接口测试思路
**[#lightblue] 基本功能流程测试(p1)
***[#lightgreen] 冒烟测试
***[#lightgreen] 正常流程覆盖测试
**[#lightblue] 基于输入域的测试(p2)
***[#lightgreen] 边界值测试
***[#lightgreen] 特殊字符校验
***[#lightgreen] 参数类型校验
***[#lightgreen] 必选参数校验
***[#lightgreen] 组合参数校验
***[#lightgreen] 有效性校验
***[#lightgreen] 默认值校验
***[#lightgreen] 排重逻辑
left side
**[#lightblue] 接口幂等性
***[#lightgreen] 重复提交
**[#lightblue] 故障注入
***[#lightgreen] Redis故障降级测试
***[#lightgreen] 服务故障转移测试
**[#lightblue] 线程安全测试
***[#lightgreen] 并发测试
***[#lightgreen] 分布式测试
***[#lightgreen] 数据库读写安全测试
@endmindmap
title 编写思路
@startmindmap
* 思路
** 获取接口信息
*** swagger 接口文档
*** 前端抓包
** 单步调通接口后,根据业务流程串联起来
** 添加断言,确认流程正常
@endmindmap
- 上架商品
- 查询商品列表,获取商品 ID
- 查询商品详情,获取商品库存 ID
- 加入购物车
- 使用 pytest parametrize 装饰器实现商品名称的参数化
@pytest.mark.parametrize("goods_name", ["hogwarts1", "hogwarts2"])
"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
# 日志配置
import logging
# 创建logger实例
logger = logging.getLogger('simple_example')
# 设置日志级别
logger.setLevel(logging.DEBUG)
# 流处理器
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 日志打印格式
formatter = logging.Formatter\
('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 添加格式配置
ch.setFormatter(formatter)
# 添加日志配置
logger.addHandler(ch)
# 删除操作
def teardown(self):
url = "http://litemall.hogwarts.ceshiren.com/admin/goods/create"
data = {
"id": self.goods_id,
}
r = requests.post(url=url, json=data)
logger.debug("删除商品响应:"+json.dumps(r.json(), ensure_ascii=False, indent=2))
# 生成报告信息
pytest test_add_to_cart.py --alluredir=./report
# 生成报告在线服务,查看报告
allure serve ./report/
1.token传递 在类里面,不同方法里调用变量要实例化变量;要放到接口请求前把token所以要放到setup_class
2.下一个接口用上一个接口的字段
3.清理数据放到teardown_class
4.日志优化 序列化方法
5.参数化传递参数
![]()