Python自动化脚本-运维人员宝典第三章-单元测试-单元测试框架的介绍

Python Alan 6年前 (2019-02-19) 9989次浏览 0个评论 扫描二维码

精通Python自动化脚本-运维人员宝典完整目录:

第一章 Python脚本概述
第二章 Python脚本调试和性能测试
第三章 单元测试-单元测试框架的介绍
第四章 自动化常规运维活动
第五章 文件、目录和数据处理
第六章 文件存档、加密和解密
第七章 文本处理和正则表达式
第八章 文档和报告
第九章 操作各类文件
第十章 网络基础 – Socket编程
第十一章 使用Python脚本处理邮件
第十二章 使用Telnet和SSH远程监控主机
第十三章 创建图形化用户界面
第十四章 处理Apache和其它的日志文件
第十五章 SOAP和REST API通讯
第十六章 网络抓取 – 从网站上提取有用的信息
第十七章 数据收集及报表
第十八章 MySQL和SQLite数据库管理

对项目进行测试是软件开发的基本部分。本章中,我们将学习如何在Python中进行单元测试。Python中有一个称为unittest的模块,这就是一个单元测试框架。本章中我们将学习unittest这一框架。

本章中我们会学习如下课题:

  • 单元测试框架的介绍
  • 创建单元测试任务

什么是单元测试?

unittest是Python中的一个单元测试框架。它支持多任务,如测试夹具(test fixture)、编写测试用例、聚合测试用例进入一个测试套件,以及运行测试。

unittest支持以下4种主要概念:

  • 测试夹具:这包括执行一个或多个测试的准备和清理活动
  • 测试用例:这包括我们的单个测试。通过使用unittest中的TestCase基类,我们可以新建测试用例
  • 测试套件:这包含一个测试用例、测试套件或两者的合集。用于一起执行测试用例
  • 测试运行器:这包括安排测试执行和向用户给出输出

Python有一个我们可以在脚本中导入的unittest模块。unittest模块有TestCase类用于创建测试用例。

单个测试用例可以方法形式创建。这些方法名以单词 test 开头。因此,测试运行器可以知道哪些方法表示测试用例。

创建单元测试

在这一部分,我们来创建单元测试。我们要创建两个脚本来进行实现。一个是普通脚本,另一个是包含测试的代码。

首先,创建一个名为arithmetic.py的脚本并编写如下代码:

在以上脚本中,我们创建了4个函数:add_numbers, sub_numbers, mul_numbers和div_numbers。下面我们将编写这些函数的测试用例。首先,我们将学习如何为add_numbers函数编写测试用例。创建test_addition.py脚本并编写如下代码:

在以上脚本中,我们为add_numbers函数编写了三个测试用例。第一个是测试整型数字,第二个测试浮点数,第三个测试字符串。字符串的加法表示对字符串进行拼接。类似地,我们可以为减法、乘法和除法编写测试用例。

下面我们将运行test_addition.py测试脚本,在运行脚本后将可以看到运行的结果。

像下面这样运行脚本,可得到如下输出:

这里我们得到的结果是OK,表示我们的测试是成功的。

不论何时运行测试脚本,我们可能得到的三种测试结果如下:

结果 描述
OK 成功
FAIL 测试失败-抛出AssertionError异常
ERROR 抛出AssertionError以外的异常

单元测试中使用的方法

使用unittest时,有一些方法可以在我们的脚本中使用。这些方法如下:

  • assertEqual()和assertNotEqual():检测预期结果
  • assertTrue()和assertFalse():验证条件
  • assertRaises():验证抛出指定的异常
  • setUp()和tearDown():定义每个测试方法执行之前和之后的指令

我们还可以在命令行中使用unittest模块。因此前述的测试脚本也可以这么运行:

下面我们来看另一个示例。我们创建两个脚本:if_example.py和test_if.py。if_example.py 是我们的常规脚本,test_if.py将包含测试用例。在这个测试中,我们检查所输入的数字是否等于100.如果等于100,我们的测试将会成功。否则应显示一个FAILED的结果。

创建一个if_example.py脚本并加入如下代码:

现在来创建test_if.py测试脚本并编写如下代码:

运行测试脚本如下:

我们运行脚本获得了一个成功的测试结果。下面我们输入一个100以外的值,会得到一个FAILED的结果。运行脚本如下:

总结

本章中我们学习了unittest,它是Python中的单元测试框架。我们还学习了如何创建单元测试中使用的测试用例和方法。

在下一章中,我们将学习如何自动化系统管理员的常规管理活动。我们将学习接收输入、处理密码、执行外部命令、读取配置文件、向脚本添加警告代码、设置CPU限制、网页浏览器启动、使用os模块以及进行备份。

☞☞☞ 第四章 自动化常规运维活动

课后问题

  1. 什么是单元测试、自动化测试和手动测试?
    点击查看

    单元测试一种软件测试,可对软件中的单个单元/组件进行测试。目的是验证软件的每个单元与执行效果与设计初衷一致。
    自动化测试是种自动化技术,测试人员自己编写脚本并使用相应的软件来进行测试。基本上是一种手动操作的自动化过程。
    手动测试是一种在软件程序中查找故障或 bug 的一种过程。在这种方法中,测试人员起到作为终端用户的重要作用,来验证应用功能是否正常运行。
  2. unittest以外还有哪些替代模块?
    点击查看

    mock, nose, pytest.
  3. 编写测试用例的用处是什么?
    点击查看

    测试用例是一组执行用于验证软件应用具体特性或功能的动作。本文中讲解了如何设计测试用例以及各个组件的重要性。
  4. 什么是PEP8标准?
    点击查看

    PEP 8是Python的样式指南。有一组格式化Python代码的规则,来最大化改善代码可读性。按照规定编写代码有助于让众多代码编写人员编写大型项目。更为符合标准也可预测。

扩展阅读

  • 单元测试文档:https://docs.python.org/3/library/unittest.html
  • Python中的PEP8编码标准:https://www.python.org/dev/peps/pep-0008/
喜欢 (8)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址