二十七、【测试执行篇】测试计划:前端一键触发测试 实时状态追踪

二十七、【测试执行篇】测试计划:前端一键触发测试 & 实时状态追踪

    • 前言
      • 准备工作
      • 第一部分:后端 API 确认
      • 第二部分:前端实现 - 触发执行与状态轮询
      • 第三部分:后端 API 增强
      • 第四部分:全面测试
    • 总结

前言

一个完整的自动化测试流程,从测试用例的创建到报告的生成,最终都需要一个用户友好的触发机制。在后端已经实现了测试执行器和异步任务队列(Celery)的基础上,前端的执行按钮及其后续的状态跟踪至关重要。

我们将主要在测试计划列表页面 (TestPlanListView.vue) 进行修改,让用户可以直接在这里触发测试计划的执行。

准备工作

  1. 前端项目就绪: test-platform/frontend 项目可以正常运行 (npm run dev)。
  2. 后端 API 运行中: Django 后端服务运行,特别是以下 API 端点:
    • POST /api/testplans/{pk}/run/:触发测试计划执行(返回 test_run_idcelery_task_id)。
    • GET /api/testruns/{test_run_id}/:获取指定 TestRun 的状态和详情。
  3. 测试计划数据: 确保你已经创建了一些测试计划和关联的测试用例,以便进行测试。
  4. Axios 和 API 服务已封装。
  5. Element Plus 集成完毕。

第一部分:后端 API 确认

我们需要确保后端提供足够的 API 来支持前端的轮询和状态显示。

  1. 确认 TestPlanViewSet 中的 run action 返回 test_run_id
    在《【测试执行】异步与并发》中,我们已经将 run_test_plan action 修改为返回 test_run_idcelery_task_id,这是前端进行轮询的关键信息。请再次确认 api/views.py 中该方法的返回结构。

    # api/views.py - TestPlanViewSet 中的 run_test_plan 方法
    # ...return Response({"message": "测试计划执行任务已成功提交到后台处理。","test_run_id": str(test_run.id), # UUID 字符串"celery_task_id": task_result.id # Celery 任务自身的 ID}, status=http_status.HTTP_202_ACCEPTED)
    
  2. 确认 TestRunViewSet 支持按 ID 获取详情:
    在《【测试报告】结果可视化》中,我们已经创建了 TestRunViewSetTestRunSerializer,用于获取测试报告列表和详情。确认 /api/testruns/{id}/ 端点可以返回单个 TestRun 的完整信息,特别是其 status 字段。

    # api/views.py - TestRunViewSet
    class TestRunViewSet(viewsets.ReadOnlyModelViewSet):queryset = TestRun.objects.all().order_by('-create_time')serializer_class = TestRunSerializer # 包含 status 字段
    # ...
    

第二部分:前端实现 - 触发执行与状态轮询

我们将主要修改 TestPlanListView.vue

  1. 更新 api/testplan.ts,添加触发执行的 API 调用:
    在这里插入图片描述

    // test-platform/frontend/src/api/testplan.ts
    // ... (其他导入和类型定义) ...
    import type { AxiosResponse } from 'axios'; // 导入 AxiosResponse// 定义触发执行 API 的响应类型
    export interface RunTestPlanResponse {message: string;test_run_id: string; // 后端返回的 TestRun IDcelery_task_id: string; // 后端返回的 Celery 任务 ID
    }// 触发执行测试计划的 API
    export function runTestPlan(testPlanId

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913144.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

60天python训练营打卡day52

学习目标: 60天python训练营打卡 学习内容: DAY 52 神经网络调参指南 知识点回顾: 1.随机种子 2.内参的初始化 3.神经网络调参指南 a.参数的分类 b.调参的顺序 c.各部分参数的调整心得 作业:对于day’41的简单cnn,看…

【Modern C++ Part3】Understand-decltype

条款三:理解decltype decltype是一个怪异的发明。给定一个变量名或者表达式,decltype会告诉你这个变量名或表达式的类型。decltype的返回的类型往往也是你期望的。然而有时候,它提供的结果会使开发者极度抓狂而不得参考其他文献或者在线的Q&…

前端批量请求场景

文章目录 一、批量请求1、Promise.allSettled2、返回值穿透 二、案例1、 批量任务2、缓存优化3、另一种实现方式 一般时候前端都是简单的查询任务,复杂的数据获取都是后台处理好再返回,如果遇到接口流程化处理、数据组装,可以参考一下。 一、…

芊芊妙音:智能变声,玩转声音魔法

在当今丰富多彩的社交和娱乐环境中,声音的魅力正逐渐被更多人发现和利用。无论是线上社交、短视频创作还是直播互动,一个独特而有趣的声音总能让人眼前一亮,甚至成为个人风格的一部分。《芊芊妙音》正是这样一款能够帮助用户轻松实现声音变换…

安防监控视频汇聚平台EasyCVR v3.7.2版云端录像无法在web端播放的原因排查和解决方法

有用户反馈,在使用EasyCVR视频汇聚平台时,发现云端录像无法在Web页面正常播放。为帮助大家高效解决类似困扰,本文将详细剖析排查思路与解决方案。 用户软件版本信息: 问题排查与解决步骤: 1)问题复现验证…

vxe-upload vue 实现附件上传、手动批量上传附件的方式

vxe-upload vue 实现附件上传、手动批量上传附件的方式 查看官网:https://vxeui.com 安装 npm install vxe-pc-ui4.6.47// ... import VxeUIAll from vxe-pc-ui import vxe-pc-ui/lib/style.css // ...createApp(App).use(VxeUIAll).mount(#app) // ...上传附件支…

leaflet【十一】地图瓦片路径可视化

前言 在开发调试过程当中,如果引入的是公司内部的Gis地图信息或者一些第三方定制来的Gis地图数据,当某一些地图块数据缺失的时候,要打开F12去一个个找那些链接(去找对应的xy与layer)失效、那么你可能需要使用以下插件…

ES6从入门到精通:模块化

ES6 模块化基础概念ES6 模块化是 JavaScript 官方标准,通过 import 和 export 语法实现代码拆分与复用。模块化特点包括:每个文件是一个独立模块,作用域隔离。支持静态分析,依赖关系在编译时确定。输出的是值的引用(动…

stm32 USART串口协议与外设——江协教程踩坑经验分享

江协stm32学习:9-1~9-3 USART串口协议与外设 一、串口通信基础知识 1、通信类型: 全双工通信:通信双方能够同时进行双向通信。一般有两根通信线,如USART中的TX(发送)和RX(接收)线&am…

深度学习中的一些名词

向前传播 forward pass 在机器学习中,输入的feature, 通过预测模型,输出预测值,此过程称之为向前传播; 向后传播 backward pass 为了将预测与真实值的产值减小,需要根据差值,更新模型中的参数,此…

鸿蒙系统(HarmonyOS)应用开发之手势锁屏密码锁(PatternLock)

项目概述 基于鸿蒙(OpenHarmony)平台开发的手势密码锁应用,旨在为用户提供安全、便捷且具有良好交互体验的身份验证方式。通过手势图案输入,用户可以轻松设置和验证密码,提升设备的安全性和个性化体验。 功能特点 手…

vue文本插值

好的,我们来详细讲解 Vue 中最基础的数据展示方式:文本插值和在其内部使用的 JavaScript 表达式。 1. 文本插值 (Text Interpolation) 知识点: 文本插值是 Vue 中最基本的数据绑定形式。它使用“Mustache”语法(双大括号 {{ }})…

Python:线性代数,向量内积谐音记忆。

目录1 先说结论2 解释3 欢迎纠错4 论文写作/Python 学习智能体------以下关于 Markdown 编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、…

小程序导航设置更多内容的实现方法

在小程序中实现导航栏设置更多内容,可以通过以下几种方式实现: 1. 使用原生导航栏自定义按钮 javascript // app.json 或页面.json中配置 {"navigationBarTitleText": "首页","navigationBarTextStyle": "black&q…

SpringBoot 解决配置文件有黄色波浪线

在application.properties配置文件中有黄色波浪线,是警告!! 原因:编码格式不一致!! 解决:Settings| Editor | File Encodings | 选择UTF-8

在 Vue 3 中全局使用 Suspense 组件

Suspense 是 Vue 3 引入的一个内置组件,不需要引用可以直接用。用于处理异步依赖的等待状态。虽然 Suspense 主要用于异步组件,但你也可以全局地使用它来管理整个应用的加载状态。 全局 Suspense 的基本用法 1. 在根组件中使用 Suspense // main.js 或…

笔记/计算机网络

Content 计算机网络部分核心概念十大网络协议一览 计算机网络部分核心概念 1. 什么是计算机网络?它最基本的功能是什么? 计算机网络是指通过某种传输介质将多台独立的计算机或设备连接起来,实现数据交换和资源共享的系统。其最基本的功能是数…

时频图数据集更正程序,去除坐标轴白边及调整对应的标签值

当数据集是时频图时可能有一个尴尬的问题,就是数据集制作好后,发现有白边。 其实这也不影响训练模型,可能对模型训练效果的影响也是微乎其微的,于是大多数情况我会选择直接用整张图片训练模型。但是,有的情况下&#x…

mv重命名报错:bash:未预期的符号 ‘(‘附近有语法错误

文章目录 一、报错背景二、解决方法2.1、方法一:文件名加引号2.2、方法二:特殊字符前加\进行转义 一、报错背景 在linux上对一文件执行重命名时报错。原因是该文件名包含空格与括号。 文件名如下: aa (1).txt执行命令及报错如下…

Unity-MMORPG内容笔记-其三

继续之前的内容: 战斗系统 无需多言,整个项目中最复杂的部分,也是代码量最大的部分。 属性系统 首先我们要定义一系列属性,毕竟所谓的战斗就是不断地扣血对吧。 属性系统是战斗系统的核心模块,负责管理角色的所有…