Python unittest模块实战:从函数测试到断言详解

陆景行
陆景行
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍如何使用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中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表