复生娜免安装正式中文版
22.3G · 2025-09-16
Python自带的unittest
模块,其中assertEqual
、assertTrue
、assertFalse
这三个基础断言方法,是入门单元测试的“敲门砖”。今天就给大家分享一下它们的用法。
unittest
与断言,是代码的“质检组合”首先要明确:unittest
是Python内置的单元测试框架,能帮我们自动化验证代码逻辑是否正确;而“断言方法”就是这个框架里的“判断标准”——就像质检员检查产品时,会用“尺寸是否达标”“材质是否合格”作为标准,断言方法则用“值是否相等”“条件是否为真”来判断代码输出是否符合预期。
简单说,当你写了一个函数(比如计算两数之和),用断言方法就能自动检查“输入3+2,输出是不是5”,不用手动运行代码、盯着结果看。如果断言通过,说明代码逻辑没问题;如果不通过,会明确提示“哪里错了”,帮你快速定位bug。
assertEqual(a, b)
——检查“两个东西是不是一模一样”assertEqual
的作用很直接:判断a
和b
是否相等(即a == b
),如果相等,测试通过;如果不相等,测试失败并提示差异。它就像检查“两个苹果是不是一样重”“两张身份证号是不是完全相同”,是最常用的断言方法之一。
import unittest
class TestExample(unittest.TestCase):
def test_equal(self):
self.assertEqual(3 + 2, 5) # 通过:3+2的结果确实是5
self.assertEqual("hello", "hello") # 通过:两个字符串完全相同
self.assertEqual([1, 2], [1, 2]) # 通过:两个列表的元素和顺序都一致
如果把代码里的5
改成6
,运行测试时就会报错,提示“3+2 != 6”,帮你立刻发现“计算逻辑错了”。
assertTrue(x)
——检查“这个条件是不是真的”assertTrue
的作用是判断x
是否为“真”(即x
的布尔值是True
),如果是,测试通过;如果不是,测试失败。比如检查“今天是不是晴天”“这个学生的分数是不是及格了”,适合验证“某个条件是否成立”。
import unittest
class TestExample(unittest.TestCase):
def test_boolean(self):
self.assertTrue(1 == 1) # 通过:1等于1,条件成立
self.assertTrue("hello" in "hello world") # 通过:"hello"确实在"hello world"里
self.assertTrue(100 > 50) # 通过:100大于50,条件成立
assertEqual
更侧重“条件判断”);比如你写了个“判断用户年龄是否成年”的函数,输入20,就能用self.assertTrue(age >= 18)
来验证结果是否正确。
assertFalse(x)
——检查“这个条件是不是假的”assertFalse
和assertTrue
是“相反搭档”:它判断x
是否为“假”(即x
的布尔值是False
),如果是,测试通过;如果不是,测试失败。比如检查“今天是不是下雨”“这个产品是不是过期了”,适合验证“某个条件一定不成立”。
import unittest
class TestExample(unittest.TestCase):
def test_false(self):
self.assertFalse(1 == 2) # 通过:1等于2是假的,条件不成立
self.assertFalse("python" in "hello world") # 通过:"python"不在"hello world"里
self.assertFalse(10 < 5) # 通过:10小于5是假的,条件不成立
比如你写了个“过滤敏感词”的函数,输入“badword”,就能用self.assertFalse("badword" in filtered_text)
验证“敏感词是不是被成功过滤了”。
这三个断言方法虽然简单,但用的时候有个小原则:“选最贴合场景的”:
assertEqual
(比assertTrue(a == b)
更清晰,失败时提示更具体);assertTrue
或assertFalse
(不用绕弯子写assertEqual(条件, True)
);if __name__ == '__main__': unittest.main()
,这样直接运行脚本就能执行所有测试用例。assertEqual
、assertTrue
、assertFalse
这三个方法,是Python单元测试的“基础工具”,能够帮你自动化验证代码逻辑,避免“手动测试漏看bug”“改了代码后旧问题复发”。