如何使用unittest
- 编写阶乘函数
def factorial(n):
if n == 0:
return 1
if n < 0:
raise ValueError, "Don't be so negative"
return numpy.arange(1, n+1).cumprod()
2. 编写单元测试
* 正整数,所谓的愉快路径(happy path)
* 边界条件0
* 负整数,将引起错误
class FactorialTest(unittest.TestCase):
def test_factorial(self):
# 对3的阶乘进行测试,应该能通过
self.assertEqual(6, factorial(3)[-1])
numpy.testing.assert_equal(numpy.array([1, 2, 6]), factorial(3))
def test_zero(self):
# 对0的阶乘进行测试,应该能通过
self.assertEqual(1, factorial(0))
def test_negative(self):
# 对负整数的阶乘进行测试,应该不能通过
# 阶乘函数会抛出一个ValueError类型的异常,但我们期望得到一个IndexError类型的异常
self.assertRaises(IndexError, factorial(-10))
3. 运行测试
#-*- coding: utf-8 -*-
import numpy
import unittest
def factorial(n):
if n == 0:
return 1
if n < 0:
raise ValueError, "Don't be so negative"
return numpy.arange(1, n+1).cumprod()
class FactorialTest(unittest.TestCase):
def test_factorial(self):
# 对3的阶乘进行测试,应该能通过
self.assertEqual(6, factorial(3)[-1])
numpy.testing.assert_equal(numpy.array([1, 2, 6]), factorial(3))
def test_zero(self):
# 对0的阶乘进行测试,应该能通过
self.assertEqual(1, factorial(0))
def test_negative(self):
# 对负整数的阶乘进行测试,应该不能通过
# 阶乘函数会抛出一个ValueError类型的异常,但我们期望得到一个IndexError类型的异常
self.assertRaises(IndexError, factorial(-10))
if __name__ == '__main__':
unittest.main()
- 完整代码
- 测试结果
什么是unittest
测试驱动开发(TDD)是本世纪以来在软件开发领域出现的一项最重要的技术。TDD的一个非常引人注目的地方,是对单元测试的几近*的关注。
单元测试用来对一小段代码(通常是一个函数或方法)进行自动化的测试。Python提供了用于单元测试的PyUnit API.