文章目录
Unit Test
在Python进阶之路上,有必要了解Python是如何进行代码测试。测试驱动开发是现代软件开发的方法之一,受到很多人的追捧。参考阅读:TDD(测试驱动开发)是否已死?
由于不涉及非常复杂的代码,所有只需要了解最为常见的单元测试即可。
假设我们写了一个函数
1 | def bin_search(lst, target): |
这个函数如果是正确的话,那么会返回列表(数组)中target元素的下标值;如果列表不存在这个元素就返回-1。
如何测试这段代码呢?
我们可以写出下面的单元测试代码?
1 | import unittest |
Python的提供了单元测试类unittest
。想要进行进行单元测试,我们需要从类unittest.TestCase
派生出子类,然后在子类中定义以test
开头的方法(method
),再在方法里完成各种测试。每一个测试,都可以视为对被测试对象的一个要求。self.assertEqual(a, b)
是断言 a b
要相等。
Python提供了很多断言方法
Method | Checks that | New in |
---|---|---|
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 |
3.1 |
assertIsNot(a, b) |
a is not b |
3.1 |
assertIsNone(x) |
x is None |
3.1 |
assertIsNotNone(x) |
x is not None |
3.1 |
assertIn(a, b) |
a in b |
3.1 |
assertNotIn(a, b) |
a not in b |
3.1 |
assertIsInstance(a, b) |
isinstance(a, b) |
3.2 |
assertNotIsInstance(a, b) |
not isinstance(a, b) |
3.2 |
通过这些断言方法,我们可以完成对待测试函数的测试。