Python Unittest测试框架教程

按主题探索文章、教程与工程实践。

8 篇内容

2017

1. 基本概念

unittest是python自带的单元测试框架,有时候又被称为"PyUnit",是python版本的JUint实现。 该框架的作者是 Kent Beck和Erich Gamma,感谢祖师爷赏饭吃。 在学习使用unittest库之前,我们需要了解一下unittest库的一些重要概念: test fixture: 代表了用例执行前的准备工作和用例执行之后的清理 …

1 分钟阅读

2. 基本用法

我们通过最简单的例子来看一下unittest的基本用法,下面的代码测试了3个python字符串方法,基本上满足了大部分情况下的测试需求 解释一下关键点 可以通过继承unittest.TestCase类来定义我们自己的测试用例,1个测试用例类下面可以有多个测试方法(test)或者叫做测试点 记住这个套路:测试用例中方法名以 开头的方法才是测试方法,比如上面的例 …

1 分钟阅读

3. 实例: 测试弱密码

考虑这样一个测试弱密码的实例,这个我们在pytest相关教程中也有过描述。 我们需要判断用户的密码中包含简单密码,规则是这样的,密码必须至少6位,满足6位的话判断用户的密码不是password123或者password之类的弱密码。 对于如下的测试数据,我们要如何使用unittest来进行相关测试呢? 前文我们也说过,text fixture的主要功能是初始 …

1 分钟阅读

4. 实例: 读取测试数据并测试弱密码

接上一节的弱密码例子,我们的用例尽管运行的不错,但还是有点问题。 假如我们需要增加一些测试数据,那么我们就必须去修改 方法,在 列表中增加数据,频繁修改代码以适应一些不变的测试场景,这是没有必要的开销,可以想办法去优化。 我们可以把测试数据保存在文件里,通过读取文件的方式,每次动态从测试用例读取数据,这样数据的改变并不会影响用例,用例逻辑相对稳定,维护成本 …

1 分钟阅读

5. 实例: 找出所有是弱密码的用户

当我们的测试数据是下面这些的时候,我们的用例是有问题的。 我们的用例只能找出tom是弱密码的用户,jerry这个用户会成为漏网之鱼。 这是因为在unittest中,一旦某个测试方法中的断言失败,后续的断言都不会被执行。 还原一下上面的例子,当用例在断言tom失败后,for循环就退出了,测试方法也执行完毕了,后面jerry这条数据就不会被断言。 我们可以重构一 …

1 分钟阅读

6. 命令行接口

unittest支持命令行接口,我们可以在命令行里指定运行具体的测试用例。 在 中定义了 用例,我们可以从命令行中指定只运行该用例。 还可以使用-v参数来获得更详细的输出 也可以在命令行中一次指定多个测试用例类,具体的大家可以自己尝试一下。

1 分钟阅读

7. 各种断言方法

unittest支持各种断言方法。 官方文档 方法 检查点 assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIs(a, b) a is b …

1 分钟阅读

8. 断言异常

我们有时候需要断言一些方法会抛出异常,这些异常需要符合我们的预期。 新建 文件,内容如下 上面的例子断言了当0作为除数的时候会抛出 断言异常是有套路的,使用 语句加 ,assertRaises的参数中传入预期的异常(这些异常可能需要先import进来),在with的子句中放上会抛出异常的语句或表达式

1 分钟阅读