单元测试——unittest_断言(判断)

# 单元测试,代码测试代码

针对函数、类,检测他的某个方面是否有问题的测试
开发
测试用例是一组单元测试,每个单元测试是一起核实函数和类在各种情况下的行为都符合要求
为什么要做单元测试?

1、单元测试 ->集成测试 ->
2、从底层发现bug,越早发现bug越好解决避免后期重构,节约时间、经费

3、全覆盖特别困难,只针对重要的行为编写测试
4、为了做单元测试,unittest框架,单元测试框架

1、创建一个login.py

def login_check(username,password):
"""

:param username:账号
:param password:密码
:return:
"""
if 6 <= len(password) <= 18:
if username == 'python34' and password == 'lemonban':
return {"code": 0,"msg":"登陆成功"}
else:
return {"code": 1,"msg":"账号或密码不正确"}
else:
return {"code":1,"msg":"密码长度在6-18位之间"}
# name 是模块的特殊变量
# 当直接运行当前模块的时候__name__='main'
# 当被其他模块导入的时候__name__ = 模块名
# pass占位符,什么都不是,表示跳过
if name == 'main':
pass

2、创建一个test_case.py

导入unittese,导入被检测函数或者类
一般系统模块放在最上面
第三方模块放在系统模块的下面
自己写的模块放在最下面
import unittest
from login import login_check

创建测试类,继承unittest.TeseCase类,测试用例

class Testlog(unittest.TestCase):
"""
测试登录功能
"""

3、如果有初始(前置)条件和结束(后置)条件,重写脚手架(fixture)方法

4、定义单元测试函数,函数名要以test开头

def test_log_ok(self):
"""
账号密码正确
:return:
"""
# 1、测试数据
test_data = {"username": "python34", "password": "lemonban"}
# 期望数据
expect_data = {"code": 0, "msg": "登陆成功"}
# 测试步骤
# 执行函数-,解包,键相同,相当于把test_data中的两个值传给了login_check
res = login_check(
test_data)
# 3、断言(判断)assert下的Equal是判断是否相同
self.assertEqual(expect_data, res)
# 如果不相等会抛出assertError,断言错误
print('第一条用例')

def test_log_password_error(self):
"""
账号正确,密码错误
:return:
"""
# 1、测试数据
test_data = {"username": "python342", "password": "lemonban"}
# 期望结果
expected = {"code": 1, "msg": "账号或密码不正确"}
# 2、测试步骤
res = login_check(**test_data)
# 3、断言
self.assertEqual(expected, res)
print("第二条用例")

def test_password_ok_pass_error(self):
test_date = {"username": "python34", "password": "lemonban1"}
expected = {"code": 1, "msg": "账号或密码不正确"}
res = login_check(**test_date)
self.assertEqual(res,expected)
print('第三条用例')

def test_password_lenth_little(self):
test_data = {"username": "python34", "password": "lem"}
expected = {"code": 1, "msg": "密码长度在6-18位之间"}
res = login_check(**test_data)
self.assertEqual(expected,res)
print('第四条用例')

def test_password_lenth_blg(self):
test_data = {"username": "python34", "password": "lemonbanaaaaaaaaaaaaaaa1"}
expected = {"code":1,"msg":"密码长度在6-18位之间"}
res = login_check(**test_data)
self.assertEqual(expected,res)
print('第五条用例')
# 5、调用unittese.main()来执行测试用例
if name == 'main':
a = 1
# 会自动收集TestCase类里的单元测试函数
unittest.main()

posted @ 2020-11-12 10:17  Old_Arthurㄟ  阅读(359)  评论(0)    收藏  举报