ToB企服应用市场:ToB评测及商务社交产业平台

标题: 主动化测试平台设计与实现(五、用例实行的统计与展示) [打印本页]

作者: 饭宝    时间: 2024-8-5 01:44
标题: 主动化测试平台设计与实现(五、用例实行的统计与展示)
基本思绪:
1. 设计统计的数据内容

假设我们统计的数据内容包括:
设计一个模型来存储测试用例实行结果,TestCaseResult 用于存储测试用例实行结果,ChartData 用于存储统计图表数据。
  1. # models.py
  2. from django.db import models
  3. class TestCaseResult(models.Model):
  4.     STATUS_CHOICES = (
  5.         ('success', 'Success'),
  6.         ('failure', 'Failure'),
  7.     )
  8.     case_id = models.CharField(max_length=100)
  9.     status = models.CharField(max_length=10, choices=STATUS_CHOICES)
  10.     execution_time = models.FloatField()
  11.     executed_at = models.DateTimeField(auto_now_add=True)
  12.     def __str__(self):
  13.         return f"TestCase {self.case_id} - {self.status}"<br><br>class ChartData(models.Model): <br>  created_at = models.DateTimeField(auto_now_add=True) <br>  pie_chart = models.TextField() <br>  bar_chart = models.TextField() <br>  def __str__(self): <br>    return f"ChartData created at {self.created_at}"<br>
复制代码
 
2. 利用 Pyecharts 天生统计图表

通过视图中统计这些数据,在后端利用 Pyecharts 天生图表,将其保存到 ChartData 模型中
  1. # views.py
  2. from django.shortcuts import render
  3. from django.http import JsonResponse
  4. from .models import TestCaseResult, ChartData
  5. from pyecharts.charts import Pie, Bar
  6. from pyecharts import options as opts
  7. def generate_charts():
  8.     total_cases = TestCaseResult.objects.count()
  9.     success_cases = TestCaseResult.objects.filter(status='success').count()
  10.     failure_cases = TestCaseResult.objects.filter(status='failure').count()
  11.     execution_times = list(TestCaseResult.objects.values_list('execution_time', flat=True))
  12.     # 饼图
  13.     pie = Pie()
  14.     pie.add("", [("Success", success_cases), ("Failure", failure_cases)])
  15.     pie.set_global_opts(title_opts=opts.TitleOpts(title="Test Case Results"))
  16.     pie_html = pie.render_embed()
  17.     # 柱状图
  18.     bar = Bar()
  19.     bar.add_xaxis([f"TestCase {i+1}" for i in range(total_cases)])
  20.     bar.add_yaxis("Execution Time (s)", execution_times)
  21.     bar.set_global_opts(title_opts=opts.TitleOpts(title="Test Case Execution Times"))
  22.     bar_html = bar.render_embed()
  23.     return pie_html, bar_html
  24. def save_chart_data():
  25.     pie_html, bar_html = generate_charts()
  26.     chart_data = ChartData(pie_chart=pie_html, bar_chart=bar_html)
  27.     chart_data.save()
  28.     return chart_data
  29. def test_case_statistics(request):
  30.     # 生成并保存图表数据
  31.     chart_data = save_chart_data()
  32.     return JsonResponse({
  33.         "pie_chart": chart_data.pie_chart,
  34.         "bar_chart": chart_data.bar_chart,
  35.     })
复制代码
 
3. 前端展示图表

在 Vue.js 前端通过 API 获取图表数据并展示
  1. <template>
  2.   
  3.    
  4.    
  5.   
  6. </template>
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4