告别手动测试:使用shell_gpt实现AI驱动的自动化测试用例生成
你是否还在为编写大量重复的测试用例而头疼?是否希望有工具能自动生成高质量的测试代码,让你专注于更有价值的工作?本文将展示如何使用shell_gpt这款AI驱动的命令行工具,通过简单的自然语言描述,快速生成各种测试用例,彻底改变你的测试工作流程。
读完本文,你将能够:
- 使用shell_gpt快速生成单元测试和集成测试代码
- 利用聊天模式迭代优化测试用例
- 通过REPL交互模式实时调整测试逻辑
- 结合函数调用实现复杂测试场景的自动化
shell_gpt简介
shell_gpt是一款由AI大语言模型(LLM)驱动的命令行生产力工具,能够通过自然语言描述生成shell命令、代码片段和文档,无需离开终端即可提高工作效率。它支持Linux、macOS、Windows等多种操作系统,兼容PowerShell、CMD、Bash、Zsh等主流Shell。
项目核心功能模块包括:
- 命令行交互:sgpt/app.py
- 代码生成:sgpt/handlers/handler.py
- 聊天会话管理:sgpt/handlers/chat_handler.py
- REPL模式支持:sgpt/handlers/repl_handler.py
- 函数调用系统:sgpt/llm_functions/
安装与基础配置
首先,通过以下命令安装shell_gpt:
pip install shell-gpt
安装完成后,需要配置API密钥。默认情况下,shell_gpt使用OpenAI的API,你需要生成一个API密钥并在首次运行时输入,密钥将保存在~/.config/shell_gpt/.sgptrc文件中。
如果你更倾向于使用本地模型,可以通过Ollama集成来实现,具体配置可参考项目文档。
快速生成单元测试用例
shell_gpt最强大的功能之一是能够根据自然语言描述直接生成代码。对于测试用例生成,我们可以使用--code参数指定生成纯代码输出。
假设我们需要为一个简单的用户认证函数生成单元测试,只需运行:
sgpt --code "生成Python单元测试,测试一个用户认证函数,包括正确密码、错误密码、空值和特殊字符情况"
shell_gpt将输出完整的测试代码:
import unittest
from your_module import authenticate_user
class TestAuthenticateUser(unittest.TestCase):
def test_correct_password(self):
self.assertTrue(authenticate_user("valid_user", "correct_password"))
def test_incorrect_password(self):
self.assertFalse(authenticate_user("valid_user", "wrong_password"))
def test_empty_credentials(self):
self.assertFalse(authenticate_user("", ""))
self.assertFalse(authenticate_user("valid_user", ""))
self.assertFalse(authenticate_user("", "correct_password"))
def test_special_characters(self):
self.assertTrue(authenticate_user("user_with_@", "pass!@#$"))
if __name__ == "__main__":
unittest.main()
你可以直接将这段代码保存到文件中:
sgpt --code "生成Python单元测试,测试一个用户认证函数" > test_auth.py
使用聊天模式迭代优化测试用例
对于更复杂的测试场景,我们可以使用shell_gpt的聊天模式(sgpt/handlers/chat_handler.py),通过多轮对话逐步完善测试用例。
首先,启动一个新的聊天会话:
sgpt --chat test_auth "我需要测试一个用户认证API,它接收JSON格式的用户名和密码,返回JWT令牌或错误信息"
shell_gpt会回应确认,然后我们可以继续提供更多细节:
sgpt --chat test_auth "添加测试场景:1. 成功认证 2. 无效用户 3. 密码错误 4. 请求格式错误 5. 速率限制"
接着请求生成测试代码:
sgpt --chat test_auth "使用pytest和requests库生成测试代码,包含setup和teardown"
这种迭代方式允许我们逐步完善测试需求,最终得到符合预期的完整测试用例。
REPL模式实时测试开发
shell_gpt的REPL模式提供了一个交互式环境,可以实时生成和调整测试代码。通过--repl参数启动一个临时会话:
sgpt --repl test_repl --code
进入REPL模式后,我们可以交互式地开发测试用例:
>>> 为一个计算斐波那契数列的函数写单元测试
>>> 添加边界条件测试:n=0, n=1, n=负数
>>> 使用参数化测试减少重复代码
>>> 生成完整的pytest测试文件
这种实时交互方式特别适合探索性测试开发,你可以根据AI的反馈立即调整思路,快速迭代测试用例设计。
测试用例生成工作流
结合shell_gpt的各种功能,我们可以构建一个高效的测试用例生成工作流:
- 需求分析:使用自然语言描述测试目标和范围
- 场景设计:通过聊天模式细化测试场景
- 代码生成:生成初始测试代码框架
- 参数优化:调整测试参数和边界条件
- 执行验证:运行测试并分析结果
- 迭代改进:根据失败情况优化测试用例
以下是一个完整的工作流示例:
# 1. 启动新的聊天会话,描述测试目标
sgpt --chat user_service_test "我需要测试用户服务的CRUD API"
# 2. 添加详细测试场景
sgpt --chat user_service_test "测试场景包括:创建用户、获取用户、更新用户、删除用户、权限验证"
# 3. 生成初始测试代码
sgpt --chat user_service_test --code "使用Python的requests库和pytest生成测试代码"
# 4. 保存测试代码到文件
sgpt --chat user_service_test --code "将刚才的测试代码保存为test_user_service.py,添加必要的导入和fixture" > test_user_service.py
# 5. 执行测试
pytest test_user_service.py -v
# 6. 根据测试结果优化
sgpt --chat user_service_test "修复测试失败:添加对404状态码的处理,增加重试机制"
高级应用:自定义测试函数
shell_gpt支持创建自定义函数来扩展其能力。我们可以定义一个专门用于测试用例生成的函数,使其更符合特定项目的需求。
首先,安装默认函数集:
sgpt --install-functions
然后创建自定义测试生成函数,保存到~/.config/shell_gpt/functions/generate_test.py:
from pydantic import Field
from instructor import OpenAISchema
class Function(OpenAISchema):
"""
生成特定类型的测试用例代码
"""
test_type: str = Field(..., example="unit, integration, e2e", description="测试类型")
framework: str = Field(..., example="pytest, unittest, jest", description="测试框架")
scenario: str = Field(..., description="详细的测试场景描述")
class Config:
title = "generate_test"
@classmethod
def execute(cls, test_type: str, framework: str, scenario: str) -> str:
# 调用LLM生成特定测试代码
from sgpt.handlers.handler import completion
from sgpt.role import SystemRole, DefaultRoles
role = SystemRole.get(DefaultRoles.CODE.value)
prompt = f"生成{test_type}测试,使用{framework}框架,场景:{scenario}"
return completion(role=role, prompt=prompt)
之后就可以在shell中直接调用这个自定义函数:
sgpt "生成API集成测试,使用pytest和requests,测试用户注册和登录流程"
实际案例:Web API测试套件
让我们通过一个完整的案例展示如何使用shell_gpt生成Web API的测试套件。
首先,启动一个新的聊天会话:
sgpt --chat api_test "我要测试一个电子商务网站的API,包括产品、订单和用户管理"
定义API端点和认证方式:
sgpt --chat api_test "API基础URL: https://api.example.com/v1,使用Bearer令牌认证"
生成测试框架:
sgpt --chat api_test --code "生成测试框架,包含认证fixture,使用pytest和requests"
添加产品API测试:
sgpt --chat api_test --code "添加产品API测试:获取列表、获取详情、创建、更新、删除"
最后生成完整的测试套件结构:
sgpt --chat api_test --code "组织测试文件结构,分离测试模块,添加README说明测试运行方法"
通过这种方式,我们可以快速构建一个完整的API测试套件,涵盖所有关键功能点。
总结与展望
使用shell_gpt生成测试用例可以显著提高测试效率,减少手动编写测试的工作量。通过自然语言描述测试需求,我们可以快速获得高质量的测试代码,同时保持测试的全面性和准确性。
shell_gpt的主要优势在于:
- 降低入门门槛:无需深入了解测试框架细节
- 提高效率:几分钟内生成原本需要几小时编写的测试
- 增强全面性:AI可以提出开发者可能忽略的测试场景
- 易于维护:通过聊天历史记录跟踪测试需求变更
随着AI模型能力的不断提升,未来shell_gpt可能会实现更高级的测试功能,如自动识别代码中的功能点并生成相应测试、智能预测潜在缺陷并创建针对性测试等。
现在就尝试使用shell_gpt来改进你的测试工作流程,体验AI驱动的开发效率提升!
相关资源
- 官方文档:README.md
- 测试模块源码:tests/
- 函数定义示例:sgpt/llm_functions/common/execute_shell.py
- 角色配置:sgpt/role.py
- 缓存管理:sgpt/cache.py
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00