Streamlit在测试领域中的应用:构建自动化测试报告生成器

引言

Streamlit 在开发大模型AI测试工具方面具有显著的重要性,尤其是在简化开发流程、增强交互性以及促进快速迭代等方面。以下是几个关键点,说明了 Streamlit 对于构建大模型AI测试工具的重要性:

1. 快速原型设计和迭代

对于大模型AI测试工具的开发而言,快速构建原型并进行迭代至关重要。Streamlit 允许开发者通过简单的Python脚本快速创建Web应用程序,无需深入掌握前端技术(如HTML、CSS、JavaScript)。这种能力使得团队能够迅速将想法转化为可交互的界面,加速了从概念验证到实际应用的过程。

2. 强大的数据可视化支持

在评估大模型的表现时,数据可视化是不可或缺的一环。Streamlit 提供了丰富的内置函数用于生成图表和图形,包括折线图、柱状图、散点图等,并且可以轻松地与更高级的数据可视化库(如 Altair 或 Plotly)集成。这有助于直观展示模型性能指标、误差分布、特征重要性等内容,从而帮助研究人员更好地理解和优化模型。

3. 简化的用户交互设计

Streamlit 使得添加用户输入控件变得极为简单,例如滑块、下拉菜单、复选框等。这对于调整超参数、选择不同的模型版本或配置测试场景非常有用。它允许非技术人员也能够方便地使用这些工具,提高了协作效率。

4. 实时反馈机制

Streamlit 应用程序能够实时响应用户的输入变化,这意味着任何对变量的修改都会立即反映在界面上。这一特性特别适合于调试复杂的机器学习模型,因为它可以让开发者即时看到参数调整后的效果,从而更快地找到最优解。

5. 易于分享和部署

一旦开发完成,Streamlit 应用可以通过命令行一键部署到云端服务(如Heroku、AWS等),也可以直接运行在本地服务器上供团队内部访问。此外,由于其基于Python的特性,结合Docker容器化技术,可以确保环境的一致性和稳定性,便于跨平台分享和部署。

6. 社区支持与扩展性

作为一个开源项目,Streamlit 拥有一个活跃的社区,提供了大量的教程、案例研究和第三方插件,可以帮助开发者解决遇到的各种问题。同时,它还支持与其他流行的Python库(如Pandas、NumPy、Scikit-learn等)无缝集成,为构建复杂的大模型AI测试工具提供了强大的后端支持。

综上所述,Streamlit 凭借其易用性、灵活性及强大的功能,在开发大模型AI测试工具中扮演着至关重要的角色。无论是对于初学者还是经验丰富的开发者来说,都是一个值得考虑的选择。它可以极大地提高工作效率,降低技术门槛,使更多的人能够参与到AI模型的测试与优化工作中来。本文将详细介绍如何使用Streamlit来创建一个实用的自动化测试报告生成器,并提供完整的代码示例,适合初学者学习。

一、环境搭建与依赖安装

安装必要的库

在开始之前,请确保你已经安装了Python(建议版本3.7及以上)。接下来,我们需要安装几个关键的库:

  • Streamlit:用于构建Web界面。
  • Pandas:用于数据处理。
  • Openpyxl:用于读取Excel文件。

可以通过以下命令安装这些库:

pip install streamlit pandas openpyxl

二、代码分段解读

1. 加载数据函数

首先定义一个函数来加载上传的Excel文件。这里我们使用@st.cache_data装饰器来缓存数据,提高性能。

import streamlit as st
import pandas as pd# 加载数据函数
@st.cache_data  # 使用缓存提高性能
def load_data(file_path):return pd.read_excel(file_path, engine='openpyxl')

2. 主页面设置

接下来设置主页面的标题和描述,让用户了解该应用的目的。

# 主页面设置
st.title("自动化测试报告生成器")
st.write("""
这是一个基于Streamlit的应用程序,用于分析和展示自动化测试的结果。
""")

3. 上传Excel文件

提供一个文件上传组件,允许用户选择并上传Excel文件。

# 上传Excel文件
uploaded_file = st.file_uploader("选择一个Excel文件", type=["xlsx"])
if uploaded_file is not None:data = load_data(uploaded_file)

4. 数据验证

检查上传的Excel文件是否包含所有必需的列,如“Test Name”、“Status”和“Execution Time”。

    # 确认必要列存在required_columns = ['Test Name', 'Status', 'Execution Time']missing_columns = [col for col in required_columns if col not in data.columns]if missing_columns:st.error(f"缺少必需的列: {', '.join(missing_columns)}")

5. 显示原始数据选项

提供一个选项让用户查看上传文件中的原始数据。

    else:# 显示原始数据选项if st.checkbox('显示原始数据'):st.subheader('原始数据')st.write(data)

6. 筛选条件

允许用户根据测试状态(通过/失败)进行筛选。

        # 筛选条件st.sidebar.header("筛选条件")status_filter = st.sidebar.multiselect("选择测试状态",options=['Pass', 'Fail'],default=['Pass', 'Fail'])

7. 应用筛选条件

根据用户选择的状态过滤数据。

        # 应用筛选条件filtered_data = data[data['Status'].isin(status_filter)]

8. 显示概览信息

计算并展示总测试数、通过测试数、失败测试数及通过率等概览信息。

        # 显示概览信息total_tests = len(filtered_data)passed_tests = (filtered_data['Status'] == 'Pass').sum()failure_tests = total_tests - passed_testspass_rate = round((passed_tests / total_tests) * 100, 2)st.subheader("测试概览")st.metric(label="总测试数", value=total_tests)st.metric(label="通过测试数", value=passed_tests)st.metric(label="失败测试数", value=failure_tests)st.metric(label="通过率 (%)", value=pass_rate)

9. 显示详细测试结果

以表格形式展示经过筛选后的测试结果。

        # 显示详细测试结果st.subheader("详细测试结果")st.dataframe(filtered_data)

10. 成功率趋势图

绘制每日的成功率趋势图,帮助分析测试结果的变化趋势。

        # 成功率趋势图success_rate_over_time = filtered_data.groupby(pd.Grouper(key='Execution Time', freq='D'))['Status'].apply(lambda x: (x == 'Pass').mean()).reset_index()st.subheader("成功率趋势图")st.line_chart(success_rate_over_time.set_index('Execution Time'))

11. 更多图表示例

提供额外的图表选项,如失败原因条形图(如果存在相关数据)。

        # 更多图表示例st.subheader("更多图表示例")chart_type = st.selectbox("选择图表类型", ["失败原因条形图"])if chart_type == "失败原因条形图" and 'Failure Reason' in filtered_data.columns:failure_reasons = filtered_data[filtered_data['Status'] == 'Fail']['Failure Reason'].dropna().value_counts()st.bar_chart(failure_reasons)
else:st.write("请上传一个Excel文件以开始分析。")

windows环境下在cmd启动服务:

在这里插入图片描述
效果展示:

在这里插入图片描述

excel文档格式:

在这里插入图片描述
上传excel文档后展示的效果如下图所示:

在这里插入图片描述

结论

通过上述步骤,我们构建了一个基于Streamlit的自动化测试报告生成器。这个应用程序不仅展示了如何利用Streamlit的强大功能来简化测试数据的可视化和分析过程,还为测试工程师提供了一个实际操作的例子。希望这篇教程能帮助你快速入门Streamlit,并应用于实际工作中,提升测试工作的效率和质量。如果你有任何问题或建议,请随时留言交流!源码及excel文档已上传云盘,感兴趣的宝子们一起学习一下吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 运行自定义化的服务-后端

docker 运行自定义化的服务-前端-CSDN博客 运行自定义化的后端服务 具体如下: ①打包后端项目,形成jar包 ②编写dockerfile文件,文件内容如下: # 使用官方 OpenJDK 镜像 FROM jdk8:1.8LABEL maintainer"ATB" version&…

解决java使用easyexcel填充模版后,高度不一致问题

自定义工具,可以通过获取上一行行高设置后面所以行的高度 package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.wr…

repo仓库文件清理

1. repo 仓库内文件清理 # 清理所有Git仓库中的项目 repo forall -c git clean -dfx # 重置所有Git 仓库中的项目 repo forall -c git reset --hard 解释: repo forall -c git clean -dfx: repo forall 是一个用于在所有项目中执行命令的工具。-c 后…

结合大语言模型整理叙述并生成思维导图的思路

楔子 我比较喜欢长篇大论。这在代理律师界被视为一种禁忌。 我高中一年级的时候因为入学成绩好(所在县榜眼名次),直接被所在班的班主任任命为班长。我其实不喜欢这个岗位。因为老师一来就要提前注意到,要及时喊“起立”、英语课…

spark-core编程2

Key-Value类型: foldByKey 当分区内计算规则和分区间计算规则相同时,aggregateByKey 就可以简化为 foldByKey combineByKey 最通用的对 key-value 型 rdd 进行聚集操作的聚集函数(aggregation function)。类似于aggregate()&…

原理图设计准备:页面栅格模板应用设置

一、页面大小的设置 (1)单页原理图页面设置 首先,选中需要更改页面尺寸的那一页原理图,鼠标右键,选择“Schmatic Page Properties”选项,进行页面大小设置。 (2)对整个原理图页面设…

关于异步消息队列的详细解析,涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结

以下是关于异步消息队列的详细解析,涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结: 一、异步消息核心概念与JMS模式对比 1. 异步消息核心组件 组件作用生产者发送消息到消息代理(如RabbitMQ、Kafka)。消息代理中间…

【深度洞察】解码饮料行业破局点:场景革命

当东鹏特饮以 “大瓶装 防尘盖” 精准解决货车司机的场景化需求,当农夫山泉通过 “冷藏版东方树叶” 打开年轻白领的早餐场景 —— 这些现象级案例背后,是饮料行业底层逻辑的深刻变革:真正的市场增量,藏在对消费场景的极致拆解中…

二、TorchRec中的分片

TorchRec中的分片 文章目录 TorchRec中的分片前言一、Planner二、EmbeddingTable 的分片TorchRec 中所有可用的分片类型列表 三、使用 TorchRec 分片模块进行分布式训练TorchRec 在三个主要阶段处理此问题 四、DistributedModelParallel(分布式模型并行)…

如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?

MyBatis 提供了 ExecutorType.BATCH 类型,允许将多个 SQL 语句进行组合,最后统一执行,从而减少数据库的访问频率,提升性能。 以下是如何在 Spring Boot 项目中使用 MyBatis 进行批量操作的关键点: 1. 配置 MyBatis 使…

Redis 字符串(String)详解

1. 什么是字符串类型 在 Redis 中,字符串(String) 是最基本的数据类型。它可以包含任何数据,比如文本、JSON、甚至二进制数据(如图片的 Base64 编码),最大长度为 512 MB。 字符串在 Redis 中不…

Elasticsearch 系列专题 - 第四篇:聚合分析

聚合(Aggregation)是 Elasticsearch 的强大功能之一,允许你对数据进行分组、统计和分析。本篇将从基础到高级逐步讲解聚合的使用,并结合实际案例展示其应用。 1. 聚合基础 1.1 什么是聚合(Aggregation)? 聚合是对文档集合的统计分析,类似于 SQL 中的 GROUP BY 和聚合…

YOLO学习笔记 | YOLOv8 全流程训练步骤详解(2025年4月更新)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 这里写自定义目录标题 一、数据准备1. 数据标注与格式转换2. 配置文件生…

context上下文(一)

创建一个基础的context 使用BackGround函数,BackGround函数原型如下: func Background() Context {return backgroundCtx{} } 作用:Background 函数用于创建一个空的 context.Context 对象。 context.Background() 函数用于获取一个空的 cont…

Java中常见的设计模式

Java中常见的设计模式 Java 中有 23 种经典设计模式,通常被分为三大类:创建型、结构型和行为型。每个设计模式都解决了不同类型的设计问题。以下是几种常见设计模式的总结,并附带了实际应用场景、示例代码和详细的注释说明。 一、创建型设计…

责任链设计模式(单例+多例)

目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客!26届java选手,一起加油💘💦👨‍🎓😄😂 最近在…

springboot 处理编码的格式为opus的音频数据解决方案【java8】

opus编码的格式概念: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用…

vue项目引入tailwindcss

vue3项目引入tailwindcss vue3 vite tailwindcss3 版本 初始化项目 npm create vitelatest --template vue cd vue npm install npm run dev安装tailwindcss3 和 postcss 引入 npm install -D tailwindcss3 postcss autoprefixer // 初始化引用 npx tailwindcss init -p…

Google ADK(Agent Development Kit)简要示例说明

一、环境准备与依赖安装 1.1 系统 硬件: GPU NVIDIA 3070加速模型推理,内存64GB软件: Python 3.11Docker 28.04(用于容器化部署)Kubernetes 1.25(可选,用于集群管理) 1.2 安装 A…

批量给文件编排序号,支持数字序号及时间日期序号编排文件

当我们需要对文件进行编号的时候,我们可以通过这个工具来帮我们完成,它可以支持从 001 到 100 甚至更多的数字序号编号。也可以支持按照日期、时间等方式对文件进行编号操作。这是一种操作简单,处理起来也非常的高效文件编排序号的方法。 工作…