一套好的单元测试对于任何项目的成功都至关重要。 但是,编写这些测试可能非常耗时,并且经常被忽视。 可帮助你生成这些测试。
示例方案
假设你有一个 Python 函数,用于在更新数据库之前验证数据。 你需要创建单元测试,以确保验证按预期方式执行。 你可以让 为你生成这些测试。
def validate_price(price: float):
if price <= 0:
raise ValueError("Price must be greater than 0")
if price > 1000:
raise ValueError("Price must be less than or equal to 1000")
示例提示
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
示例响应
注意
以下响应是示例。 响应是不确定的,所以你可能会得到与这里所显示的不同的响应。
如果这是你第一次请求 生成单元测试,它可能会询问你是否希望为项目配置单元测试。 在本示例中,我们假设你拒绝了此提议。
Copilot 将提供生成测试的策略,然后提供测试本身。
import unittest
from generate_unit_tests import validate_price
class TestValidateProduct(unittest.TestCase):
def test_price_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_negative(self):
with self.assertRaises(ValueError) as context:
validate_price(-10)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_above_limit(self):
with self.assertRaises(ValueError) as context:
validate_price(1500)
self.assertEqual(str(context.exception), "Price must be less than or equal to 1000")
def test_price_edge_case_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_edge_case_max(self):
try:
validate_price(1000)
except ValueError:
self.fail("validate_price() raised ValueError unexpectedly!")
if __name__ == '__main__':
unittest.main()