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

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):
    @classmethod
    def setUpClass(cls)->None:
        print("类开始")
    @classmethod
    def 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
    @classmethod
    def setUpClass(cls) -> None:
        print("类开始")
    @classmethod
    def 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.运行结果

图片


http://www.kler.cn/a/595171.html

相关文章:

  • Java求101-200之间有多少素数
  • 数字化转型,目的是为了转型还是数字化?
  • 菜品分页查询-01.需求分析和设计
  • dify联网搜索如何限制在只在一个网站上搜索呢??
  • 《C++11 基于CAS无锁操作的atomic原子类型》
  • Linux基础开发工具——gdb/cgdb(7)
  • AI风向标《AI与视频制作全攻略:从入门到精通实战课程》
  • 多无人车协同探索开源包启动文件介绍(上)
  • k8s中service概述(二)NodePort
  • 加速还是安全?CDN与群联云防护的本质差异与适用场景
  • Blender标注工具
  • Webrtc编译官方示例实现视频通话
  • 【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)
  • 10-STL、位运算、常用函数库
  • filebeat和logstash区别
  • Mysql Innodb引擎执行过程
  • Day11 动态规划入门
  • 又双叒叕Scrapy爬虫相关的面试题及详细解答
  • 【React】基于自定义Hook提取公共逻辑
  • 记一次线上SQL死锁事故