Python 标准库 unittest 不同遮掩方式的比较
背景
最近在搞 TDD , 有些 mock 的写法怕后面忘记了,在这里记录下现在针对 unittest 的一些心得。
目前针对 unittest 的 mock 最佳实践
假设我们有一个 dog.py 的代码,它的内容如下
class Dog(object):def get_name(self):return "dog"def fun():return "123"
那么它同级目标下 test_dog.py 这样写看起来比较好
from unittest.mock import MagicMock, patch
from unittest import TestCasefrom . import dogclass TestDogTestCase(TestCase):def test_dog_a(self):"""方法一:直接使用 patch 来遮掩目标方法,它有一个问题如果后面我们的文件名变了,路径变了都要调整这个字符串非常不方便。"""mock_get_name = MagicMock()mock_get_name.return_value = "hello"with patch("utils.dog.Dog.get_name", mock_get_name):d = dog.Dog()assert d.get_name() == "hello"def test_dog_b(self):"""方法二:使用 patch.object 来遮掩目标方法,这样字符串就只包括方法名了,对于源文件目标的变更就不影响测试用例了,所以这个相对友好一些。"""mock_get_name = MagicMock()mock_get_name.return_value = "hello"with patch.object(dog.Dog, "get_name", mock_get_name):d = dog.Dog()assert d.get_name() == "hello"def test_dog_c(self):"""方法三:把模块也看成对象,这位模块内的函数也就成方法了, 这个就能都统一到 patch.object 一个来解决了,感觉比较友好。"""mock_get_name = MagicMock()mock_get_name.return_value = "hello"with patch.object(dog, "fun", mock_get_name):assert dog.fun() == "hello"assert mock_get_name.called == True
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923347.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
微信商城网站搭建办公系统管理软件
来源:无数学 无计算机人类的历史可以看做一部关于解放的历史。也有这样的说法,懒惰是人类进步的动力。为了偷懒,人类不断的做着各种努力,发明了各种机器工具,将自己从繁重的劳动解放出来,另一方面…
中考复读学校网站怎么做wordpress 和shopify
求逆序对
划分归并对数组进行调整的合理性在于
每次划分数组后,在前面数组的元素与后面数组元素相对次序不会颠覆,就是前面元素在前面划分出的数组里随便调整,也依然在后面数组的任意元素里的前面,而不可能调整到后面数组的任意…
福建网站优化建设汕头网站建设方案开发
这里我就简单的聊几句,如何用vertx web来搞一个web项目的
1、首先先引入几个依赖,这里我就用maven了,这个是kotlinvertx web
<?xml version"1.0" encoding"UTF-8"?>
<project xmlns"http://maven.apac…
利用接口中的静态虚拟成员实现自定义配置节
本文介绍了C# 11中静态虚拟成员接口的新特性,展示了如何利用这一特性简化自定义配置节的注册和使用过程。通过定义IConfigOptions接口和扩展方法,实现了类型安全的配置管理,减少了重复代码。利用接口中的静态虚拟成…
天线增益与有源接收面积之间的关系
最近在看卫星通信,在学习星地链路传输的时候看到以下内容对于频率低于 1 GHz 的频段,使用有源接收面积接收电波时效率提升很困难
频率较低时,波长较长,小口径天线有效接收面积(有效口径)反而较小
有源接收面积 \…
US$54 AM29FXXX Adapter for CG Pro 9S12 Programmer
AM29FXXX Adapter for CG Pro 9S12 ProgrammerAM29FXXX Adapter is used to do AM29F200/AM29F400/AM29F800 series chip for ECU repair, Immobilizer repair etc.If your CG Pro 9S12 is with new design, please ch…
阜阳网站设计贵州普安县建设局网站
事务的特性 ACID 事务的隔离级别 并发事务问题 脏读:一个事务读到另一个事务还没有提交的数据不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同幻读:一个事务按照条件查询数据时,没有对应的数据行…
2025CSP-S晋级和英才计划入围后:我走过了哪些路
九月就这样在瞬息之间离去,在九月的最后一天里,我开始回忆。
今年的CSP-S1在9月20日,开学后只有三周时间,第二周和第三周的周一二三,学校给我们安排了晚自习第三节课的初赛练题,很显然这是不够的。
在一个信奥弱…
常州网站建设外包手机商场网站制作
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…
数据表和网站建设的关系个人名片模板
视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…
【J+S 二十连测】-- 第十二套爆炸记
已成彩笔这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊?这都能打炸,为啥我这么菜啊…
2025-2026-1 CS3311 软件工程 个人项目第一版已发布
程序已开源在github
以下是任务清单:
时间单位:h,最小单位0.5计划明确需求:0.5开发分析需求、生成设计文档、设计复审、代码规范:1.5
具体设计:2
具体编码:6
代码复审:1.5
测试:1.5记录用时:0
测试报告:2.5…
Python浅拷贝、深拷贝
浅拷贝和深拷贝是处理复杂数据结构(如列表、字典、对象等)时的两种复制方式,核心区别在于是否复制嵌套的数据结构:1. 浅拷贝(Shallow Copy)
只复制最外层的数据,而嵌套的子对象(如列表中的列表、字典中的列表等…
免费网站开发框架做棋牌网站建设
ob对比其他软件
上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…
RPC在分布式存储系统中的应用 - 指南
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
知名的家居行业网站开发南通门户网站建设
前言
云计算带来的优势之一便是弹性能力,云原生场景下Kubernetes提供了水平弹性扩容能力(HPA),让应用可以随着实时指标进行扩/缩。然而HPA的实际工作情况可能和我们直观预想的情况是不一样的,这里面存在一些认知误区。…
US$134 Tango Toyota Key Maker Authorization Service
Tango Toyota Key Maker Authorization ServiceIf you buy Tango Key Programmer Basic Software (SK80), and want to get the Toyota Key Maker Authorization, you can buy this service.Tips: No need shipping, a…