多测师拱墅校区肖sir_高级金牌讲师_自动化单元测试框架unittest

自动化单元测试框架unittest
一、介绍自动化测试框架
(1)单元测试框架:
python当中的unittest单元测试框架(python自带的库),pytest单元测试框架(pyhton的地方库)
(2)unittest单元测试框架作用: 管理和组织测试用例
(3)格式:
import unittest # 导入unittest库
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
unittest.main() #ynittest单元测试框架的入口, main调用所有用例
运行结果:
类的开始
.方法开始
用例111
方法结束
.方法开始
用例222
方法结束
.方法开始
用例333
方法结束
.方法开始
用例AAA
方法结束
.方法开始
用例aaa
方法结束
.方法开始
用例bbb
方法结束
类的结束

备注:
(1)类的开始和类的结束,在框架中只运行一次
(2)方法的开始,方法的结束每一个用例都要执行一次
(3)运行顺序是按ascii码表排序:0-9A-Za-z
(4)用例必须以test开头,如果没有test就不运行

================================================
案例1:unittest 调用所有的用例

import unittest # 导入unittest库
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
unittest.main()

======================================================
案例2:unittest.suite
suite是一个套件,也可可以看做一个容器,
场景(1):运行一个用例
import unittest # 导入unittest库
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
tj=unittest.TestSuite() # 创建一个套件对象
tj.addTest(gs(‘test01’)) #添加单个用例
r=unittest.TextTestRunner() #创建一个执行对象
r.run(tj) #通过对象调用run方法来运行选择的用例

备注:
1、在运行的过程中,我们要去执行当前环境,如果是运行框架环境就是运行所有的用例,设置的方法:
如下:
(1)选择文件copy,
path:C:\Users\Administrator\PycharmProjects\gs1\python_ui001\ui_kj.py
在这里插入图片描述

(2)配置环境
在这里插入图片描述
(3)在配置路径
在这里插入图片描述

(4)选择选择,在执行
在这里插入图片描述
(2)运行多个用例
import unittest # 导入unittest库
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
tj=unittest.TestSuite() # 创建一个套件对象
tj.addTests([gs(‘test01’),gs(‘testb’)]) #添加多个用例
r=unittest.TextTestRunner() #创建一个执行对象
r.run(tj) #通过对象调用run方法来运行选择的用例

===============================================
案例3:
情况:执行路径下所有用例
import unittest # 导入unittest库
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
path=r’C:\Users\Administrator\PycharmProjects\gs1\python_ui001’#
d=unittest.TestLoader().discover(start_dir=path,pattern=“ui_kj*.py”)
r=unittest.TextTestRunner()
r.run(d)

================================================
案例4:输出UI自动化测试报告
(1)场景一:没有添加报告时间
报告模板

import unittest # 导入unittest库
from ui.HTMLTestRunner3_New import HTMLTestRunner
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
path=r’C:\Users\Administrator\PycharmProjects\hz2\ui’#
d=unittest.TestLoader().discover(start_dir=path,pattern=“ss*.py”)
bglj=r’C:\Users\Administrator\PycharmProjects\hz2\ui’
bgwj=bglj+‘/’+‘_ui.html’
f=open(bgwj,‘wb’)#
r=HTMLTestRunner(stream=f,title=“ui自动化测试报告”,description=“用例执行情况”,
tester=‘gs1期’)
r.run(d)

场景2:添加报告时间

import unittest # 导入unittest库
from ui.HTMLTestRunner3_New import HTMLTestRunner
from time import *
class gs(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod #类的方法
def setUpClass(cls) -> None: #类的开始
print(“类的开始”)
@classmethod
def tearDownClass(cls) -> None: #类的结束
print(“类的结束”)
def setUp(self) -> None: #方法开始
print(‘方法开始’)
def tearDown(self) -> None:#方法的结束
print(‘方法结束’)
def test01(self): #测试用例
print(“用例111”)
def test03(self): #测试用例
print(“用例333”)
def test02(self): #测试用例
print(“用例222”)
def testa(self): #测试用例
print(“用例aaa”)
def testA(self): #测试用例
print(“用例AAA”)
def testb(self): #测试用例
print(“用例bbb”)
def dl(self):
print(‘独立’)
if name == ‘main’:
path=r’C:\Users\Administrator\PycharmProjects\hz2\ui’#
d=unittest.TestLoader().discover(start_dir=path,pattern="ss
.py")
bglj=r’C:\Users\Administrator\PycharmProjects\hz2\ui’
new=strftime(‘%y-%m-%d -%H-%M-%S’)
bgwj=bglj+‘/’+str(new)+‘_ui.html’
f=open(bgwj,‘wb’)#
r=HTMLTestRunner(stream=f,title=“ui自动化测试报告”,description=“用例执行情况”,
tester=‘gs1期’)
r.run(d)
*

=================================

=================================
总结:
一、unittest的介绍
当我们写的用例越来越多时,我们就需要考虑用例编写的规范与组织,以便于后期的维护,而unittest正是这样一款工具
二、unittest是Python自带的标准库中的模块,其中包括:
1、TestCase类
2、TestSuite类
3、TestLoader类
4、TextTestRunner类
5、TextTestResult类
6、TestFixture类
解释下:
TestCase:
一个Testcase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括初始化setUp、运行run、测试后的还原tearDown
TestSuite:
对一个功能的测试往往需要多测试用例的,可以把多的测试用例集合在一起执行,这就是TestSuite的概念。常用addTest()方法将一个测试用例添加到测试套件中
TextTestRunner:
是用来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存在TextTestResult实例中
TestFixture:
测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown()。通过覆盖TestCase的setUp和tearDown来实现。
TestLoader:
是用来搜索所有以test开头的测试用例,然后将其加入到testsuite中
图形化解释:如下图

三、框架的组成
在写测试类以及测试用例时要规定一个命名习惯,一般测试类可以以Test开头,也可以以Test结尾。测试用例一般是以test开头。
eg:结构如下:
import unittest #导入unittest包
#创建测试类:从unittest.TestCase继承
classRomanNumeralConverterTest(unittest.TestCase):
def setUp(self): #初始化测试环境
def tearDown(self): #还原测试环境
def test_case(self):测试用例
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金牌j软件测试培训师肖sir

作为一个名资深IT搬运工

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值