python3断言

本文通过Python的unittest模块创建了一个简单的单元测试案例,测试了除法函数在不同输入情况下的表现,包括正常数值输入及除数为零的情况。
import  unittest
def div(a,b):
    return  a / b


class TestDiv(unittest.TestCase):
    def test_1_div_1(self):
        self.assertEqual(div(1,1),1/1)
    def test_3_div_4(self):
        self.assertEqual(div(3,4),3/4)
    def test_3_div_0(self):
        self.assertRaises(ZeroDivisionError,div,3,0)
if __name__ == '__main__':
    unittest.main()
<think>我们被要求介绍Python中常用的断言(assert)语句,并按照规则在最后提出3-5个相关问题。 首先,回答关于Python常用断言的问题。 Python中的断言是一种调试工具,用于测试一个条件,如果条件为假,就会触发一个AssertionError异常。 基本语法:assert condition, message 其中,condition是要测试的条件表达式,如果为False,则抛出异常;message是可选的错误消息。 常用场景: 1. 检查函数参数:确保传入的参数满足某些条件。 2. 检查中间状态:在程序执行过程中,验证某些中间结果是否符合预期。 3. 检查函数返回值:确保函数返回了正确的结果。 注意:断言通常用于开发和测试阶段,可以通过运行Python时加上-O(大写字母O)选项来全局禁用断言(此时断言语句将被忽略)。 示例: 假设我们有一个计算除法的函数,我们可以使用断言来确保除数不为0: def divide(a, b): assert b != 0, "除数不能为0" return a / b 但是要注意,在生产环境中,断言可能被禁用,因此对于不可恢复的错误(如用户输入错误),应该使用异常处理而不是断言。 另外,Python中还有一些测试框架(如unittest、pytest)提供了更丰富的断言方法,例如: - unittest: self.assertEqual(), self.assertTrue(), self.assertRaises()等 - pytest: 使用assert语句即可,pytest会提供详细的错误信息。 下面给出一些常用的断言方法(在unittest中): self.assertEqual(a, b) # 判断a == b self.assertNotEqual(a, b) # 判断a != b self.assertTrue(x) # 判断x为True self.assertFalse(x) # 判断x为False self.assertIs(a, b) # 判断a is b self.assertIsNot(a, b) # 判断a is not b self.assertIsNone(x) # 判断x is None self.assertIsNotNone(x) # 判断x is not None self.assertIn(a, b) # 判断a in b self.assertNotIn(a, b) # 判断a not in b self.assertIsInstance(a, b) # 判断isinstance(a, b) self.assertNotIsInstance(a, b) # 判断not isinstance(a, b) 在pytest中,可以直接使用assert语句,并且pytest会重写assert语句以提供更友好的错误信息。 现在,按照要求,在回答的最后提出3-5个相关问题,并以“§§相关问题§§”开头,然后列出问题。</think>### Python 常用断言详解 在 Python 中,断言(`assert`)是用于调试的关键工具,用于验证代码执行中的条件是否满足。如果条件为假,会立即抛出 `AssertionError` 异常。以下是常见用法和场景: #### 1. **基础语法** ```python assert condition, "错误信息" # 条件为 False 时触发异常 ``` #### 2. **常见断言场景** - **变量验证** ```python age = 17 assert age >= 18, "年龄必须 ≥18 岁" ``` - **类型检查** ```python value = "hello" assert isinstance(value, int), "需要整数类型" ``` - **集合内容检查** ```python names = ["Alice", "Bob"] assert "Bob" in names, "Bob 不在名单中" ``` - **函数返回值验证** ```python def add(a, b): return a + b result = add(2, 3) assert result == 5, f"预期结果 5,实际得到 {result}" ``` - **空值检查** ```python data = get_data() assert data is not None, "数据不能为空" ``` #### 3. **高级用法** - **异常断言**(需配合 `pytest` 或 `unittest`): ```python # pytest 示例 import pytest def test_divide(): with pytest.raises(ZeroDivisionError): 1 / 0 ``` - **自定义断言消息** ```python x, y = 5, 10 assert x > y, f"{x} 必须大于 {y}" ``` #### 4. **注意事项** - **禁用断言**:通过 `python -O` 启动解释器会全局禁用断言。 - **替代方案**:生产环境中建议用 `if...raise` 替代断言,避免因禁用断言导致逻辑跳过。 - **测试框架**:单元测试推荐使用 `unittest` 或 `pytest` 的专用断言方法(如 `self.assertEqual()`),提供更丰富的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值