【pytest】生成单一html报告方案,方便上传jira或其他平台

【python】连接Jira获取token以及jira对象
【python】解析自动化脚本文件并按照=测试周期=存储记录
【python】向Jira推送自动化用例执行成功
【python】向Jira测试计划下,附件中增加html测试报告

将pytest生成的测试报告中css内容,写到html中,为一个文件,方便报告上传jira
css文件路径可以写死,因为固定不变,html会编辑后重新命名!

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025-02-14 14:31
# @Author  : duxiaowei
# @File    : report_css_into_html.py
# @Software: 将报告中的css文件插入到html文件中,方便jira下载查看
import os


def rewrite_html(html_file_path):
    path_html = os.path.abspath('..') + '\\test_API\\reports\\' + html_file_path
    path_css = os.path.abspath('..') + '\\test_API\\reports\\assets\\style.css'
    try:
        # 读取 HTML 文件内容
        with open(path_html, 'r', encoding='GB2312') as html_file:
            html_content = html_file.read()

        # 读取 CSS 文件内容
        with open(path_css, 'r', encoding='GB2312') as path_css:
            css_content = path_css.read()

        # 定义要查找的 <link> 标签
        link_tag = '<link href="assets/style.css" rel="stylesheet" type="text/css"/>'

        # 生成新的 <style> 标签内容
        style_tag = f'<style>\n{css_content}\n</style>'

        # 替换 <link> 标签为 <style> 标签
        new_html_content = html_content.replace(link_tag, style_tag)

        # 将修改后的内容写回 HTML 文件
        with open(path_html, 'w', encoding='GB2312') as html_file:
            html_file.write(new_html_content)

        print("CSS 文件内容已成功插入到 HTML 文件中。")
    except FileNotFoundError:
        print("未找到 HTML 或 CSS 文件,请检查文件路径。")
    except Exception as e:
        print(f"处理文件时出现错误: {e}")

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
<think>好的,我现在要回答用户关于单元测试完整流程和实施步骤的问题。首先,我需要回顾用户提供的引用内容,特别是引用[2],里面提到了单元测试的具体步骤,比如根据《软件设计报告》划分单元,使用测试工具和手动测试,提交测试用例表报告等。此外,其他引用虽然主要关于接口测试性能测试,但可能也有通用的测试步骤可以参考。 首先,单元测试的基本流程应该包括需求分析、测试用例设计、环境搭建、执行测试、结果记录和持续集成等。根据引用[2],单元测试需要根据软件设计报告来划分可测单元,然后采用工具手动测试。同时,引用[5]提到的6W方法(why, what, when, where, who, how)也可能适用于单元测试的规划阶段。 接下来,我需要确保回答的结构清晰,分步骤说明。可能还需要提到单元测试框架,比如JUnit,以及相关的注解,如@BeforeEach、@AfterEach等,这部分可以参考引用[3]中的内容,其中提到了测试生命周期中的各个注解,比如@BeforeAll、@AfterEach等,这些是编写测试用例时的重要部分。 另外,用户提供的示例中,快速排序的回答包含了代码示例,因此在单元测试的回答中也可以加入一个简单的测试代码示例,比如使用JUnit的测试用例,这样更直观。例如,如何为一个加法函数编写测试用例。 需要注意的是,用户要求回答使用中文,并且数学表达式用$...$格式,但单元测试可能涉及较少的数学内容,不过如果有涉及变量公式的地方需要正确应用格式。例如,如果提到测试覆盖率公式,可以写成$覆盖率 = \frac{已覆盖代码行数}{总代码行数} \times 100\%$。 最后,生成相关问题,可能需要考虑单元测试的最佳实践、工具选择、与集成测试的区别等,这些问题可以帮助用户进一步了解单元测试的相关知识。 现在需要整合这些信息,确保每个步骤都有对应的引用支持,并正确标注引用标识。同时,检查是否符合用户的所有系统级指令,如格式要求、中文回答、问题生成等。</think>### 单元测试的完整流程与实施步骤 单元测试是软件测试的最小单元验证环节,主要用于确保代码模块的独立功能符合设计要求。以下是其实施的完整流程和步骤: --- #### **1. 需求分析与单元划分** - **依据设计文档**:根据《软件设计报告需求文档,明确被测模块的功能边界和输入输出要求[^2]。 - **划分可测单元**:将系统拆解为独立的可测单元(如函数、类、方法),通常以单一功能逻辑模块为单位。 - **示例**:若实现一个计算器模块,可划分加法、减法等独立函数作为测试单元。 --- #### **2. 测试框架与工具选型** - **选择测试框架**:根据编程语言选择对应框架(如Java的JUnit、Python的pytest、JavaScript的Jest)。 - **配置辅助工具**:结合覆盖率工具(如JaCoCo)、模拟框架(如Mockito)和静态分析工具[^5]。 - **示例代码(JUnit)**: ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { @Test void testAddition() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3)); } } ``` --- #### **3. 测试用例设计与评审** - **设计用例原则**: - 覆盖正常输入、边界值(如$n=0$最大值)、异常输入(如空指针)。 - 结合等价类划分和判定表方法减少冗余。 - **用例评审**:与开发人员、测试团队共同评审用例的完整性和有效性[^2]。 --- #### **4. 测试环境搭建** - **隔离依赖**:使用模拟对象(Mock)桩函数(Stub)隔离数据库、网络等外部依赖[^3]。 - **配置生命周期钩子**:通过注解(如`@BeforeEach`、`@AfterAll`)管理测试前后的资源初始化与清理。 --- #### **5. 测试执行与结果记录** - **自动化执行**:通过框架批量运行测试用例,生成测试报告。 - **记录与跟踪**:对失败用例记录缺陷,并关联到项目管理工具(如Jira)[^2]。 - **覆盖率统计**:确保覆盖关键路径,目标覆盖率通常设为$80\%$以上[^4]。 --- #### **6. 持续集成(CI)** - **自动化集成**:将单元测试嵌入CI/CD流水线(如Jenkins、GitHub Actions),实现代码提交后自动触发测试。 - **质量门禁**:设置覆盖率阈值,未达标时阻断代码合并。 --- ### 关键方法与最佳实践 1. **测试驱动开发(TDD)**:先写测试用例再编码,确保代码可测性。 2. **断言明确性**:断言应具体(如验证返回值、异常类型)。 3. **用例独立性**:每个测试方法仅验证单一场景,避免依赖执行顺序。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值