翼度科技»论坛 编程开发 python 查看内容

自动化测试平台设计与实现(五、用例执行的统计与展示)

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
基本思路:

  • 设计统计的数据内容:定义需要统计的数据内容,包括测试用例的执行结果。
  • 使用 Pyecharts 生成统计图表:在后端使用 Pyecharts 根据统计数据生成图表。
  • 将图表数据传输到前端:后端通过 API 将图表数据传输到前端。
  • 在 Vue.js 前端展示图表:在 Vue.js 前端项目中使用 Echarts 渲染图表。
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>
复制代码
 

来源:https://www.cnblogs.com/xiaojp65536/p/18342502
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具