UnitTest单元测试
Unittest框架核心概念:
1.test case:测试用例
2.test suite:测试套件
3.test runner: 用来执行测试用例和测试套件,并返回测试用例的执行结果
4.test fixure:测试夹具
unittest
- 导入
unittest模块 - 创建一个测试类,并继承
unittest.TestCase,作为基类 - 重写
setUp和tearDown方法 - 定义测试函数,函数名以
test_开头 - 在测试函数中使用断言来判断测试结果是否符合预期。
- 调用
unittest.main()方法运行测试用例
import unittest
def login(username, password):
if username == 'ncs' and password == '123':
res = {"code": 200, "msg": "登录成功"}
return res
return {"code": 400, "msg": "登录失败"}
class TestLogin(unittest.TestCase):
def test_login_success(self):
"""测试登录成功"""
test_data = {"username": "ncs", "password": "test"}
expect_data = {"code": 200, "msg": "登录成功"}
res = login(**test_data)
self.assertEqual(res, expect_data)
def test_login_error_with_error_password(self):
"""账号正确,密码错误,登录失败"""
test_data = {"username": "ncs", "password": "12345"}
expect_data = {"code": 400, "msg": "登录失败"}
res = login(**test_data)
self.assertEqual(res, expect_data)
if __name__ == '__main__':
unittest.main()
断言方法
以下是常用的断言方法:
assertEqual(a, b, msg=None):验证 a 等于 b。assertNotEqual(a, b):验证 a 不等于 b。assertTrue(x):验证 x 是否为 True。assertFalse(x):验证 x 是否为 False。assertIs(a, b):验证 a 是否是 b。assertIsNot(a, b):验证 a 是否不是 b。assertIsNone(x):验证 x 是否为 None。assertIsNotNone(x):验证 x 是否不为 None。assertIn(a, b):验证 a 是否在 b 中。assertNotIn(a, b):验证 a 是否不在 b 中。assertIsInstance(a, b):验证 a 是否是 b 类型的实例。assertNotIsInstance(a, b):验证 a 是否不是 b 类型的实例。