您现在的位置是:首页 >其他 >第九章 测试代码网站首页其他
第九章 测试代码
简介第九章 测试代码
引言
- 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!
一、测试
- Python标准库中模块unittest提供了代码测试工具。
- 单元测试:用于核实函数的某方面没有问题。
- 测试用例:是一组单元测试,他们一起核实函数在各种情况下的行为都符合要求。
- 良好的测试用例,考虑到了函数可能收到的各种输入,包含针对所有这些情形的测试。
- 全覆盖:全覆盖的测试用例包含一套单元测试,涵盖了各种可能的函数使用方式。对于大型项目,要进行全覆盖测试可能很难。通常最初只要针对代码的重要行为编写测试即可。等项目被广泛使用时,再考虑全覆盖。
- unittest类最有用的功能之一:断言方法。
二、实例
- unittest.TestCase类包含方法 setUp() 让我们只需创建这些对象一次,就能在每个测试方法中使用。
- 方法 assertEqual() 比较传入其内的两个参数,如果它们相等,就通过测试,如果它们不等,则给出相应的反馈。
- 方法名必须以test打头,这样它才会在我们运行测试模块时自动运行。
- if 代码块检查特殊变量__name__,这个变量是在程序执行时设置的。如果这个文件作为主程序执行,变量__name__将被设置为__main__。在这里调用unittest.main来运行测试用例。如果这个文件被测试框架导入变量__name__的值将不再是__mian__,因此不会调用unittest.main。
import unittest
from book import Book
class TestBook(unittest.TestCase):
"""对Book类的测试"""
def setUp(self):
"""创建测试用的对象"""
self.book1=Book('平凡的世界',105) #将Book类的实例用作TestBook类的属性
self.number=[2134,3123,9999]
def test_change_num(self):
"""测试修改图书编号为不同的值均能成功"""
for num in self.number:
self.book1.change_num(num)
self.assertEqual(num,self.book1.number)
if __name__=='__main__':
unittest.main()
三、测试结果
- 运行测试用例时,每完成一个单元测试,python都打印一个字符:测试通过时,打印一个句点,测试引发错误时打印一个E,测试导致断言失败时打印一个F。
- 测试通过,意味着函数的行为是对的,测试未通过意味着编写的新代码有错误。测试未通过时,不要修改测试,而应修复导致测试不能通过的代码。
#成功输出:
# .
# -------------------------------------------------------------------
# Ran 1 test in 0.000s
# OK
#失败输出:
# F
# ====================================================================
# FAIL: test_change_num (__main__.TestBook)
# 测试修改图书编号为不同的值均能成功
# --------------------------------------------------------------------
# Traceback (most recent call last):
# File "D:/PythonExp/PythonExp1/T1.py", line 17, in test_change_num
# self.assertEqual(num, self.book1.number)
# AssertionError: 2134 != 0
# --------------------------------------------------------------------
# Ran 1 test in 0.000s
# FAILED (failures=1)
四、各种断言方法
方法 | 用途 |
---|---|
assertEqual(a,b) | 核实 a==b |
assertNotEqual(a,b) | 核实 a!=b |
assertTrue(x) | 核实 x 为 True |
assertFalse(x) | 核实 x 为 False |
assertIn(item,list) | 核实item在list中 |
assertNotIn(item,list) | 核实item不在list中 |
参考资料:
[1] Eric Matthes. Python编程从入门到实践. 北京:人民邮电出版社, 2020.
[2]嵩天,礼欣,黄天羽. Python语言程序设计基础(第二版). 北京:高等教育出版社, 2017.
[3]Python语言程序设计,北京理工大学 嵩天
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。