【AI赋能 Python编程】 第十三章 AI辅助单元测试生成指南

AI赋能 Python编程-系列文章目录

第十三章 AI辅助单元测试生成指南


文章目录

  • AI赋能 Python编程-系列文章目录
    • 第十三章 AI辅助单元测试生成指南
  • 前言
    • 基础角色设定提示词
    • 代码分析提示词
    • 测试原则提示词
    • 综合优化提示词
    • 使用示例
    • 注意事项


前言

在现代软件开发中,单元测试是保证代码质量的重要基石。然而,编写全面且高质量的单元测试往往是一项耗时且具有挑战性的工作。随着 AI 技术的发展,我们现在可以借助 AI 的力量来协助生成高质量的单元测试代码。本文提供了一系列经过精心设计的提示词模板,帮助开发者更好地利用 AI 来生成符合最佳实践的单元测试。

这些提示词模板涵盖了从基础角色设定到具体代码分析,从测试原则到综合优化等多个方面。通过使用这些模板,开发者可以引导 AI 生成更加全面、严谨和可维护的单元测试代码。无论是处理简单的函数测试,还是复杂的类测试,这套提示词体系都能帮助您快速构建起可靠的测试用例集。


基础角色设定提示词

你是一位在软件测试领域经验丰富的工程师,拥有丰富的单元测试编写经验和扎实的编程技能。你的任务是根据我提供的代码,为其生成全面、严谨、高效的单元测试。请你仔细分析我的代码,识别其中的关键逻辑、边界条件和可能的异常情况,并据此设计测试用例。

代码分析提示词

以下是我需要进行单元测试的代码,请仔细阅读:
[代码块]

这段代码的主要功能是:[功能描述]
输入参数包括:[参数说明]
输出结果为:[返回值说明]
可能出现的异常情况有:[异常列表]

请你根据这些信息,为这段代码生成尽可能全面、严谨的单元测试。测试用例应覆盖所有的关键逻辑、边界条件和异常情况。生成的测试代码需要与我提供的代码风格保持一致。

测试原则提示词

在生成单元测试的过程中,请你遵循以下原则:
1. 测试用例应该是自动化、可重复执行的。
2. 每个测试用例应该是独立的,不依赖于其他测试用例的执行结果。
3. 测试用例应该覆盖正向场景和异常场景。
4. 测试用例的命名应该清晰、规范,体现其测试的功能。
5. 测试用例应该验证代码的功能正确性,而不仅仅是语法正确性。

请严格遵循这些原则,生成高质量、可维护的单元测试代码。

综合优化提示词

你是一位在软件测试领域经验丰富的工程师,拥有丰富的单元测试编写经验和扎实的编程技能。你的任务是根据我提供的代码,为其生成全面、严谨、高效的单元测试。

以下是我需要进行单元测试的代码,请仔细阅读:
[代码块]

这段代码的主要功能是:[功能描述]
输入参数包括:[参数说明]
输出结果为:[返回值说明]
可能出现的异常情况有:[异常列表]

在生成单元测试的过程中,请你遵循以下原则:
1. 测试用例应该是自动化、可重复执行的。
2. 每个测试用例应该是独立的,不依赖于其他测试用例的执行结果。
3. 测试用例应该覆盖正向场景和异常场景。 
4. 测试用例的命名应该清晰、规范,体现其测试的功能。
5. 测试用例应该验证代码的功能正确性,而不仅仅是语法正确性。

请严格遵循这些原则,根据我提供的代码信息,生成高质量、可维护的单元测试代码,测试用例应覆盖所有的关键逻辑、边界条件和异常情况,并与我提供的代码风格保持一致。

使用示例

以Python代码为例,您可以这样使用这些提示词:

  1. 首先提供您需要测试的代码:
def calculate_discount(price: float, quantity: int) -> float:
    """
    计算商品折扣价格
    
    参数:
    price: 商品单价
    quantity: 购买数量
    
    返回:
    float: 折扣后的总价
    
    异常:
    ValueError: 当价格或数量为负数时
    """
    if price < 0 or quantity < 0:
        raise ValueError("价格和数量必须为正数")
        
    total = price * quantity
    
    if quantity >= 10:
        discount = 0.2
    elif quantity >= 5:
        discount = 0.1
    else:
        discount = 0
        
    return total * (1 - discount)
  1. 使用综合优化提示词,填入相关信息:
[插入综合优化提示词,并填入代码和说明信息]
  1. AI会生成相应的单元测试代码:
import pytest

def test_calculate_discount_normal():
    assert calculate_discount(100, 1) == 100
    
def test_calculate_discount_small_quantity():
    assert calculate_discount(100, 3) == 300
    
def test_calculate_discount_medium_quantity():
    assert calculate_discount(100, 7) == 900  # 10% 折扣
    
def test_calculate_discount_large_quantity():
    assert calculate_discount(100, 12) == 960  # 20% 折扣
    
def test_calculate_discount_negative_price():
    with pytest.raises(ValueError):
        calculate_discount(-100, 1)
        
def test_calculate_discount_negative_quantity():
    with pytest.raises(ValueError):
        calculate_discount(100, -1)

注意事项

  1. 提供代码时包含完整的文档字符串和类型提示
  2. 说明所有可能的异常情况
  3. 描述代码的业务逻辑和边界条件
  4. 根据AI生成的测试用例进行补充和调整

这些提示词模板可以帮助您更好地利用AI生成单元测试,记得根据实际情况适当调整。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Stable Diffusion】安装教程

目录 一、python 安装教程 二、windows cuda安装教程 三、Stable Diffusion下载 四、Stable Diffusion部署&#xff08;重点&#xff09; 一、python 安装教程 &#xff08;1&#xff09;第一步下载 打开python下载页面&#xff0c;找到python3.10.9&#xff0c;点击右边…

Scala身份证上的秘密以及Map的遍历

object test {def main(args: Array[String]): Unit {val id "42032220080903332x"//1.生日是&#xff1f;//字符串截取val birthday id.substring(10,14) //不包括终点下标println(birthday)val year id.substring(6,10) //println(year)//性别&#xff1a;倒数第…

springboot 异步 @Async 的日常使用及失效场景

文章目录 springboot 异步 Async 的日常使用引言一、Async 使用位置二、Async 使用三、注解 Async 失效的情况&#xff08;1&#xff09;调用同一个类中的异步方法&#xff08;内部调用&#xff09;&#xff08;2&#xff09;未使用 EnableAsync 注解&#xff08;3&#xff09;…

Laravel8.5+微信小程序实现京东商城秒杀方案

一、商品秒杀涉及的知识点 鉴权策略封装掊口访问频次限制小程序设计页面防抖接口调用订单创建事务使用超卖防御 二、订单库存系统方案&#xff08;3种&#xff09; 下单减库存 优点是库存和订单的强一致性&#xff0c;商品不会卖超&#xff0c;但是可能导致恶意下单&#xff…

三角网格体的光滑性问题

三角网格体的光滑性问题 在计算机图形学和计算机辅助设计中&#xff0c;C0连续性&#xff08;也称为位置连续性&#xff09;是指两个曲线或曲面在它们的公共边界上具有相同的位置。这意味着它们在边界处没有缝隙或重叠&#xff0c;但它们的切线方向可以不同。C0连续性是最低级…

独家|京东调整职级序列体系

原有的M、P、T、S主序列将正式合并为新的专业主序列P。 作者|文昌龙 编辑|杨舟 据「市象」独家获悉&#xff0c;京东已在近日在内部宣布对职级序列体系进行调整&#xff0c;将原有的M、P、T、S主序列正式合并为新的专业主序列P&#xff0c;合并后的职级体系将沿用原有专业序…

Echarts 绘制地图

一、Apache Echarts 官网地址&#xff1a;https://echarts.apache.org/ npm install echarts --save 二、获取地图的GeoJSON 地址&#xff1a;DataV.GeoAtlas地理小工具系列 左侧是地图&#xff0c;右侧是JSON数据路径&#xff0c;点击你想要生成的地图省市、地级&#xff0…

想入手养宠宠物空气净化器,养宠宠物空气净化器哪个好?

家里有了宠物后&#xff0c;确实多了很多欢乐&#xff0c;但掉落的毛发也多了不少&#xff0c;特别是换毛期&#xff0c;掉毛问题真的很让人头疼&#xff01;作为养了多年宠物的铲屎官&#xff0c;我真心推荐大家买一台宠物空气净化器&#xff0c;它能大大提升家里的空气质量&a…

ASUS/华硕ROG掌机 2023款 RC71 NR2301原厂win11系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

nginx 升级http 到 http2

同步发布于我的网站 &#x1f680; 背景介绍准备工作配置过程遇到的问题及解决方法验证升级总结参考资料 背景介绍 HTTP/2 是 HTTP 协议的最新版本&#xff0c;相比 HTTP/1.1&#xff0c;它带来了多项重要的改进&#xff0c;包括多路复用、头部压缩和服务端推送。这些特性可…

Spark 内存管理机制

Spark 内存管理 堆内内存和堆外内存 作为一个 JVM 进程&#xff0c;Executor 的内存管理建立在 JVM(最小为六十四分之一&#xff0c;最大为四分之一)的内存管理之上&#xff0c;此外spark还引入了堆外内存&#xff08;不在JVM中的内存&#xff09;&#xff0c;在spark中是指不…

透视投影(Perspective projection)与等距圆柱投影(Equirectangular projection)

一、透视投影 1.方法概述 Perspective projection&#xff08;透视投影&#xff09;是一种模拟人眼观察三维空间物体时的视觉效果的投影方法。它通过模拟观察者从一个特定视点观察三维场景的方式来创建二维图像。在透视投影中&#xff0c;远处的物体看起来比近处的物体小&…

uniapp开发微信小程序笔记8-uniapp使用vant框架

前言&#xff1a;其实用uni-app开发微信小程序的首选不应该是vant&#xff0c;因为vant没有专门给uni-app设置专栏&#xff0c;可以看到目前Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 但是vant的优…

Spring Web MVC其他扩展(详解下)

文章目录 Spring MVC其他扩展&#xff08;下&#xff09;异常处理异常处理机制声明式异常好处基于注解异常声明异常处理 拦截器拦截器概念拦截器使用拦截器作用位置图解拦截器案例拦截器工作原理源码 参数校验校验概述操作演示SpringMVC自定义参数验证ValueObject(VO) 文件上传…

【线上问题记录 | 排查网络连接问题】

问题描述 现在有我们程序是部署在服务器A的&#xff0c;A链接的是B。程序从B的redis进行存储和取数据的。 我们的业务是: 信息展示&#xff0c;也就是如果发现机器有异常了&#xff0c;实时进行监控。突然发现有一天&#xff0c;信息显示延迟了。 然后我们就开始排查究竟什么原…

如何保护LabVIEW程序免遭反编译

在正常情况下&#xff0c;LabVIEW程序&#xff08;即编译后的可执行文件或运行时文件&#xff0c;如 .exe 或 .llb&#xff09;无法直接被反编译出源码。然而&#xff0c;有一些需要特别注意的点&#xff1a; 1. LabVIEW的编译机制 LabVIEW编译器会将源码&#xff08;.vi文件&a…

求助:selenium.common.exceptions.SessionNotCreatedException: x x x

1.背景 想要使用python代码接管已打开的浏览器&#xff0c;减少重复登录或者selenium用例执行前的又臭又长的流程 2.报错截图 3.场景 目前是已开启浏览器调试模式且终端未关闭&#xff0c;执行上图中的代码后没有自动输入url且报错 4. 分析 我尝试了add_experimental_optio…

40分钟学 Go 语言高并发:【实战课程】工作池(Worker Pool)实现

工作池&#xff08;Worker Pool&#xff09;实战实现 一、知识要点概述 模块核心功能实现难点重要程度池化设计管理协程生命周期并发安全、资源控制⭐⭐⭐⭐⭐动态扩缩容根据负载调整池大小平滑扩缩、性能优化⭐⭐⭐⭐任务分发合理分配任务到worker负载均衡、任务优先级⭐⭐⭐…

Could not locate device support files.

报错信息&#xff1a;Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题&#xff1a;xcode15升级到xcode16之后&#xff0c;13.…

Ubantu系统docker运行成功拉取失败【成功解决】

解决docker运行成功拉取失败 失败报错 skysky-Legion-Y7000-IRX9:~$ docker run hello-world docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial uni…