单元测试,代码测试代码
Posted fengkunlei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单元测试,代码测试代码相关的知识,希望对你有一定的参考价值。
# 单元测试,代码测试代码针对函数、类,检测他的某个方面是否有问题的测试
开发
测试用例是一组单元测试,每个单元测试是一起核实函数和类在各种情况下的行为都符合要求
为什么要做单元测试?
1、单元测试 ->集成测试 ->
2、从底层发现bug,越早发现bug越好解决避免后期重构,节约时间、经费
全覆盖特别困难,只针对重要的行为编写测试
tdd
为了做单元测试,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()
以上是关于单元测试,代码测试代码的主要内容,如果未能解决你的问题,请参考以下文章
CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段