pytest + allure 接口自动化测试场景,遇到 “数据新增后立刻查询,经常查不到” 的问题。
data
返回空列表),但后端日志/数据库其实数据已插入成功。
@allure.feature("")
def test_add_and_query():
name = gen_name()
# Step1: 新增
add_api({"name": name})
# Step2: 查询(带重试)
for retry in range(30):
res = query_api({"name": name})
data_list = res.json().get("data", [])
if isinstance(data_list, list) and data_list:
break # 查到了
print(f"第{retry+1}次未查到,1 秒后重试")
time.sleep(1)
else:
assert False, f"新增后查不到,重试 30 次依然无数据,name={name}"
---
### 【补充背景】
* 查询接口权限没问题,单独调用都能查出来;
* 数据库/后端日志确认**新增已成功**;
* 问题只在自动化批量跑用例时偶发,手动测接口没有问题;
* 用了较高的重试次数和等待时间,依然可能失败;
* 用例完全串行无并发,不涉及多线程;
* Postman 跑同样集合不会遇到这种问题。
---
### 【想请教大家】
* 这种情况可能是什么原因?是写法问题、环境延迟,还是接口本身设计问题?
* 有没有更稳妥的自动化写法?如何优化“新增后立刻查”的自动化测试场景?
---
### 【额外说明】
* 接口/用例均已排查 token、缓存、权限等常规问题;
大佬们怎么解决这个问题