热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
生成全面的单元测试,覆盖边界情况和错误处理。
好的!在使用 pytest 对 add_numbers 函数编写全面的测试时,我们需要充分考虑正常情况、边界情况、错误处理和完整的覆盖性。以下是为函数 add_numbers 创建的完整测试代码:
我们需要测试的函数如下:
def add_numbers(a, b):
return a + b
将以下代码保存到 test_add_numbers.py 文件中或适合的测试文件中,用于运行 pytest。
import pytest
from your_module import add_numbers # 替换成实际模块名称
# 测试正常情况
def test_add_positive_numbers():
assert add_numbers(2, 3) == 5
def test_add_negative_numbers():
assert add_numbers(-2, -3) == -5
def test_add_mixed_numbers():
assert add_numbers(-2, 3) == 1
def test_add_zero():
assert add_numbers(0, 5) == 5
assert add_numbers(5, 0) == 5
assert add_numbers(0, 0) == 0
# 测试边界情况(大数值)
def test_large_numbers():
assert add_numbers(10**10, 10**10) == 2 * 10**10
assert add_numbers(-10**10, 10**10) == 0
def test_small_numbers():
assert add_numbers(1e-10, 1e-10) == 2e-10
assert add_numbers(-1e-10, -1e-10) == -2e-10
# 测试浮点数
def test_add_floats():
assert add_numbers(0.1, 0.2) == pytest.approx(0.3)
assert add_numbers(-0.1, 0.2) == pytest.approx(0.1)
# 测试错误处理
def test_add_invalid_types():
with pytest.raises(TypeError):
add_numbers("a", "b")
with pytest.raises(TypeError):
add_numbers(2, "b")
with pytest.raises(TypeError):
add_numbers(None, 2)
with pytest.raises(TypeError):
add_numbers([], {})
# 测试边界值和分支
def test_edge_cases():
# 测试整数与浮点数混合
assert add_numbers(5, 0.5) == 5.5
assert add_numbers(-1, 0.1) == pytest.approx(-0.9)
# 极小负数和正数相加
assert add_numbers(-1e-50, 1e-50) == 0
# 测试大数与小数混合
assert add_numbers(10**10, 1e-10) == pytest.approx(10**10 + 1e-10)
正常情况:
边界情况:
错误处理:
None、列表等)是否抛出合适的异常。浮点数的特殊测试:
pytest.approx 断言浮点数运算值,解决浮点数算术的误差问题。边界值:
保存测试代码后,运行以下命令来运行单元测试:
pytest test_add_numbers.py
在所有测试都通过时,pytest 会显示类似于以下内容:
=========================== test session starts ============================
collected 11 items
test_add_numbers.py ........... [100%]
=========================== 11 passed in 0.02s ============================
这些测试用例确保了 add_numbers 函数在各种正常场景、边界情况下的正确性,也涵盖了浮点误差和异常输入的处理。
好的,这是 addNumbers 函数的全面单元测试,将使用 Jest 来覆盖边界情况、错误处理和功能测试。以下是详细的示例代码:
addNumbers 函数const addNumbers = (a, b) => a + b;
addNumbers.test.jsconst addNumbers = require('./addNumbers');
describe('addNumbers', () => {
// 基本功能测试
test('adds two positive numbers correctly', () => {
expect(addNumbers(2, 3)).toBe(5);
});
test('adds a positive number and zero correctly', () => {
expect(addNumbers(5, 0)).toBe(5);
});
test('adds two zeroes correctly', () => {
expect(addNumbers(0, 0)).toBe(0);
});
test('adds two negative numbers correctly', () => {
expect(addNumbers(-3, -7)).toBe(-10);
});
test('adds a positive number and a negative number correctly', () => {
expect(addNumbers(10, -7)).toBe(3);
});
test('adds numbers resulting in zero correctly', () => {
expect(addNumbers(5, -5)).toBe(0);
});
// 边界情况测试
test('adds very large numbers correctly', () => {
const largeNumber1 = Number.MAX_SAFE_INTEGER; // 最大安全整数
const largeNumber2 = 1;
expect(addNumbers(largeNumber1, largeNumber2)).toBe(largeNumber1 + largeNumber2);
});
test('adds very small numbers correctly', () => {
const smallNumber1 = -Number.MAX_SAFE_INTEGER; // 最小安全整数
const smallNumber2 = -1;
expect(addNumbers(smallNumber1, smallNumber2)).toBe(smallNumber1 + smallNumber2);
});
// 非数值输入的错误处理
test('throws an error if inputs are not numbers (string input)', () => {
expect(() => addNumbers('5', 5)).toThrowError('Inputs must be numbers');
});
test('throws an error if inputs are not numbers (undefined input)', () => {
expect(() => addNumbers(undefined, 5)).toThrowError('Inputs must be numbers');
});
test('throws an error if inputs are not numbers (null input)', () => {
expect(() => addNumbers(null, 5)).toThrowError('Inputs must be numbers');
});
test('throws an error if inputs are not numbers (NaN input)', () => {
expect(() => addNumbers(NaN, 5)).toThrowError('Inputs must be numbers');
});
// 浮点数加法测试
test('adds floating point numbers correctly', () => {
expect(addNumbers(0.1, 0.2)).toBeCloseTo(0.3); // 使用 toBeCloseTo 处理浮点数精度问题
});
test('adds large floating point numbers correctly', () => {
expect(addNumbers(12345.678, 98765.432)).toBeCloseTo(111111.11);
});
});
addNumbers 函数以支持错误处理在现有的 addNumbers 函数编码中,并未处理非数值输入的错误情况。为了确保测试用例可以通过,需要对函数进行如下优化:
const addNumbers = (a, b) => {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Inputs must be numbers');
}
return a + b;
};
module.exports = addNumbers; // 如果需要测试,将其导出供 Jest 使用
项目的目录结构推荐如下:
project/
├── addNumbers.js // 功能实现
└── __tests__/
└── addNumbers.test.js // 测试文件
Number.MAX_SAFE_INTEGER 与 Number.MIN_SAFE_INTEGER。undefined、null、NaN)时,抛出合理错误。确保安装了 Jest:
npm install --save-dev jest
更新 package.json 中的 scripts:
"scripts": {
"test": "jest"
}
运行测试:
npm test
这将使用 Jest 执行测试并验证所有用例覆盖。
以下是一个全面的JUnit单元测试类,用于测试 addNumbers 方法。使用 JUnit 5(JUnit Jupiter)。为了达到全面覆盖,我们重点关注了正常情况、边界情况和潜在的错误处理。
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class AddNumbersTest {
// 测试对象
private final AddNumbers addNumbers = new AddNumbers();
@Test
void testAddPositiveNumbers() {
assertEquals(5, addNumbers.addNumbers(2, 3));
}
@Test
void testAddNegativeNumbers() {
assertEquals(-5, addNumbers.addNumbers(-2, -3));
}
@Test
void testAddPositiveAndNegative() {
assertEquals(1, addNumbers.addNumbers(3, -2));
}
@Test
void testAddZeroToNumber() {
assertEquals(5, addNumbers.addNumbers(5, 0));
assertEquals(0, addNumbers.addNumbers(0, 0));
}
@Test
void testAddLargeNumbers() {
assertEquals(2147483646, addNumbers.addNumbers(2147483646, 0));
}
@Test
void testAddNumbersWithOverflowCheck() {
int a = Integer.MAX_VALUE;
int b = 1; // 测试溢出是否会出现问题
assertThrows(ArithmeticException.class, () -> Math.addExact(addNumbers.calc());
帮助开发者快速生成全面、高质量、覆盖边界情况与错误处理的单元测试,从而提高代码可靠性和开发效率。
通过提示词快速生成复杂后台逻辑的单元测试代码,节省时间并提升项目代码质量。
高效覆盖潜在边界和错误场景,协助团队发现bug并优化测试流程。
快速生成标准化测试案例模板,减少人工检查测试覆盖率的时间成本。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期