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

pythonUnitTest框架

UnitTest框架

UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794

  1. 目标(看完UnitTest框架该有的收获)

    • 掌握UnitTest框架的基本使用方法
    • 掌握断言(判断实际结果和预期结果是否一致)的使用方法
    • 掌握如何实现参数化(用例代码写一份,传入不同的数据即可)
    • 掌握测试报告的生成

  2. UnitTest的介绍

    • 框架(framework):解决一类事情的功能集合(UnitTest解决单元测试)很多功能实现的半成品

    • 需要按照规定书写代码

    • UnitTest是python自带的单元测试框架,用来做单元测试,只要安装python就可以使用。第三方框架(pytest)

    • 对于测试人员来讲是自动化脚本的执行框架(管理运行多个测试用例)

  3. 框架特点:

    • 组织多个用例的执行
    • 提供丰富的断言方法(代替人工判断预期结果和实际结果是否一致)
  4. 核心要素(组成,5部分)

    • testCase(测试用例最核心的模块,是unitest的组成部分,不是手工和自动化中的用例(Test Case)

      • 功能:每个testCase都是一个代码文件,在此代码文件中书写真正的用例

      • 示例

        '''
        - 导包unitTest
        - 自定义测试类
        - 在测试类中书写测试方法,一个测试用例一个方法
        - 执行测试用例
        '''
        import unittest
        # 自定义类继承TestCase
        class testDemo(unittest.TestCase):def test_method1(self):print("测试方法1")def test_method2(self):print("测试方法2")
        
    • testSuite(测试套件)

      • 功能:管理组装打包testCase(测试用例)
    • testRunner(测试执行)

      • 功能:执行testSuite
    • testLoader(测试加载)

      • 功能:对testsuite测试套件的补充,管理打包,组装多个测试用例

      • 示例

        import unittest
        from test_case import testDemo
        from test_case01 import testDemo1
        from test_case02 import testDemo2# 实例化suite套件对象
        suite = unittest.TestSuite()# 使用套件对象添加用例方法
        suite.addTest(testDemo('test_method1'))
        suite.addTest(testDemo('test_method2'))
        suite.addTest(testDemo1('test_method1'))
        suite.addTest(testDemo1('test_method2'))
        suite.addTest(testDemo2('test_method1'))
        suite.addTest(testDemo2('test_method2'))# 实例化运行对象
        runner = unittest.TextTestRunner()# 运行对象
        runner.run(suite)
        
        # 实例化suite套件对象
        suite = unittest.TestSuite()# 使用套件对象添加用例方法
        # 将一个测试类中的所有方法添加
        #加载case类时unittest点不出makeSuite,查找资料后得到解答是Python升级到3版本后将
        # unittest.makeSuite()
        # 改为了
        unittest.TestLoader().loadTestsFromTestCase(testDemo)
        suite.addTest(unittest.makeSuite(testDemo))# 实例化运行对象
        runner = unittest.TextTestRunner()# 运行对象
        runner.run(suite)
    • Fixture(测试夹具)

      • 书写在TestCase中的一个代码结构,可以在每个方法执行前后都会执行的内容
      • 例如:登录的测试用例:1打开浏览器,2输入网址
      # 方法级别(每个用例代码,测试方法前后都会调用)
      def setUp(self):# pass
      #
      def traedown(self):#pass# 类级别(在那个测试类中所有方法执行前后,都会自动调用)
      # 类方法
      @classmethod
      def setUpClass(cls):pass
      @classmethod
      def trardownClass(cls):pass# 模块级别(写在类外边直接定义模块)
      def setUpModule():pass
      # 
      def teardownMethod():pass
      '''
      案例:登录功能
      '''import unittestclass TestLogin(unittest.TestCase):def setUp(self) -> None:print("输入网址...")def tearDown(self) -> None:print("关闭当前页面...")@classmethoddef setUpClass(cls) -> None:print('1.打开浏览器...')@classmethoddef tearDownClass(cls) -> None:print('5.关闭浏览器...')def test_1(self):print("输入用户名密码验证码,点击登录1")def test_2(self):print("输入用户名密码验证码,点击登录2")'''
      输出结果:
      1.打开浏览器...
      输入网址...
      输入用户名密码验证码,点击登录1
      关闭当前页面...
      输入网址...
      输入用户名密码验证码,点击登录2
      关闭当前页面...
      5.关闭浏览器..
      '''
      
  5. 使用框架的步骤

    • 导包unitTest
    • 自定义测试类
    • 在测试类中书写测试方法
    • 执行测试用例
  6. UnitTest断言

    1. 什么是断言:代替人工自动判断预期结果和世界结果是否一致

    2. 断言结果

      • true:用例通过
      • false:代码会抛出异常,用例不通过
    3. 为什么使用断言

      • 提高测试xiaol
      • 实现自动化
    4. UnitTest中常用的断言方法

      • assertEqual

        self.assertEqual(预期结果,实际结果)
        1. 如果相等,用例通过
        2. 如果不相等,用例不通过,抛出异常
        
      • assertIn

        self.assertIn(预期结果,实际结果)
        1. 包含,通过
        2. 不包含,不通过
        
    5. 跳过

      • 对于一些未完成的或者不满足测试条件的测试函数和测试类,不想执行,可以使用跳过使用方法,装饰器完成
      @unnittest('跳过原因')
      @unnittestif(条件,'跳过原因')
      
  7. 测试报告

    1. HETMLTestRunner第三方测试报告

相关文章:

pythonUnitTest框架

UnitTest框架 UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794 目标(看完UnitTest框架该有的收获) 掌握UnitTest框架的基本使用方法掌握断言(判断实际结果和预期结果是否一致)的使用方…...

微服务最佳实践:构建可扩展且高效的系统

微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…...

源码赏析: 数据结构转换工具 configor (一)

一、configor 先贴地址 configor,先看configor的特性: Header-only & STL-likeCustom type conversion & serializationComplete Unicode supportASCII & Wide-character support 说白了,这个工具用于自定义类型的转换和序列化…...

使用java调用python批处理将pdf转为图片

你可以使用Java中的ProcessBuilder来调用Python脚本,并将PDF转换为图片。以下是一个简单的Java代码示例,假设你的Python脚本名为pdf2img.py: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…...

机器学习——自领域适应作业

任务 游戏里面的话有很多跟现实不一样的情况。 想办法让中间的特征更加的接近,让feat A适应feat B,产生相对正常的输出。 在有标签数据和没有数据的上面进行训练,并能预测绘画图像。 数据集 训练5000张总数,每类有500张测试100…...

ValidatorUtil字段验证工具类

字段验证工具类 package com.aa.bb.cc.common.utils;import com.aa.bb.cc.common.exception.BusinessException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils;import javax.validation.ConstraintViolation; import…...

Python 自动化之处理图片(一)

图片美化与大小调整 文章目录 图片美化与大小调整前言一、基本结构二、引入库三、用户输入模块四、图片美化模块五、大小调整模块总结 前言 本文主要分为两部分。一是图片的美化吧算是,主要从亮度、对比、色彩饱和度、锐度四个方面进行美化;二是图片的像…...

Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制

目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…...

电机(按工作电源分类)介绍

文章目录 一、什么是电机?二、按工作电源分类直流电机1.直流有刷电机结构工作原理:直流减速电机 2.直流无刷电机结构工作原理: 3.总结结构和工作原理:效率和功率损耗:调速性能:寿命和可靠性:应用…...

Web前端JS通过使用AudioWorkletNode() 获取 Video/Audio 视音频声道(左右声道|多声道)

写在前面: 在之前的博文Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据中,介绍了通过使用AudioContext.createScriptProcessor()方法来获取视音频音轨(声道)数据。但由于W3C不再推荐使用该A…...

力扣LeetCode75题

为了面试,小伙伴们可以平时练下算法题,有备无患。 LeetCode 75 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台...

如何向领导汇报工作?一篇文章告诉你!

给领导汇报工作可以从两个方面考虑:一是工作汇报文件的制作;一是汇报方式。一份全面、清晰且准确的文件,加上一目了然的、科技满满的汇报方式,相比领导不满意都难~下面就让你全部get! 一、工作汇报的文字内…...

GPT-4.5!!!

GPT-4 还没用明白,GPT-4.5 就要发布了。 最近,OpenAI 泄露了 GPT-4.5 的发布页面,除了进一步增强复杂推理和跨模态理解,GPT-4.5 增加了一个更加强大的功能——3D。 3D 功能的进一步支持,也就意味着多模态最后一块版图…...

kafka入门(四):kafka生产者发送消息

创建生产者实例和构建消息之后,就可以开始发送消息了。 发送消息主要有三种模式:发后即忘、同步、异步。 发后即忘: 就是直接调用 生产者的 send方法发送。 发后即完,只管往 kafka中发送消息,而不关心消息是否正确…...

redis集群模糊获取缓存redisKey

redis cluster集群删除指定模糊redisKey的信息 **public int deleteRedisKey(String key){AtomicReference<Integer> result new AtomicReference<>(0);busnessLogger.info("开始删除指定业务的模糊Key,deleteRedisKey:{}",key);try{Set<HostAndPor…...

100GPTS计划-AI翻译TransLingoPro

地址 https://poe.com/TransLingoPro https://chat.openai.com/g/g-CfT8Otig6-translingo-pro 测试 输入: 我想吃中国菜。 预期翻译: I want to eat Chinese food. 输入: 请告诉我最近的医院在哪里。 预期翻译: Please tell me where the nearest hospital is. 输入: 明天…...

Linux install manual 1Panel

前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…...

母婴服务品牌网站的效果如何

随着三胎政策落实及人们生活水平提升&#xff0c;母婴市场发展迅速上升&#xff0c;加之以90后、00后适龄生育的人群悦己消费加强&#xff0c;孕前孕后及婴儿本身就会使用相当好的服务&#xff0c;这也为市场带来了较大机会。 近几年&#xff0c;老品牌在不断加力&#xff0c;…...

C语言--有一个3*4的矩阵,求出其中最大值的那个元素的值,以及其所在的行号和列号

一.题目描述 有一个3*4的矩阵&#xff0c;要求求出其中最大值的那个元素的值&#xff0c;以及其所在的行号和列号 比如&#xff1a;给定一个3*4的矩阵如下 输出结果&#xff1a;最大值为 12 &#xff0c;行号为3&#xff0c; 列号为2 二.思路分析 打擂台算法&#xff1a; 先思考…...

安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换

安全算法&#xff08;二&#xff09;&#xff1a;共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换 本章介绍了共享密钥加密、公开密钥加密&#xff0c;和两种加密方法混合使用的混合加密方法&#xff1b;最后介绍了迪菲-赫尔曼密钥交换。 加密数据的方法可以分为…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...