现在的用例平台,生成的用例比较宽泛,现在针对具体的需求点生成对应的用例
所以在下面新增需求点,点击旁边的生成用例按钮,会根据之前上传的需求文档来写测试用例,
点击生成用例 ,把需求点传给消息队列
下游去获取文档
新建2个需求下发的topic,分别是
ai-requirement-generate: ai.requirement.generate
ai-requirement-result: ai.requirement.result
报错
pika.exceptions.ChannelClosedByBroker: (404, "NOT_FOUND - no queue 'ai.requirement.generate' in vhost '/'")
先启动上游
记得在上游要添加实例化
@Value("${mq.queue.ai-requirement-generate:ai.requirement.generate}")
private String aiRequiretQueue;
@Value("${mq.queue.ai-requirement-result:ai.requirement.result}")
private String aiRequireResultQueue;
@Bean
public Queue aiRequiretQueue(){
return new Queue(aiRequiretQueue,true);
}
@Bean
public Queue aiRequireResultQueue(){
return new Queue(aiRequireResultQueue,true);
}
另外现在有了两个方法都调用了TASK_QUEUE.put((job_id, xx))
那get时候怎么取得对应呢
用key 字段来区分任务类型
TASK_QUEUE.put("doc",job_id, file_name, doc_path)
在get时候
if task[0] == "doc":
job_id, file_name, doc_path, = task
注意
queue.Queue.put() 只接受一个参数(要放入队列的对象)
所以上面代码要改
TASK_QUEUE.put(("doc", job_id, file_name, doc_path)) # ✅ 放入一个元组
-
因为现在新增模块,所以要将moduleid参数带上
-
这是前端访问接口的时候,带了moduleId参数,后端只需要把接口改下,
/** 结合服务端已保存的需求文档与需求点描述生成 UI 用例(异步 job) */
generateFromRequirement: (payload: {
moduleId: string
requirementPointId: string
description: string
}) =>
request<{ jobId: string }>('/ai/generate-from-requirement', {
method: 'POST',
body: JSON.stringify(payload),
}),// 后端接口修改
@PostMapping("generate-from-requirement")
public ResponseEntity<Map<String,String>> generateFormRequire(
@RequestBody ResponseDto.GenerateFromRequirementBody body
){
String jobId = docGenerateService.submitRequires(body);
return ResponseEntity.ok(Map.of("jobId",jobId));} 接受body参数 其中参数GenerateFromRequirementBody定义如下 public record GenerateFromRequirementBody( String moduleId, String requirementPointId, String description ) {}注意@RabbitListener(queues = "${mq.queue.ai-requirement-result:ai.requirement.result}")
springboot这边监听的地方,也要同步加上moduleid,底下requirementPointId也要同步加上【本模块 UI 用例】走的是 GET /api/ui-tests接口,并带上当前模块 id:
#python脚本修改 #在往消息队列传的时候,把moduleId带着 #python处理完消息队列回传 时候加上moduleId参数 ok,err = publish(QUEUE_REQUIRE_RESULT, { "jobId": job_id, "status": "done", "type":"ui", "name": case.get("name", "Unnamed"), "description": case.get("description", ""), "targetUrl": case.get("targetUrl", ""), "code": case.get("code", ""), "prompt": case.get("prompt", ""), "steps":case.get("steps",""), "moduleId":moduleId #新加 })
同步添加requirementPointId参数,moduleId是上面大模块比如封禁ip,requirementPointId表示下面的小需求点,因为新加了需求点的用例,所以新增requirementPointId参数
同理,在上述添加moduleId的地方同样加上requirementPointId

注意sql也要改,不然查的不对
@Query("SELECT u FROM UiTestCase u WHERE u.moduleId = :moduleId AND u.requirementPointId = :requirementPointId")
现在模块对应的具体需求下的用例可以正常展示了
