'''
==================================
cooding:utf-8
@Time :2020/6/110:18
@Author :henry
@Email :yinpingwei@gmail.com
@File :class_work.py
@Software:PyCharm
===================================
'''
# 单元测试
"""
单元测试框架有:
1.unittest框架——4大核心概念
TestCase(测试用例)
TestSuite(测试套件)
TextTestRunner(执行用例/呈现结果)
Fixture(前置后置条件)
编写用例-》收集用例-》执行用例-》生产结果
2.pytest框架
单元测试:就是对单个模块或者是单个类或者是单个函数进行测试
自动化的测试:
代码实现的用例,代码执行用例,代码判断结果,代码生成测试报告
用例编写步骤:
格式:
1. import unittest # 导入unittest模块,被测文件或者其中的类
2. class xxxx(unittest.TestCase) # 创建一个测试类 ,继承unittest.TestCase
3. def Testxxx(self) # 在定义一个测试函数,以test_开头,定义测试函数。
def test_xxx(self): # 每一个test_开头的函数,就是一个测试用例。
4. 测试用例中:
1、测试数据、期望结果
2、测试步骤
3、断言:预期结果与实际结果的比对
AssertionError: 断言失败 - 用例失败
assert 表达式(True表示通过,False表示失败)
self.assertXXXXX()
unittest用例断言方法:
1.assertEqual(a,b) 检查:a==b
2.assertNotEqual(a,b) 检查:a!=b
3.assertTrue(x) 检查:boxl(x)is True
4.assertFalse(x) 检查:boxl(x)is False
5.assertis(a,b) 检查:a is b
6.assertisNot(a,b) 检查:a is not b
7.assertin(a,b) 检查:a in b
8.assertNotin(a,b) 检查:a not in b
"""
import unittest # 引入unittest单元测试
# 从导入(py30.class_unittpy)包.(Login_settings)模块 导入(login_check)函数
from py30.class_unittpy.Login_settings import login_check
class TestLogin(unittest.TestCase): # 定义测试类,继承unittest.TestCase
def test_success(self): # 成功登录用例
# 1.测试数据 已经导入
# 2.测试步骤
res = login_check('woshijinyao300','lemonbanpy30') # 给与测试数据账号与密码
# 3、断言:预期结果与实际结果的比对
# assert res == {"code": 0, "msg": "登录成功"} # 第一种比对,一般不用
self.assertEqual(res,{"code": 0, "msg": "登录成功"}) # 断言:判断预期结果与实际结果是否一致,一般用这种
课后作业
利用unittest框架,完成课程案例未实现的测试用例
1、掌握unittest编写用例的步骤
2、掌握unittest的断言表达
案例代码、5个测试用例描述,
import unittest # 引入unittest单元测试
# 从导入(lass_unittpy)包.(Login_settings)模块 导入(login_check)函数
from py30.class_unittpy.Login_settings import login_check
class TestLogin(unittest.TestCase): # 定义测试类,继承unittest.TestCase
def test_success(self): # 成功登录用例
res = login_check('woshijinyao300','lemonbanpy30') # 给与测试数据账号与密码
print(str(res))
try:
self.assertEqual(res,{"code": 0, "msg": "登录成功"}) # 断言:判断预期结果与实际结果是否一致
except:
print('用例执行失败')
raise
else:
print('用例执行成功')
def test_error_password(self): # 错误的密码登录
res1 = login_check('woshijinyao300', 'lemonbanpy') # 给与测试数据,正确的账号与错误的密码
print(str(res1))
try:
self.assertEqual(res1, {"code": 1, "msg": "账号或密码不正确"}) # 断言:判断预期结果与实际结果是否一致
except:
print('用例执行失败')
raise
else:
print('用例执行成功')
def test_error_account(self): # 错误的账号登录
res2 = login_check('woshijinyao', 'lemonbanpy30') # 给与测试数据,错误的账号与正确的密码
print(str(res2))
try:
self.assertEqual(res2, {"code": 1, "msg": "账号或密码不正确"}) # 断言:判断预期结果与实际结果是否一致
except:
print('用例执行失败')
raise
else:
print('用例执行成功')
def test_no_account(self): # 账号为空
res3 = login_check('lemonbanpy30') # 给与测试数据,空的账号与正确的密码
print(str(res3))
try:
self.assertEqual(res3, {"code": 1, "msg": "所有的参数不能为空"}) # 断言:判断预期结果与实际结果是否一致
except:
print('用例执行失败')
raise
else:
print('用例执行成功')
def test_no_password(self): # 密码为空
res4 = login_check('woshijinyao300') # 给与测试数据,正确的账号与空密码
print(str(res4))
try:
self.assertEqual(res4, {"code": 1, "msg": "所有的参数不能为空"}) # 断言:判断预期结果与实际结果是否一致
except:
print('用例执行失败')
raise
else:
print('用例执行成功')
if __name__ == '__main__':
unittest.main()
2020年06月10日----Python单元测试(unittest框架)(上)
最新推荐文章于 2024-09-16 20:18:23 发布