边缘计算平台EdgeGallery前端源码分析03-应用测试认证平台

本文主要是介绍边缘计算平台EdgeGallery前端源码分析03-应用测试认证平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 首页

(1)Nav导航栏

代码路径  atp\atp-fe\src\components\layout\Nav.vue

(2)Banner图片区域

代码路径 atp\atp-fe\src\pages\home\Home.vue

点击详情跳转到 测试用例管理 页面(后面分析)

<div class="banner"><imgsrc="../../assets/images/bannercn.png"alt=""class="banner-img"v-if="language==='cn'"><imgv-elsesrc="../../assets/images/banneren.png"alt=""class="banner-img"><el-buttonclass="view-case"@click="jumpTo('/testcasemanage')">{{ $t('userpage.seeDetail') }}<span class="right">></span></el-button>
</div>

(3)测试模型管理

测试模型管理包括 测试场景管理 测试套管理和测试用例管理,分别点击,可以进入对应的页面(具体yemian)

<divstyle="background-color: #f7f5f9;"class="padding_deafult"
><div class="modelmanage"><div class="mainmodel"><div class="title"><p class="toptext">.........................

(4)任务管理和贡献管理

点击查看列表,会跳转到对应的页面(后面进行详细分析)

// 任务管理跳转按钮
<el-buttonclass="common-btn"@click="jumpTo('/tasklist')">{{ $t('home.viewList') }}</el-button>
// 贡献管理跳转按钮
<el-buttonclass="common-btn"@click="jumpTo('/contributionList')">{{ $t('home.viewList') }}</el-button>

(5)数据统计

<div class="statisticdata"><div class="left"><div class="title"><p class="toptext">{{ $t('home.Statistics') }}</p><p class="bottomtext" /><pclass="leftdetail">....................

(6)Footer区域

该区域使用的是 eg-view(官方自己的组件库实现的,如需定制化修改,需要发布私有的npm包)

代码路径 atp\atp-fe\src\components\common\Footer.vue

2 测试模型

2.1 测试场景管理

代码路径  atp\atp-fe\src\pages\ModelMgmt\ScenariosManage.vue

页面挂载会调用getAllScene函数,获取页面展示的数据

getAllScene () {this.form.locale = this.language === 'cn' ? 'ch' : 'en'Userpage.getAllSceneApi(this.form).then(res => {  // 调用接口this.scenarios = res.data}).catch(() => {this.$message({showClose: true,duration: 2000,message: this.$t('promptMessage.getSceneFail'),type: 'warning'})})},
getAllSceneApi: function (params) {let url = 'testscenarios'return GET(url, params)},

(1)批量导入

<el-dialog:visible.sync="addExcelVisible":close-on-click-modal="false"width="30%":title="$t('modelmgmt.importCase')"append-to-bodyclass="addtestdialog commondlg">.................

点击确定后,执行BatchImport函数,

BatchImport () {let fd = new FormData()fd.append('file', this.batchForm.batchFile[0])ModelMgmt.importTestModelApi(fd).then(res => {this.addExcelVisible = falsethis.$message({showClose: true,duration: 2000,type: 'warning',message: '上传成功'})this.getAllScene()this.batchForm = {batchFile: []}

调用接口

importTestModelApi: function (params) {let url = 'testmodels/action/import'return POST(url, params)}

(2)新增

<el-dialog:visible.sync="addTestScenarioVisible":close-on-click-modal="false":title=" $t('testCase.addTestScenario')"width="30%"append-to-bodyclass="commondlg"
>
............

点击确定后,调用confirmAddTestScenario函数

this.$refs['addTestScenarioForm'].validate((valid) => {// 表格校验if (valid) {// 校验通过let addTestScenarioForm = this.addTestScenarioFormaddTestScenarioForm.icon = this.addTestScenarioForm.icon.length > 0 ? this.addTestScenarioForm.icon[0] : this.defaultIconFilelet fd = new FormData()fd.append('nameCh', addTestScenarioForm.nameCh)fd.append('nameEn', addTestScenarioForm.nameEn)fd.append('descriptionCh', addTestScenarioForm.descriptionCh)fd.append('descriptionEn', addTestScenarioForm.descriptionEn)fd.append('icon', addTestScenarioForm.icon)if (addTestScenarioForm.icon.length === 0) {this.$message({showClose: true,duration: 2000,type: 'warning',message: this.$t('promptMessage.selectIcon')})} else {ModelMgmt.createTestScenarioApi(fd).then(res => {   // 将数据发送给后端this.getAllScene()this.addTestScenarioVisible = falsethis.clearFormData(this.addTestScenarioForm)
.........................

调用接口

createTestScenarioApi: function (params) {let url = 'testscenarios'  return POST(url, params)},

2.2 测试套管理

代码路径  atp\atp-fe\src\pages\ModelMgmt\SuitesManage.vue

页面挂载调用fillOptions函数,获取页面展示的数据

async fillOptions () {let cacheArray = []let para = { locale: '' }para.locale = this.language === 'cn' ? 'ch' : 'en'await Userpage.getAllSceneApi(para).then(res => {  //发送请求,获取数据this.testScenes = res.datathis.getAllSuites()})

请求接口

getAllSceneApi: function (params) {let url = 'testscenarios'return GET(url, params)},

(1)批量导入

<el-dialog:visible.sync="addExcelVisible":close-on-click-modal="false"width="30%":title="$t('modelmgmt.importCase')"append-to-bodyclass="addtestdialog commondlg">.................

点击确定后,执行BatchImport函数,

BatchImport () {let fd = new FormData()fd.append('file', this.batchForm.batchFile[0])ModelMgmt.importTestModelApi(fd).then(res => {this.addExcelVisible = falsethis.$message({showClose: true,duration: 2000,type: 'warning',message: '上传成功'})this.getAllSuites()  // 刷新列表数据this.batchForm = {batchFile: []........

调用接口

importTestModelApi: function (params) {let url = 'testmodels/action/import'return POST(url, params)}

(2)新增

<el-dialog:visible.sync="addTestSuiteVisible":title="$t('testCase.addTestSuite')":close-on-click-modal="false"width="30%"append-to-bodyclass="commondlg"
><el-form:model="addTestSuiteForm"ref="addTestSuiteForm"label-width="auto":rules="rules">
............

点击确定后,调用confirmAddTestSuite函数

confirmAddTestSuite () {this.$refs['addTestSuiteForm'].validate((valid) => {if (valid) {let fd = new FormData()fd.append('nameCh', this.addTestSuiteForm.nameCh)fd.append('nameEn', this.addTestSuiteForm.nameEn)fd.append('descriptionCh', this.addTestSuiteForm.descriptionCh)fd.append('descriptionEn', this.addTestSuiteForm.descriptionEn)fd.append('scenarioIdList', this.addTestSuiteForm.scenarioList)ModelMgmt.createTestSuiteApi(fd).then(res => {  // 数据发送给后端this.addTestSuiteVisible = falsethis.getAllSuites()this.clearFormData(this.editTestSuiteForm)}).catch(() => {this.$message({duration: 2000,message: this.$t('promptMessage.addFail'),type: 'warning'})this.addTestSuiteVisible = false})
.........................

调用接口

createTestSuiteApi: function (params) {let url = 'testsuites'return POST(url, params)},

2.3 测试用例管理

代码路径 atp\atp-fe\src\pages\ModelMgmt\TestCaseManage.vue

页面挂载调用getAllcase函数,获取页面展示的数据

async getAllcase () {await this.getALlSuites()await this.getALlConfig()this.pageData = []this.form.locale = this.language === 'cn' ? 'ch' : 'en'const params = { name: this.form.name,type: this.form.type,locale: this.form.locale,testSuiteIdList: this.form.testSuiteIdList,limit: this.limitSize,offset: this.offsetPage }Atp.getAllCaseApi(params).then(res => {  //获取后端数据let data = res.data.resultsthis.listTotal = res.data.totaldata.forEach(item => {let testSuiteList = []item.testSuiteIdList.forEach(Id => {if (this.language === 'cn') {testSuiteList.push(this.mapCh.get(Id))} else {testSuiteList.push(this.mapEn.get(Id))}})item.testSuiteNameList = testSuiteList.toString()let configList = []this.setConfig(item, configList)})this.pageData = data

(1)批量导入

该部分的功能和2.1,2.2中的批量导入功能一致

<el-dialog:visible.sync="addExcelVisible":close-on-click-modal="false"width="30%":title="$t('modelmgmt.importCase')"append-to-bodyclass="addtestdialog commondlg"><el-form:model="batchForm"label-width="100px".................

(2)新增

<el-dialog:visible.sync="addCaseVisible":title="dialogTitle":close-on-click-modal="false"width="35%"append-to-bodyclass="addtestdialog commondlg">..................

点击确认后,调用confirmAddCase 函数,校验表单参数,随后发送请求

confirmAddCase () {this.$refs['addcaseForm'].validate((valid) => {// 校验表单参数if (valid) {let fd = new FormData()let addcaseForm = this.addcaseFormfd.append('nameCh', addcaseForm.nameCh)fd.append('nameEn', addcaseForm.nameEn)fd.append('type', addcaseForm.type)fd.append('descriptionCh', addcaseForm.descriptionCh)fd.append('descriptionEn', addcaseForm.descriptionEn)fd.append('codeLanguage', addcaseForm.codeLanguage)fd.append('expectResultCh', addcaseForm.expectResultCh)fd.append('expectResultEn', addcaseForm.expectResultEn)fd.append('testSuiteIdList', addcaseForm.testSuiteIdList)fd.append('testStepCh', addcaseForm.testStepCh)fd.append('testStepEn', addcaseForm.testStepEn)fd.append('configIdList', addcaseForm.configIdList)if (this.confirmBtnApi === 'add') {fd.append('file', addcaseForm.file[0])Atp.createCaseApi(fd).then(res => { // 发送请求this.addCaseVisible = falsethis.getAllcase()this.$message({duration: 2000,showClose: true,message: this.$t('promptMessage.addSuccess'),type: 'success'})

请求接口

createCaseApi: function (params) {let url = 'testcases'return POST(url, params)},

页面主体是一个table表格

<div class="testcase-content"><el-table:data="pageData"  //table表格的数据来源 =>页面挂载时,调用getAllcase函数,获取到的数据class="common-table"><el-table-columnprop="nameCh":label="$t('testCase.caseName')">

3 任务管理

代码路径 atp\atp-fe\src\pages\home\TaskList.vueatp\atp-fe\src\pages\myApp\ATPTask.vue

页面整体为一个table表格

<div class="task-content"><el-tablev-loading="dataLoading":data="pageData"  // 表格数据style="width: 100%;"class="common-table"@selection-change="handleSelectionChange"><el-table-columntype="selection"width="55"/>

pageData数据的获取是该页面在挂载时,会调用getTaskList函数

getTaskList () {const params = { appName: this.form.appName, status: this.form.status, limit: this.limitSize, offset: this.offsetPage }Taskmgmt.taskListApi(params).then(res => {  //调用接口,获取数据let data = res.data.resultsthis.listTotal = res.data.totaldata.forEach((item, index) => {let newDateBegin = this.dateChange(item.createTime)item.createTime = newDateBeginlet newDateEnd = this.dateChange(item.endTime)item.endTime = newDateEnd})this.pageData = data  // 获取table表格数据this.dataLoading = false

调用接口

taskListApi: function (params) {let url = 'tasks'return GET(url, params, 'v2')},

4 贡献管理

代码路径  atp\atp-fe\src\pages\home\ContributionList.vue

页面挂载会调用getAllcontribution函数,获取页面展示需要的数据

getAllcontribution () {const params = { name: this.form.name, limit: this.limitSize, offset: this.offsetPage }Taskmgmt.contributionsApi(params).then(res => {  //获取数据let data = res.data.resultsthis.listTotal = res.data.totalthis.dataLoading = falsedata.forEach((item, index) => {let newDateBegin = this.dateChange(item.createTime)item.createTime = newDateBegin})this.pageData = data

调用接口

contributionsApi: function (params) {let url = 'contributions'return GET(url, params, 'v2')},
<div class="content"><el-tablev-loading="dataLoading":data="pageData"@selection-change="handleSelectionChange"class="common-table"><el-table-columntype="selection"width="55"/>

5 配置管理

代码路径 atp\atp-fe\src\pages\home\ContributionList.vue

页面挂载会调用getAllcontribution函数,获取页面展示所需信息

getAllcontribution () {const params = { name: this.form.name, limit: this.limitSize, offset: this.offsetPage }Taskmgmt.contributionsApi(params).then(res => {  //发送请求,请求数据let data = res.data.resultsthis.listTotal = res.data.totalthis.dataLoading = falsedata.forEach((item, index) => {let newDateBegin = this.dateChange(item.createTime)item.createTime = newDateBegin})this.pageData = data  //表格数据

调用接口

contributionsApi: function (params) {let url = 'contributions'return GET(url, params, 'v2')},

页面整体结构为table表格构成

<div class="content"><el-tablev-loading="dataLoading":data="pageData"  // 表格数据@selection-change="handleSelectionChange"class="common-table"><el-table-columntype="selection"width="55"/>

在页面中输入名称搜索触发selectContributionList函数,该函数调用getAllcontribution函数,查询搜索的数据并回显到页面

<el-inputclass="common-input"v-model="form.name"prefix-icon="el-icon-search":placeholder="$t('testCase.provideNameSearch')"@clear="selectContributionList"@change="selectContributionList"  //change事件
/>
selectContributionList () {sessionStorage.setItem('currentPage', 1)this.getAllcontribution()
},
getAllcontribution () {const params = { name: this.form.name, limit: this.limitSize, offset: this.offsetPage }Taskmgmt.contributionsApi(params).then(res => {let data = res.data.resultsthis.listTotal = res.data.totalthis.dataLoading = falsedata.forEach((item, index) => {let newDateBegin = this.dateChange(item.createTime)item.createTime = newDateBegin})this.pageData = data

这篇关于边缘计算平台EdgeGallery前端源码分析03-应用测试认证平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796462

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动