ai理解需求生成测试用例-deepseek

news/2025/3/13 17:19:15/文章来源:https://www.cnblogs.com/richered/p/18770364

ai:把用例捡起来!把用例捡起来!

给大模型需求文档,让它完成设计用例,编写用例,包括功能用例、接口用例、自动化测试用例,自执行~最后发送至工作群中

直接使用deepseek即可

 

执行一下看看:

 调用ds分析需求:

 生成功能/接口用例:

 生成自动化用例:

 

 

 看一下自动生成的功能用例和接口用例:

# 为了验证用户登录功能,我们将使用 `pytest` 框架和 `requests` 库来进行 API 测试。以下是一个示例代码,展示了如何实现这个测试用例。
#
# ### 安装依赖
# 首先,确保你已经安装了 `pytest` 和 `requests` 库。如果没有安装,可以使用以下命令进行安装:
#
# ```bash
# pip install pytest requests
# ```
#
# ### 测试代码
#
# ```python
import pytest
import requests# 定义登录API的URL
LOGIN_URL = "http://127.0.0.1:5000/login"# 测试用例:验证用户登录功能
def test_user_login():# 定义测试数据username = "user1"password = "password1"# 构造请求体payload = {"username": username,"password": password}# 发送POST请求到登录API端点response = requests.post(LOGIN_URL, json=payload)# 验证响应状态码是否为200assert response.status_code == 200, f"Expected status code 200, but got {response.status_code}"# 解析API响应response_data = response.json()# 验证响应中是否包含预期的字段assert "token" in response_data, "Response does not contain 'token' field"assert "user_id" in response_data, "Response does not contain 'user_id' field"# 验证token和user_id是否有效assert isinstance(response_data["token"], str), "Token is not a string"assert isinstance(response_data["user_id"], int), "User ID is not an integer"# 运行测试
if __name__ == "__main__":pytest.main()
# ```
#
# ### 代码说明
#
# 1. **LOGIN_URL**: 这是登录API的URL,你需要将其替换为实际的API端点。
#
# 2. **test_user_login**: 这是测试函数,使用 `pytest` 框架进行测试。
#
# 3. **payload**: 这是发送到API的请求体,包含用户名和密码。
#
# 4. **requests.post**: 发送POST请求到登录API端点。
#
# 5. **assert response.status_code == 200**: 验证响应状态码是否为200,表示请求成功。
#
# 6. **response.json()**: 解析API响应为JSON格式。
#
# 7. **assert "token" in response_data**: 验证响应中是否包含 `token` 字段。
#
# 8. **assert "user_id" in response_data**: 验证响应中是否包含 `user_id` 字段。
#
# 9. **assert isinstance(response_data["token"], str)**: 验证 `token` 是否为字符串类型。
#
# 10. **assert isinstance(response_data["user_id"], int)**: 验证 `user_id` 是否为整数类型。
#
# ### 运行测试
#
# 你可以通过以下命令运行测试:
#
# ```bash
# pytest test_login.py
# ```
#
# 如果所有断言都通过,测试将成功完成。如果有任何断言失败,`pytest` 将输出详细的错误信息,帮助你定位问题。"""
自动化测试执行器
"""
import pytest
import os
import sys
from datetime import datetime
from typing import List, Dict
import json
from dotenv import load_dotenv# 添加项目根目录到Python路径
current_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.abspath(os.path.join(current_dir, "../../../.."))
src_dir = os.path.join(project_root, "ai-test-generator", "src")
sys.path.insert(0, src_dir)# 加载环境变量
env_path = os.path.join(project_root, "ai-test-generator", ".env")
print(f"正在加载环境变量文件: {env_path}")
load_dotenv(env_path)try:from test_reporter import TestReporter, TestResult
except ImportError as e:print(f"错误:无法导入test_reporter模块。请确保项目结构正确。")print(f"当前目录: {current_dir}")print(f"项目根目录: {project_root}")print(f"src目录: {src_dir}")print(f"Python路径: {sys.path}")raise edef run_tests(test_files: List[str] = None) -> bool:"""
    运行测试用例并生成报告Args:test_files: 要运行的测试文件列表,如果为None则运行所有测试Returns:bool: 所有测试是否通过"""
    print("\n开始执行测试...")# 初始化测试报告器reporter = TestReporter()# 如果没有指定测试文件,则运行所有测试if test_files is None:test_files = [f for f in os.listdir(os.path.dirname(__file__)) if f.endswith('_test.py') and f != '_automation.py']print(f"将运行所有测试文件: {test_files}")all_passed = Truefor test_file in test_files:test_path = os.path.join(os.path.dirname(__file__), test_file)test_id = os.path.splitext(test_file)[0]print(f"\n执行测试文件: {test_file}")# 记录测试执行start_time = datetime.now()try:# 运行测试result = pytest.main([test_path, '-v'])status = 'passed' if result == 0 else 'failed'error_msg = None if result == 0 else 'Test execution failed'if result != 0:all_passed = Falseprint(f"测试执行结果: {status}")except Exception as e:status = 'error'error_msg = str(e)all_passed = Falseprint(f"测试执行出错: {e}")duration = (datetime.now() - start_time).total_seconds()# 记录测试结果reporter.add_test_result(TestResult(test_id=test_id,test_name=test_file,test_type='api',status=status,duration=duration,error_message=error_msg,start_time=start_time.isoformat(),end_time=datetime.now().isoformat()))# 生成并保存报告reports_dir = os.path.join(project_root, "ai-test-generator", "test_cases", "reports")reporter.save_report(reports_dir)# 发送钉钉通知print("\n准备发送测试报告...")reporter.send_dingtalk_notification()print(f"\n测试执行完成,{'全部通过' if all_passed else '存在失败'}")return all_passedif __name__ == "__main__":# 获取命令行参数中的测试文件test_files = sys.argv[1:] if len(sys.argv) > 1 else None# 运行测试success = run_tests(test_files)# 设置退出码sys.exit(0 if success else 1)
metadata:id: FUNC_1__20250313_155452type: functionalfeature: 1._**用户登录功能**:generated_time: '2025-03-13T15:54:52.411287'
test_case:title: 用户登录功能测试description: 验证用户登录功能是否正常工作,确保用户能够通过正确的用户名和密码成功登录系统。test_type: functionalprerequisites:- 系统已安装并运行- 用户已注册并拥有有效的用户名和密码steps:- 打开登录页面- 输入有效的用户名- 输入有效的密码- 点击登录按钮expected_results:- 登录页面成功加载- 用户名和密码输入框接受输入- 登录按钮可点击- 用户成功登录并跳转到主页test_data:username: testuserpassword: testpassword

本地简单写了个登录接口,用生成的用例跑一下,看看收集结果以及发送结果的功能

接口:

 改改用例里面的url和参数:

 

 

 

 report中的内容:

发送的wehook通知:

 

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

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

相关文章

Win下的Cursor连MCP都是坑?

最近研究了下MCP(模型上下文协议),MCP是由Anthropic(Claude母公司)在2024年11月25日提出并开源的,算是一个比较新的东西。 目前已经被Claude桌面端、Cline、Continue、Cursor、Windsurf等工具应用。在Windows上还是有蛮多坑的,Mac调用会相对简单很多。先来说下MCP能做什…

足球滚球大小球技巧:现代化AI技术 基于机器学习的高精度预测模型与动态策略优化

​ 在足球竞技赛事领域,滚球大小球策略因其动态性和实时性成为复杂数据分析与机器学习(ML)技术的前沿应用场景。本文旨在通过系统化的数据建模与算法优化,探讨如何构建高精度的进球数预测模型,并制定动态调整的策略。文章将从数据预处理、特征工程、模型构建、实时预测优化…

Ubuntu git 上传项目代码

Ubuntu git 上传项目代码 记录使用实验室电脑第一次上传实验代码的过程。 配置SSH密钥 1、本机生成 RSA 密钥对 本机使用ssh-keygen -t rsa命令生成 RSA 密钥,前面步骤都忘记截图啦。根据生成的密钥所在目录,打开id_rsa.pub并复制。这里复制的是公钥。 2、github 配置 SSH KE…

打印机服务共享器

采购与财务,还是使用针式打印,为了方便用,以前购买了IP打印共享器。 某些原因,局域网改变,域更变了,IP肯也得改变。前辈们以前设置或是配置的打印机共享器,没有留下管理可用的信息。如上,固网HP-1007打印机共享器,只有重置啦,电源插口旁有一个“Init.”手上如果还有光…

数字先锋 | AI+政务,轻松跨语种!霍尔果斯政务服务升级蜕变

今年,义乌国际商贸城的一家袜子店火爆全网,商家通过搭载DeepSeek模型的AI视创工具,只需录制中文口型视频,即可通过系统自动生成阿拉伯语、西班牙语等多语种带货视频,将袜子生意做到了世界各地。 在全球化与数字化深度交织的今天,DeepSeek凭借自然语言处理尖端技术,不仅让…

25年湛江一模第19题(马尔可夫链 )

25年湛江一模第19题(马尔可夫链 )专题:概率+数列 题型:马尔可夫链 难度系数:★★★★题目 (25 年湛江一模第 19 题)甲参加了一场智力问答游戏,每轮游戏均有两类问题(难度系数较低的\(A\)类问题以及难度系数较高的\(B\)类问题)供选择,且每…

25 年湛江一模第8题(函数奇偶性+恒成立)

25 年湛江一模第8题(函数奇偶性+恒成立)专题:概率+数列 题型:马尔可夫链 难度系数:★★★★ 题目 (2025 年湛江一模第8题) 已知定义在\(\mathbf{R}\)上的函数\(f(x)\)为奇函数,且当\(x>0\)时,\(f(x)=e^{x}-a\),若\(\forall x \in \mathbf…

每美搭(1)

一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名:每美搭子们,组长博客链接 https://www.cnblogs.com/0623-k 1.1.2 团队项目描述 每美搭:每美搭是一款专注于服装搭配推荐的APP。它能精准获取用户个人基本体型、上传服装类型等多维度数据,结合地区天气、用户心情、服装…

嵌入向量计算示例

嵌入向量计算示例 1. 问题设定场景:电影推荐系统中用户对电影类型的偏好嵌入 输入特征:4种电影类型(动作片、喜剧片、科幻片、爱情片) 嵌入维度:n_e = 2 词汇大小:n_v = 42. 数据表示 (1)独热编码电影类型 独热编码向量动作片 [1, 0, 0, 0]喜剧片 [0, 1, 0, 0]科幻片 […

塔石串口服务器的工作模式有哪些

串口服务器通过支持多种工作模式,实现了串行接口与网络接口之间的数据透明传输,提供了灵活的网络通信解决方案。以下是串口服务器的几种常见工作模式:| TCP Server模式 在TCP Server模式下,串口服务器作为TCP服务器,等待客户端的连接请求。这种模式下,串口服务器会监听一…

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!

【正点原子】全志T113-i开发板震撼上市!异核开发、工控设计方案!新品上市,限时低价!ATK-DLT113IS开发板是正点原子基于全志T113-i处理器而研发的一款用于嵌入式Linux领域的开发板,其拥有高性能、高可靠性、低成本和丰富的接口资源,适用于嵌入式系统开发!T113-i芯片框架 …

Stochastic Orders 理解和相关运算(_随时补充)

Recall数学里,用\(o\)和\(O\)表示the order the terms. \(a_n = o(1)\). \(a_n = O(1)\).Stochastic order notation 是一种用来表示随机变量序列概率收敛的速记方法。 \(O_p(1)\)依概率有界; \(o_p(1)\)依概率收敛到0. \(X_n= O_p(a_n)\Leftrightarrow \frac{X_n}{a_n} =O_p…