unittest框架

一.unittest简介

unitest是python内置的单元测试框架,但是它不仅适用于单元测试

 

unittest最核心的四个概念就是:

1.TestrCase:一个Testcase的实例就是一个测试用例,所有用例类继承的基本类

2.TestSuite:多个测试用例集合在一起

3.TestLoader是用来加载Testcase到Testsuite中的

4.TextTestRunner:用来执行测试用例的

 

二.使用方法,举个实例,建议数据分离

1.引入unitest

import unittest

编写一个Login类,因为是运用了之前的图书登陆类,所有我这里的类是Lib

代码如下:


 1 class Lib:
 2     def login_check(username,password):
 3         ''' 登录校验的函数
 4 :param username:账号
 5 :param password: 密码
 6 :return: '''
 7 if 6<=len(password)<=18:
 8             if username=='admin' and password=='123456':
 9                 return {'code':0,'msg':'登录成功'}
10             elif username == None:
11                 return {'code': 1, 'msg': '用户名不能为空'}
12             elif password == None:
13                 return {'code': 1, 'msg': '密码不能为空'}
14             else:
15                 return {'code':1,'msg':'账号密码不正确'}
16         else:
17          return {'code':1,'msg':'密码长度在6-18之间'}

 



TestCase类编写的测试用例
代码如下:
 1 import unittest          #单元测试框架
 2 from 图书管理系统.b图书 import Lib     #引入Lib
 3 #编写测试用例   就是测试类中的方法
 4 #执行测试用例,就是运行测试类中的方法而已
 5 from ddt import ddt,data,unpack       引入ddt,对数据进行处理
 6 test_data=[("admin","123456",'登录成功'),
 7            ('admin','123456','登陆成功')]
 8 @ddt
 9 class Login_test(unittest.TestCase):
10     #每一条方法就是一条测试用例
11     # 方法名  就是用例的标题    必须用test_搭头
12 
13     def setup(self):
14         #执行每条测试用例之前都得执行他  前置条件
15         pass
16     def tearDown(self):
17         #还原测试环境       每条测试用例后   都执行他
18         pass
19     @data(*test_data)                 
20     @unpack               将test_data里的数据做分离
21 def test_login_success(self): #账号密码都正确,登陆成功
22         #测试步骤
23         #记录结果
24         result = Lib.login_check("admin","123456")
25         #比较结果
26         #实际结果
27         expect = '登录成功'
28         self.assertEquals(result['msg'],expect)
29     def test_login_usernameFailure(self):     #用户名不正确,登陆失败
30         # 预期结果
31         expect = '账号密码不正确'
32         #实际结果
33         result = Lib.login_check("小明","123456")
34         self.assertEquals(expect,result['msg'])

 



运行测试用例
代码如下:

 1 import unittest
 2 import os
 3 from HTMLTestRunner import HTMLTestRunner
 4 
 5 from os模块.test_case import login_test
 6 #选择要执行的测试用例
 7 # 将这些用例  放入一个集合
 8 # 运行该集合即可
 9 a = unittest.TestSuite()
10 #生成一个测试集合对象,用来储存要运行的测试用例
11 #加用例的过程  实际就是将方法加入集合中
12 l = unittest.TestLoader()
13 a.addTest(l.loadTestsFromTestCase(login_test.Login_test))
14 r = unittest.TextTestRunner()
15 r.run(a)

 




执行结果





三.unitest常用断言,就是判断

断言语法以及解释


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)




作者:小汤o













posted @ 2020-06-22 15:28  小汤o  阅读(117)  评论(0编辑  收藏  举报