第11章 测试代码

本文介绍了Python中的单元测试和测试用例的概念,讲解了unittest模块的使用,包括编写测试用例、断言方法以及如何运行和解读测试结果。通过unittest.TestCase类创建测试类,并通过断言方法如assertEqual来验证函数输出是否符合预期。当测试未通过时,不应修改测试,而应修复代码以确保其正确性。示例中展示了如何为一个简单的`city`函数编写测试用例。
摘要由CSDN通过智能技术生成

1 测试概述

编写函数或类时,还可为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。

在程序中添加新代码时,程序员也可以对其进行测试,确认它们不会破坏程序既有的行为。

Python模块unittest中的工具来测试代码。程序员将学习编写测试用例,核实一系列输入都将得到预期的输出。

2 单元测试和测试用例

Python标准库中的模块unittest提供了代码测试工具。单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。

全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。
必须继承unittest.TestCase类,这样Python才知道如何运行你编写的测试。

2.1 断言方法

unittest类最有用的功能之一:一个断言方法。断言方法用来核实得到的结果是否与期望的结果一致。

断言方法检查程序员认为应该满足的条件是否确实满足。如果该条件确实满足,那么程序员对程序行为的假设就得到了确认,因此程序员就可以确信其中没有错误。如果程序员认为应该满足的条件实际上并不满足,那么Python将引发异常。

使用这些方法可核实返回的值等于或不等于预期的值、返回的值为True或False、返回的值在列表中或不在列表中。

2.2 测试未通过

检查的条件没错,测试通过了意味着函数的行为是对的,而测试未通过意味着程序员编写的新代码有错。因此,测试未通过时,不要修改测试,而应修复导致测试不能通过的代码:检查刚对函数所做的修改,找出导致函数行为不符合预期的修改。

3 测试类

  • 运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过时打印一个句点;测试引发错误时打印一个E;
  • 测试导致断言失败时打印一个F。这就是程序员运行测试用例时,在输出的第一行中看到的句点和字符数量各不相同的原因。
  • 如果测试用例包含很多单元测试,需要运行很长时间,就可通过观察这些结果来获悉有多少个测试通过了。

动手试一试

11-1 城市和国家:

city_functions.py

def city(city_name, county_name):
    message = city_name + " " + county_name
    return message.title()

test_cities.py

import unittest
from city_functions import city


class CityCountryNameTest(unittest.TestCase):
    def test_city_county(self):
        name = city('santiago', 'chile')
        self.assertEqual(name, 'Santiago Chile')


test = CityCountryNameTest()
test.test_city_county()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值