【问题描述】

pytest + allure 接口自动化测试场景,遇到 “数据新增后立刻查询,经常查不到” 的问题。

  1. 调用 “新增” 接口,插入一条数据(如结构体、空间、用户等,字段为随机生成的名称,确保唯一)。
  2. 随后调用 “查询” 接口,带新增时的唯一字段查询这条数据。
  3. 发现有概率查不到(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、缓存、权限等常规问题;


大佬们怎么解决这个问题


↙↙↙阅读原文可查看相关链接,并与作者交流