第11章 · 测试代码
使用unittest编写单元测试,测试函数和类,为代码建立自动化回归保障。
知识点讲解
单元测试与断言
使用unittest模块编写测试。测试用例继承 unittest.TestCase,方法以 test_ 开头,用断言方法验证结果,例如 assertEqual(a, b)、assertNotEqual()、assertTrue()、assertIn() 等。运行 python -m unittest 即可执行所有测试。
测试类与setUp
测试类与测试函数类似,但需要先创建被测类的实例。在测试类中定义 setUp() 方法,会在每个测试方法运行前自动执行,可在其中创建公共的测试对象,避免在每个测试方法中重复初始化。
代码示例
测试函数
演示unittest测试函数。
import unittest
from name_function import get_formatted_name
class NameTestCase(unittest.TestCase):
def test_first_last_name(self):
formatted = get_formatted_name("janis", "joplin")
self.assertEqual(formatted, "Janis Joplin")
if __name__ == "__main__":
unittest.main()
测试类与setUp
演示测试类与setUp方法。
import unittest
from survey import AnonymousSurvey
class TestSurvey(unittest.TestCase):
def setUp(self):
self.question = "你最喜欢什么语言?"
self.my_survey = AnonymousSurvey(self.question)
def test_single_response(self):
self.my_survey.store_response("python")
self.assertIn("python", self.my_survey.responses)
def test_three_responses(self):
for r in ["python", "c", "rust"]:
self.my_survey.store_response(r)
for r in ["python", "c", "rust"]:
self.assertIn(r, self.my_survey.responses)
if __name__ == "__main__":
unittest.main()