0%

「unittest开发笔记」芝士点备忘

通过main()去运行测试

1
2
3
4
...

if __name__ == '__main__':
unittest.main()

命令行接口方式进行测试

1
2
3
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

测试中主要通过3个方法进行判断是否正常:

  1. assertEqual()去检查结果是否和期望的结果相同;
  2. assertTrue()用于核实最终状态;
  3. assertRaises()去检查是否抛出期望的异常。

还有其他的一些如下表:

Method Checks that
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
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b)
assertRaises(exc, fun, *args, **kwds) fun(*args, **kwds) raises exc
assertRaisesRegexp(exc, r, fun, *args, **kwds) fun(*args, **kwds) raises exc and the message matches regex r

在TestCase的类里,setUp()会先被加载,然后再去运行需要测试的方法

1
2
3
4
5
6
7
import unittest

class CustomTestCase(unittest.TestCase):
def setUp(self):
pass

...

如果实在生产环境下运行的测试,在一般情况下,是在setUp()创建或更新一些运行测试必要的数据,整个测试运行完后,tearDown()会被执行,删除或恢复数据的操作可以放在tearDown()里边,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ListApiTests(unittest.TestCase):
def setUp(self):
# 先创建一个测试的用户
user_info = {
'username': 'test_user_actmerce',
'password': make_password('yoyoqiekenao'),
'real_name': '晓测'
}
user = UserProfile.objects.create(**user_info)
self.user = user

def tearDown(self):
# 删除新增的数据
self.user.delete()

def test_one(self):
pass

参考: