IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 多测师拱墅校区肖sir_高级金牌讲师_自动化单元测试框架unittest -> 正文阅读

[开发测试]多测师拱墅校区肖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):测试用例
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:13:06  更:2022-05-10 12:13:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:47:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码