unittest学习记录mock--04

C++ UnitTest编写 最近看了很多大神的文章,加之对于最近工作以及职业生涯的一些思考,终于开始写自己的第一篇技术博客了,虽然做软件开发也是多年,但是似乎没有对自己之所学及所做进行过持续的总结和思考,所以开此博客权作对于自己的督促与总结。 C++已经不是一门新兴的语言了,但是本人由于工作的原因却是刚刚才开始使用其进行项目的开发,所以写下此篇总结自己前端UnitTest开发中的认识与感悟。 UT应该说是程序员的本职工作之一, 阅读详情

参考地址:https://www.cnblogs.com/lisa2016/p/12069243.html

1.什么是mock
unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西。
它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为。
学过python自动化的对unittest并不陌生,unittest其实是单元测试框架,
但对于单元测试,估计很多小伙伴都不懂,单元测试才是自动化测试的至高境界,其中mock是单元测试的脊髓所在
2.mock能做什么:
    1.前后端联调,如果你是一个前端页面开发,现在需要开发一个功能:    下一个订单,支付页面的接口,根据支付结果,支付成功,展示支付成功页,支付失败,展示支付失败页。    要完成此功能,你需要调用后端的接口,根据返回给你的结果,来展示不同的页面。此时后端接口还没开发好,
    作为一个前端开发总不能等别人开发好了,你再开发,那你只有加班的命了。    为了同步开发完成任务,此时,你可以根据接口文档的规定,把接口的地址和入参传过去,然后自己mock接口的不同返回界面,来完成前端的开发任务    2.单元测试,单元测试的目的是测试某个小小单元的功能,但现实中开发的函数或方法都是有依赖关系的,比如b函数的参数,需要调用a函数的返回结果,但是我前面已经测试a函数了    这种情况下,就不需要再测一次a函数了,此时就可以用mock模块来模拟调用这部分内容,并给出返回结果    3.第三方接口依赖,在做接口自动化的时候,有时候需要调用第三方的接口,但是别人公司的接口服务不受你的控制,有可能别人提供的测试环境今天服务给你开着,别人就关掉了,
    给自动化接口测试带来很多的麻烦,此时就可以自己写一个mock-server来模拟接口的返回数据

函数代码temple.py:

# coding:utf-8

def zhifu():
    '''假设这里是一个支付的功能,未开发完
    支付成功返回:{"result": "success", "reason":"null"}
    支付失败返回:{"result": "fail", "reason":"余额不足"}
    reason返回失败原因
    '''
    pass


# 本接口return值
def zhifu_statues():
    '''根据支付的结果success or fail,判断跳转到对应页面'''
    result = zhifu()
    # print(result)
    try:
        if result["result"] == "success":
            print("success")
            return "支付成功"
        elif result["result"] == "fail":
            print("失败原因:%s" % result["reason"])
            return "支付失败"
        else:
            return "未知错误异常"
    except:
        return "Error, 服务端返回异常!"

 测试代码test_temple.py:

# coding:utf-8
from unittest import mock
import unittest
from . import temple


class Test_zhifu_statues(unittest.TestCase):
    '''单元测试用例'''

    @mock.patch("temple.zhifu")
    def test_01(self, mock_zhifu):
        '''测试支付成功场景'''
        # 方法一:mock一个支付成功的数据
        # temple.zhifu = mock.Mock(return_value={"result": "success", "reason":"null"})

        # 方法二:mock.path装饰器模拟返回结果
        # 方法三:如果被测的是面向对象,
        # @mock.patch("temple_class.Zhifu")
        # a = mock_Zhifu.return_value  # 先返回实例,对类名称替换
        # 通过实例调用方法,再对方法的返回值替换
        # a.zhifu.return_value = {"result": "success", "reason": "null"}

        mock_zhifu.return_value = {"result": "success", "reason": "null"}
        # 根据支付结果测试页面跳转
        statues = temple.zhifu_statues()
        print(statues)
        self.assertEqual(statues, "支付成功")

    def test_02(self):
        '''测试支付失败场景'''
        # mock一个支付成功的数据
        temple.zhifu = mock.Mock(return_value={"result": "fail", "reason": "777"})
        # 根据支付结果测试页面跳转
        b1 = temple.zhifu_statues()  # zhifu_statues()返回值给一个变量接收
        self.assertEqual(b1, "支付失败")


if __name__ == "__main__":
    unittest.main()
使用Python进行Mock测试详解(含Web API接口Mock) Mock对象是用于替代真实对象的模拟对象,它记录了所有被调用的方法及其参数,并且可以被配置来返回期望的值或引发异常。隔离测试:在测试某个组件时,隔离其与其他组件的依赖关系。模拟行为:模拟外部系统的响应或行为,以便于测试。验证调用:验证函数或方法是否被正确地调用。Mock测试是一种强大的单元测试技术,它能够帮助我们有效地测试代码,并确保代码的正确性和可靠性。通过本文的学习,你应该已经掌握了如何使用Python的库来进行Mock测试。 阅读详情

相关推荐

Python接口自动化测试:Mock技术核心原理与实战应用

在软件测试领域,单元测试和接口测试是保障代码质量的关键环节。其核心原理在于通过隔离被测代码与外部依赖,实现快速、稳定的测试验证。Mock技术正是实现这种隔离的重要手段,它通过创建虚拟对象来模拟真实依赖的行为,从而让测试专注于业务逻辑本身,极大提升了测试的可靠性和执行效率。在Python生态中,unittest.mock模块提供了强大的Mock、MagicMock和patch等工具,能够灵活模拟HTTP API响应、数据库查询、时间函数等各种场景。结合autospec参数和Pytest框架的fixture机制

weixin_30271335的博客 515

unittest.mock中Mock的使用与实践

在下面的例子中我们有一个函数 some_function 实例化了 Foo 并调用该实例中的一个方法。对 patch() 的调用会将类 Foo 替换为一个 mock。Foo 实例是调用该 mock 的结果,所以它是通过修改 return_value 来配置的。下面这个简单的 ProductionClass 具有一个 closer 方法。如果它附带一个对象被调用那么它就会调用其中的 close。

weixin_42963678的博客 534

BH1750光强度传感器Stm32f103驱动(已测试ok)

1. 实验:Stm32f103 驱动 bh1750采集光照强度,串口打印采集到的数据。 2. 实验准备器材 开发版:stm32f103c8t6 器件:bh1750 GY-302 开发环境:win10,KILE4 下载程序的软件:FlyMcu.exe 串口调试助手:ComAssistant.exe 3. BH1750 的接线 VCC:5V或3.3V ...

weixin_53329977的博客 8928

测试人必会的Python内置库:unittest.mock(单元测试mock的基础使用)

1. 为什么需要使用mock unittest.mock是用于在单元测试中模拟和替换指定的对象及行为,以便测试用例更加准确地进行测试运行。例如对于以下代码,想要针对函数func_a写一个简单的单元测试: import unittest def func_c(arg1, arg2): a_dict = {} # 其他代码 return a_dict def func_b(arg3, arg4): b_list = [] a_arg1 = None

HB8888888的博客 3871

反无人机作战体系全解析:从低慢小探测到分层拦截

随着小型无人机在军事和民用领域的广泛使用,低慢小目标探测与拦截成为低空安全的核心挑战。传统防空体系面对成本低廉、飞行高度低、雷达特征小的无人机集群时,暴露出探测难、识别难、处置成本失衡等问题。为应对威胁,反无人机体系采用分层闭环设计,融合雷达、光电、声学与无线电侦测实现多源感知,通过电子战软杀伤与导弹、高炮、激光等硬杀伤手段协同配合,并借助自动化指控系统缩短“传感器到射手”的响应时延。该体系既可支撑战场要地防护,也能为民用低空安防提供参考。围绕分层反制逻辑,梳理探测、软硬杀伤、指控布防及实战短板,提供理解反

weixin_42533120的博客 333

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

python unittest 之mock学习笔记

python unittest 之mock学习笔记mock的详细用法(英文介绍): 假设有文件fun1和fun2,fun2中的函数调用了fun1中的函数。利用mock方法生成fun1中函数的一个fake返回值,在此基础上,对fun2中的函数进行单元测试。代码如下: fun1文件#!/usr/bin/env python # -*- coding: utf-8 -*- # fun1.py def

qq_34808572的博客 2464

vrep小车避障算法_V-REP 多车道巡线与避障

任务概要在给定的赛道中,实现多车道的避障和视觉巡线。避障算法没有限定,可使用人工势场、RRT等路径规划算法。车体大小、赛道信息以及参考资料在此处下载。完成情况已学习并能初步使用 V-REP Python Remote API 接口,实现 Python 与 V-REP 的功能交互。已实现基于视觉传感器的多车道巡线功能。已实现基于视觉传感器的多车道避障功能。V-REP Python Remote AP...

weixin_39692037的博客 1833

c++ 单元测试打桩技巧总结(stub、mock)

Stub API 源码地址: https://github.com/coolxv/cpp-stub 说明: - 只适用linux,和windows的x86、x64架构 - access private function相关方法基于C++11(参考:https://github.com/martong/access_private) - replace function相关方法基...

杉枫 3万+

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python >= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

InSAR数据获取实战指南:Sentinel-1、精密轨道与ALOS PALSAR DEM的下载与应用

本文详细介绍了InSAR数据获取的实战指南,重点解析Sentinel-1数据、精密轨道数据(OPOD)和ALOS PALSAR DEM的下载与应用技巧。通过实际案例和代码示例,帮助读者掌握数据筛选、下载加速、校验及多源数据协同使用的关键方法,提升地面形变监测的精度与效率。

weixin_29215815的博客 431

Django单元测试实战:从零搭建可靠测试体系

单元测试是保障Web应用稳定性的基础工程实践,其核心在于通过隔离执行、可控输入与预期断言,验证代码逻辑的正确性与健壮性。在Django生态中,单元测试不仅涉及Python层面的函数/方法校验,更深度耦合模型验证、URL路由匹配、视图请求处理及DRF序列化等框架特有机制。借助django.test.TestCase提供的内存数据库隔离能力,配合test client模拟真实HTTP交互,开发者可高效覆盖models、serializers、views等关键层。这种轻量、快速、可重复的验证方式,显著降低重构风险

338

Camunda 7.x 系列【22】全局监听器

Camunda支持义一个全局ExecutionListener和一个全局TaskListener,会捕获流程中发生的所有事件的通知,这样可以定义一个全局的审批人检查监听器,作用于所有用户任务。

记录知识、锤炼自我 2942

Python测试框架pytest入门:从基础概念到实战应用

单元测试是软件质量保障的核心环节,通过验证代码单元的正确性确保系统可靠性。其原理在于隔离测试最小代码单元,模拟各种输入场景并验证输出是否符合预期。在Python生态中,pytest框架以其简洁的语法和强大的功能脱颖而出,显著提升了测试编写效率和可维护性。该框架采用“约定优于配置”理念,支持原生assert语句和智能断言自省,让测试代码更加Pythonic。通过灵活的夹具(Fixture)系统,开发者可以优雅管理测试资源的生命周期;而参数化测试功能则支持一次编写多组数据验证。这些特性使pytest成为从简单脚

weixin_33743703的博客 435

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【第五章第2节】gRPC与GraphQL API测试

gRPC与GraphQL API测试摘要 本文探讨了现代API协议gRPC和GraphQL的自动化测试方案。通过一个电商库存服务案例,揭示了协议变更引发的连锁问题,强调强类型API契约验证的重要性。 核心要点: 协议对比: gRPC基于HTTP/2和Protobuf,适合微服务间通信 GraphQL提供灵活查询,常用于BFF层 两种协议都需要严格的schema验证 gRPC测试重点: 四种RPC模式测试(一元/流式) Protobuf契约验证 健康检查和拦截器测试 GraphQL测试重点: Sche

笑着的程序员的博客 257

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OpenClaw+Ollama:用AI大模型实现Python单元测试的低代码自动化生成

单元测试是保障软件质量、提升代码可维护性的核心实践,其原理在于通过编写针对函数、模块的独立验证代码,确保程序单元按预期工作。传统手工编写测试用例耗时耗力,且易遗漏边界场景。随着AI技术的发展,大语言模型凭借对代码语义的深度理解,能够自动化生成高质量测试代码,显著提升开发效率与测试覆盖率。结合低代码自动化平台,可将此能力工程化、流程化,形成开箱即用的解决方案。本文以OpenClaw低代码自动化中台与本地部署的Ollama大模型为核心,详细演示如何构建一套安全、可控的AI测试生成流水线,覆盖从环境搭建、提示词调

aodiyi6351的博客 461

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hermes Agent:基于学习循环与技能系统的自我进化Agent操作系统

Agent(智能体)作为大模型落地的核心范式,正从静态工具调用迈向动态能力演进。其核心原理在于构建可观察、可反馈、可迭代的执行闭环——即学习循环(Learning Loop),通过观察、反思、规划、执行四阶段驱动系统持续优化。技术价值体现在打破传统框架中能力硬编码、错误修复高成本、技能复用率低等工程瓶颈,实现以技能为原子单元的模块化、类型安全、可验证的能力治理。典型应用场景覆盖客服自动化、知识库问答、多步骤业务编排等需长期迭代的生产环境。本文深入解析Hermes Agent如何将这一理念转化为可运行、可调试

weixin_30924087的博客 464

测试工程师常用工具集 | 为高效测试而生

QAToolkit:测试工程师的全场景效率工具平台 QAToolkit是一款专为测试工程师设计的本地化工具平台,旨在解决测试工作中的高频痛点问题。该平台整合了六大核心能力域:数据生成、测试用例生成、接口研发辅助、自动化测试、性能测试和安全测试,覆盖从需求分析到上线的全流程测试场景。 平台亮点功能包括: 智能数据生成:支持结构化测试数据、边界值和异常值的快速生成 用例自动生成:通过AI模型将需求文档快速转化为测试用例 接口测试辅助:提供文档标准化、变更分析和Mock服务生成等功能 一站式自动化:从接口文档直接

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 601

Python调用OpenAI API的生产级实践:Requests+Pydantic重构方案

OpenAI API调用本质上是HTTP客户端工程,其核心在于协议理解、错误分类与容错设计。不同于简单SDK封装,真实生产环境要求对请求构造、超时控制、重试策略、密钥轮换和响应解析进行精细化管控。本文围绕Requests库构建底层通信、Pydantic实现数据契约验证、自研Client封装业务逻辑三大技术支柱,系统阐述如何规避环境变量陷阱、解决429限流误判、防御400非法输入、实现无感故障切换等关键问题。内容覆盖从venv隔离、.env安全配置到pytest单元测试的全链路工程规范,适用于所有需对接LLM

weixin_34348805的博客 481

如何开发PSLab Notebooks自定义仪器功能:完整开发者指南

PSLab Notebooks项目为开源硬件Pocket Science Lab(PSLab)提供了强大的Jupyter Notebook教程生态系统,让用户能够通过Python编程轻松控制六种核心仪器功能。本文将为您提供完整的开发者指南,教您如何扩展PSLab Notebooks项目,开发自定义仪器功能,充分发挥这款开源科学实验室的潜力。🚀 ## PSLab Notebooks项目概述与架构

gitblog_00343的博客 904

告别手动:用Python脚本批量处理HDF转TIFF,解放HEG命令行操作

本文介绍如何利用Python脚本实现HDF到TIFF的批量转换,彻底告别HEG命令行的手动操作。通过构建自动化流水线,包括文件遍历、参数生成、执行引擎和监控系统,显著提升遥感数据处理效率,降低错误率。方案支持并行处理、GIS集成和容器化部署,适用于Landsat、MODIS等时序数据的批量处理。

weixin_30536513的博客 894

机器学习模型生产化落地:从Notebook到高可用服务的12个关键实践

机器学习模型部署不是简单封装为API,而是涉及可观测性、流量治理、资源隔离、模型监控等系统性工程。其核心原理在于应对生产环境的不确定性常态——如特征漂移、GPU显存抖动、依赖版本漂移和网络延迟波动。技术价值体现在将实验室模型转化为可运维、可回滚、可审计、可降级的业务服务,显著降低线上故障率与MTTR。典型应用场景包括金融风控、实时推荐、智能客服等对延迟、稳定性与合规性要求严苛的领域。本文聚焦MLOps落地中模型服务化、边缘网关治理与统一可观测性三大支柱,深入解析Triton推理引擎、Kong智能路由、Evi

weixin_34327761的博客 321

本地部署开源AI编程助手:从Ollama部署到VS Code集成实战

AI辅助编程正从云端工具向本地化、私有化部署演进,其核心在于利用开源大语言模型实现代码理解与生成。通过模型量化、本地推理服务等技术,开发者可在离线环境下获得低延迟的代码补全、解释和重构能力。私有化部署解决了代码隐私与数据安全的痛点,尤其适用于处理敏感商业项目。结合Ollama等推理工具与VS Code插件,能够将AI深度集成到开发生态中,在遗留系统代码解读、CRUD开发及单元测试生成等场景显著提升工程效率。本文以DeepSeek-Coder模型为例,详解从环境搭建、性能调优到实际编码的完整落地路径。

weixin_30911451的博客 653

中文特殊表达式解析:从正则匹配到语义分析的完整技术方案

自然语言处理(NLP)作为人工智能的重要分支,其核心原理是通过计算语言学方法让计算机理解人类语言。在中文NLP领域,正则表达式作为基础文本匹配工具,能够识别固定模式的字符串,而语义分析则通过词性标注、情感计算等技术深入理解文本含义。这种技术组合在智能客服、内容审核等场景中具有重要价值,能够准确解析类似'儿不孝,儿敬忠'这样的中文特殊表达式。jieba分词和SnowNLP等工具为中文文本处理提供了成熟的工程实践方案,通过模式匹配与语义分析的结合,可以有效解决中文表达中的文化内涵识别难题。

weixin_34037515的博客 528

如何用Python轻松控制Linux嵌入式外设的终极指南

想象一下,你正在开发一个智能家居控制系统,需要同时读取温度传感器、控制LED灯带、调节风扇转速,并与主控板通信。传统方法可能需要编写复杂的C代码、处理底层驱动,甚至需要重新编译内核。但现在,有了python-periphery这个纯Python库,你可以用几行Python代码就能搞定所有这些硬件交互任务,无需深入底层细节。python-periphery是一个专为Linux嵌入式平台(如树莓派、B

gitblog_00304的博客 828
上一篇: unittest用例执行顺序调整--03
下一篇: APP兼容测试的机型选择和基本要点
python_nice
博客等级 码龄8年 46粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值