测试平台系列(47) 编写测试报告之构建记录

简介: 编写测试报告之构建记录


回顾

上一节我们说到了去并发执行用例,我们提供了一个async的接口,利用asyncio达到了提升用例执行速度的作用。

今天我们就来完善我们的测试报告相关的功能。


明确目标


目前对我们来说:最关键的就是用例可以批量执行。上一步我们已经完善了,那用例可不能只执行不输出。所以我们今天搞定它!

tips: 最近虽然没更文,但是代码写的进步比较超前了,我也有点不太适应现在的模式。

我们把每次用户的执行,算作一次构建,今天要做的就是生成这样的构建数据。

站在巨人的肩膀上


jenkins为例,它的每一次触发都会生成一个构建记录

我们有好的产品去对比学习,这样我们就会少走很多弯路

27.jpg

image

以上图为例,jenkins构建的记录都在这里进行展示,大家可以搜索也可以看到具体的执行时间,最重要的是我们知道执行的结果。(红色代表失败了)

表设计


表设计是个老话题了,我们还是拆分3个模块:

  • 通用字段(包括主键,创建更新时间,创建人更新人等)
  • 业务字段
  • 预留字段


class PityReport(Base):
    __tablename__ = 'pity_report'
    id = Column(INT, primary_key=True)
    # 执行人 0则为CPU
    executor = Column(INT, index=True)
    # 环境
    env = Column(INT, nullable=False)
    # 花费时间
    cost = Column(String(8))
    # 测试集合id,预留字段
    plan_id = Column(INT, index=True, nullable=True)
    # 开始时间
    start_at = Column(DATETIME, nullable=False)
    # 结束时间
    finished_at = Column(DATETIME)
    # 成功数量
    success_count = Column(INT, nullable=False, default=0)
    error_count = Column(INT, nullable=False, default=0)
    failed_count = Column(INT, nullable=False, default=0)
    skipped_count = Column(INT, nullable=False, default=0)
    # 执行状态
    status = Column(SMALLINT, nullable=False, comment="0: pending, 1: running, 2: stopped, 3: finished", index=True)
    # case执行模式
    mode = Column(SMALLINT, default=0, comment="0: 手动, 1: 自动, 2: 测试集, 3: pipeline, 4: 其他")
    deleted_at = Column(DATETIME, index=True)
    def __init__(self, executor: int, env: int, success_count: int = 0, failed_count: int = 0,
                 error_count: int = 0, skipped_count: int = 0, status: int = 0, mode: int = 0,
                 plan_id: int = None, finished_at: datetime = None, cost=None):
        self.executor = executor
        self.env = env
        self.start_at = datetime.now()
        self.success_count = success_count
        self.cost = cost
        self.failed_count = failed_count
        self.error_count = error_count
        self.skipped_count = skipped_count
        self.status = status
        self.mode = mode
        self.status = status
        self.plan_id = plan_id
        self.finished_at = finished_at
        self.deleted_at = None

表里面注释都写的很清楚,我们来简单说下。

  • executor
    本次构建触发人,可能是人或者系统(system),这里我叫做CPU。
  • env
    构建执行的环境,与环境表对应。
    其他的包括,执行耗时,执行成功失败等数量,开始/结束时间,执行模式大家应该都比较清楚。

报告表的不同之处


报告表和其他数据不一样的地方在于,我们的流程不一样。一次报告很可能是先读到一部分数据:

比如执行人,开始时间等等。到构建完成了以后,我们才能拿到剩下的数据。最后,我们没有手动添加报告这样的诉求,所以我们新增报告的时候要拆分为2个方法。

梳理一下整个过程,insert拿到report_id,并记录开始/执行人相关信息,用例飞速运行,结束后把搜集的数据写回到report_id这条数据。

start方法


28.jpg

dao/test_case/TestReport.py

新建这样的数据,利用aiomysql进行异步操作。把核心数据传入: 环境执行人模式。因为我们这里目前还只支持手动执行,所以mode一般写死为0

其实代码没啥难度,理解就好。简单的说就是新插入一条数据,但是不是完整的数据。

update方法


在执行过程中,可能需要修改构建的状态。比如我们构建如果被用户手动停止了,我们需要把报告状态改为已停止,所以这边有个update的方法,一般是用来修改状态的。如果后续还有其他的数据要修改,也可以调整一下这个方法

29.jpg

image

end方法


当用例结束之后,我们把搜集到的所有数据都回写到这条数据中。利用mysql主键的特性,保证我们每次新增的id都是唯一的,所以数据并不会串

30.jpg

image

新增并发执行用例方法


31.jpg

新增run_multiple方法

32.jpg

接口实现

在Executor类下面编写静态方法: run_multiple

具体的并发过程和之前差不多,注释已经写的很清楚了,从step1到step5.其他无非是一些获取用例执行数据的信息。

最后为啥需要返回report_id呢,因为前端页面通过report_id可自动到达报告页面。

想象一下:

前端通过访问: /report/4就可以拿到对应报告的数据,那就打通了整个执行->报告的过程,虽然目前还没有自动执行那一步


今天的内容就到这里结束了,下一篇讲编写构建历史页面,类似于jenkins左侧构建记录



相关文章
|
1月前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
47 1
|
1月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
2月前
|
缓存 Devops jenkins
专家视角:构建可维护的测试架构与持续集成
【10月更文挑战第14天】在现代软件开发过程中,构建一个可维护且易于扩展的测试架构对于确保产品质量至关重要。本文将探讨如何设计这样的测试架构,并将单元测试无缝地融入持续集成(CI)流程之中。我们将讨论最佳实践、自动化测试部署、性能优化技巧以及如何管理和扩展日益增长的测试套件规模。
59 3
|
3月前
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
121 2
|
1月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
1月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
1月前
|
敏捷开发 监控 测试技术
探索自动化测试框架的构建与优化####
在软件开发周期中,自动化测试扮演着至关重要的角色。本文旨在深入探讨如何构建高效的自动化测试框架,并分享一系列实用策略以提升测试效率和质量。我们将从框架选型、结构设计、工具集成、持续集成/持续部署(CI/CD)、以及最佳实践等多个维度进行阐述,为软件测试人员提供一套系统化的实施指南。 ####
|
1月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
144 1
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
295 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
79 2