跳转至

QA

Mock

Q:你在项目里使用Flask动态拉起模拟桩来规避外围系统不稳定。

在高并发或多流水线并行执行时,你是如何解决端口冲突和桩数据隔离问题的?

A:【问题定位】→【解决方案】→【代码/步骤】→【避坑】→【效果】

端口冲突

问题定位:在流水线(如Jenkins)中,多个Job同时触发执行,若硬编码端口,会导致Address already in use

解决方案:不指定固定端口,利用socket库在启动前申请一个空闲端口,并将其作为启动参数传给Flask。

数据隔离

问题定位:不同测试用例可能对同一个接口有不同的期望返回。并发执行时,如果不做隔离,会出现“桩数据污染”。

解决方案:框架在发送请求时生成唯一的Mock-ID(UUID),并在请求头中携带。

Flask桩端维护一个内存映射表(如Redis或Dict),根据请求头中的ID动态返回对应的Mock数据。