当前位置: 首页 > news >正文

3.21-1自动化框架

自动化框架

一、介绍框架

1、unittest 框架是python中自带的框架

2、作用:管理和组织测试用例

当我们写的用例越来越多,我们就要考虑用例的编写的规范和组织,以便于后期的维护

3、常见的自动化框架:po框架、pytest 框架、unittest框架(我们讲解)

4、unitest 框架自带标准的库:有如下

a、TestCase类  (测试用例)
b、TestSuite类  (测试套件)
c、TestLoader类   (测试路径)
d、TextTestRunner类  (测试运行)
e、TextTestResult类  (测试结果)
f、TestFixture类   (测试前后准备)
解释下:
TestCase:
一个Testcase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括初始化setUp、运行run、测试后的还原tearDown
TestSuite:
对一个功能的测试往往需有多个测试用例,可以把多的测试用例集合在一起执行,这就是TestSuite的概念。常用addTest()方法将一个测试用例添加到测试套件中
TextTestRunner:
是用来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存在TextTestResult实例中
TestFixture:
测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown()。通过覆盖TestCase的setUp和tearDown来实现。
TestLoader:
是用来搜索所有以test开头的测试用例,然后将其加入到testsuite中去执行

5、unittest的框架的结构:

import unittest
class Cms(unittest.TestCase):@classmethoddef setUpClass(cls)->None:print("类开始")@classmethoddef tearDownClass(cls)->None:print("类结束")def setUp(self)->None:print("方法开始")def tearDown(self)->None:print("方法结束")def test1(self):print("1")def test2(self):print("2")def testa(self):print("a")def testA(self):print("A")def dy(self):print("独有")
if __name__=='__main__':unittest.main()

备注:

1、类的开始,类的结束,方法开始,方法结束都可以不写

2、用例要以test开头,如果没有以test开头就不运行

3、test开头的用例运行顺序:  按ascllma标准:0-9  A-Z  a-z

4、类的开始,类的结束在整个框架中就运行一次

5、方法开始和方法结束,每一条用例都执行

注意点:

1、类的开始,类的结束,方法开始,方法结束都可以不写

2、用例要以test开头,如果没有以test开头就不运行

3、test开头的用例运行顺序:  按ascllma标准:0-9  A-Z  a-z

4、类的开始,类的结束在整个框架中就运行一次

5、方法开始和方法结束,每一条用例都执行

二.unittest 运行部分用例

当运行的是整个框架,我们要运行单个用例:

(1)复制 代码存在的路径 C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled12\dd\kj1.py

(2)点击编辑路径

图片

(3)再python添加解释器

图片

(4)执行点击右上叫的运行

图片

import  unittest  #导入unittest框架
import time
from bbb.HTMLTestRunnerNew import HTMLTestRunner
class Cms(unittest.TestCase): #创建一个类,继承unittest.TestCase@classmethoddef setUpClass(cls) -> None:print("类开始")@classmethoddef tearDownClass(cls) -> None:print("类的结束")def setUp(self) -> None:print("方法开始")def tearDown(self) -> None:print("方法结束")def test1(self):print("1")def test2(self):print("2")def testa(self):print("a")def testA(self):print("A")def  dy(self):print("独有")
if __name__ == '__main__':# unittest.main() #执行所有的用例# tj=unittest.TestSuite() # 创建一个套件对象# tj.addTest(Cms("test2")) #将单个添加用例到集合中,# tj.addTests([Cms("test2"),Cms("testA")])#将两个或两个以上添加用例到集合中,# unittest.TextTestRunner().run(tj) #通过testrunner运行套件中的用例#                 # 运行py文件的相对路径# path=r"D:\pycharm\bao2\HTMLTestRunnerNew.py"# d=unittest.TestLoader().discover(start_dir=path,pattern="kj*.py")# unittest.TextTestRunner().run(d)bgpath=r'D:\pycharm\bb\bbb'path=r'D:\pycharm\bb\bbb'd=unittest.TestLoader().discover(start_dir=path,pattern="aaa*.py")new=time.strftime("%y-%m-%d %H-%M-%S")file=bgpath+"/"+str(new)+"ui.html"f=open(file,"bw")r=HTMLTestRunner(stream=f,title="ui自动化测试报告",description="用例执行情况",tester="dcs")r.run(d)

4.运行结果

图片

5.框架要自己编写,梳理出

讲解1:建框架流程:

导入unittest模块,做自动化导入selenium这个模块,以及一些相关如time、OS、HTMLTestRunner模块。unittest里定义一个类,继承testcase,一个testcase的实例就是一个用例,类的开始:setupclass,类的结束:teardownclass,定义用例:test1、test2,要以test开头,因为TestLoader只搜索所有以test开头的测试用例。写完用例以后,调用它,以main为入口,执行自动化有4种调用的方式

(1)用unittest.main()去运行所有用例。

(2)创建一个套件TestSuite(),用addtest添加要执行用例执行部分测试用例。

(3)调用unittest.testloader.discover方法搜索绝对路径执行用例。

(4)生成测试报告,搜索绝对路径执行自动化,调用unittest.testloader.discover,把执行结果写入导入的模板文件。

讲解2:建立unittest框架流程:(背讲解2)

(1)导入unittest、selenium、time等模块。(2)定义类取类名继承unittest.testcase,一个testcase就是一个用例,定义类方法,要有setUpClass和tearDownClass。(3)setUp每条用例执行,tearDown。(4)写用例,要test开头。(5)调函数main。(6)执行1、unittest.main()运行所有;2、创建套件TestSuite(),addtest添加要执行用例3、搜索绝对路径调用unittest.testloader.discover;4、生成测试报告,把执行结果写入导入的模板文件

讲解3:(字太多,懒得背)

 下面我介绍一下自动化框架的基本流程:自动化框架是用来管理和组织测试用例的,首先我们先导入unittest框架,再导入本次测试应用到的一些模块,比如time模块(进行计时)等等。接下来我们进行类的定义,创建一个类,一个testcase就是一个用例,继承unittest.testcase,定义类需要类的开始setUpClass()和类的结束tearDownClass() ,在整个框架中只运行一次。为了减少代码的冗余,我们需要进行方法的定义,调用的时候直接使用这个方法名就可以了,方法的开始和结束每一条用例都会执行。然后我们进行用例定义,用例要以test开头,如果没有以test开头就不能运行,运行顺序按ascllma标准排序:0-9  A-Z  a-z。

用例编写完成之后,我们进行用例的调用,这里我们有四种方法:

1.unittest.main() #第一种执行方法,执行所有的用例

2.创建一个套件TestSuite(),通过addtest添加用例到套件中,通过TextTestRunner去运行套件中的用例

3.根据运行文件的相对路径执行自动化测试,通过unittest.TestLoader().discover匹配测试路径和文件, unittest.TextTestRunner().run(d) 运行路径d下的用例

4.根据运行文件的相对路径执行自动化测试,通过unittest.TestLoader().discover匹配测试路径和文件,接下来把执行结果写入我们导入的模板文件,执行之后就能看到我们路径下所有用例的执行结果。


http://www.mrgr.cn/news/95405.html

相关文章:

  • 网络爬虫【爬虫库request】
  • Cesium 自定义路径导航材质
  • 【算法】DFS、BFS、floodfill、记忆化搜索、BFS拓扑排序
  • qt实现一个简单http服务器和客户端
  • Maven 简介及其核心概念
  • Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)
  • 【多线程】线程安全集合类,ConcurrentHashMap实现原理
  • STM32 - 在机器人领域,LL库相比HAL优势明显
  • 区块链交易
  • MFC中CString类型是如何怎么转std::string的
  • 1.8 函数的连续性和间断点
  • 基于 FPGA的HLS技术与应用
  • 可发1区的超级创新思路:基于注意力机制的DSD-CNN时间序列预测模型(功率预测、交通流量预测、故障检测)
  • VLAN综合实验报告
  • Mybatis—01
  • C 语 言 --- 操 作 符 2
  • 第十五次CCF-CSP认证(含C++源码)
  • 【蓝桥杯—单片机】IAP15F2K61S2专项 | 真题整理、解析与拓展 | 省赛题(更新ing...)
  • 【C++指南】内存管理完全手册:new/delete
  • 【MySQL】索引