Python unittest模块实战:从函数测试到断言详解
本文详细介绍如何使用Python内置的unittest模块进行代码测试。通过构建姓名处理函数示例,演示如何创建继承自TestCase的测试类,编写测试用例验证函数行为,并解析assertEqual等常用断言方法。内容涵盖测试代码编写、执行结果分析及报告生成,帮助开发者掌握基础的自动化测试技能。
前言
在开发函数或类时,编写相应的测试代码是确保质量的关键环节。通过执行测试,可以验证代码在面对不同输入场景时,是否都能按照预期逻辑正确运行。
本文将重点讲解如何利用Python标准库中的unittest模块工具,对代码进行系统性的测试。
测试函数
首先,我们编写一个基础函数,该函数接收姓、名以及可选的中间名三个参数,并返回格式化后的完整姓名。
names.py
def get_fullname(firstname,lastname,middel=''):
'''创建全名'''
if middel:
full_name = firstname + ' ' + middel + ' ' + lastname
return full_name.title()
else:
full_name = firstname + ' ' + lastname
return full_name.title()
接着,在当前目录下编写一个调用该函数的交互程序。
get_name.py
from names import get_fullname
message = "Please input 'q' to quit."
print(message)
while True:
first = input("Please input your firstname: ")
if first == 'q':
break
last = input("Please input your lastname: ")
if last == 'q':
break
middels = input("Please input your middel name or None: ")
if last == 'q':
break
formant_name = get_fullname(first,last,middels)
print("\tYour are fullname is: " + formant_name.title())
程序运行时的调用结果如下:
Please input 'q' to quit. Please input your firstname: xiao Please input your lastname: peng Please input your middel or None: Your are fullname is: Xiao Peng Please input your firstname: xiao Please input your lastname: peng Please input your middel or None: you Your are fullname is: Xiao You Peng Please input your firstname: q
进程已结束,退出代码0
创建测试程序
虽然掌握创建测试用例的语法需要一定的适应过程,但一旦用例建立,针对函数的单元测试将变得十分简便。具体操作为:首先导入unittest模块及待测试的函数,随后创建一个继承自unittest.TestCase的类。
在该类中,编写一系列方法以从不同角度测试函数的行为表现。
接下来,我们将演示如何测试前述names.py中的函数,以确认其能否正确获取并格式化姓名。
Test_get_name.py
import unittest
from names import get_fullname
class NamesTestCase(unittest.TestCase):
'''定义测试类'''
def test_get_name2(self):
'''测试2个字的名字'''
formatied_name2 = get_fullname('xiao','pengyou')
self.assertEqual(formatied_name2,'Xiao Pengyou')
def test_get_name3(self):
'''测试3个字的名字'''
formatied_name3 = get_fullname('xiao','peng',middel='you')
self.assertEqual(formatied_name3,'Xiao Peng You')
if __name__ == '__init__':
unittest.main()
测试执行结果如下:
Ran 2 tests in 0.034s
OK
上述两个单元测试用例均通过测试。
在当前的大目录下会生成一个测试报告,可以通过浏览器进行打开查看。

由图可知,两个测试通过,并显示测试的时间!!!
unittest.TestCase的各种断言方法
unittest各种断言方法
| 方 法 | 用 途 |
| 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中 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













