百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python3的单元测试模块mock与性能测试模块cProfile

off999 2025-05-21 15:45 32 浏览 0 评论

我们知道写完了代码需要自己跑一跑进行测试,一个写好的程序如果连测试都没有就上到生产环境是不敢想象的,这么做的人不是太自信就是太无知。

传统测试无非就是自己运行一下程序查看结果,或者前后端服务进行联调,这里要说的是走正规流程的单元测试,那到底什么是单元测试呢?顾名思义,只测试当前单元的程序或者代码,也可以理解当前模块的代码块,单元测试假设所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部依赖组件实现进行模拟并且替换掉, 从而使得单元测试将焦点只放在当前的单元功能。

简单地说,mock就是帮我们解决测试依赖的一个模块,在Python3中,mock已经被集成到了unittest单元测试框架中,所以不需要单独安装,可以直接使用。


什么情况下使用mock
在项目的单元测试过程中,会遇到:
1、接口的依赖
2、外部接口调用
3、测试环境非常复杂

代码示例:

def add_and_multiply(x, y):
    addition = x + y
    multiple = multiply(x, y)
    return (addition, multiple)

def multiply(x, y):
    return x * y

class MyTestCase(unittest.TestCase):

    def test_add_and_multiply(self):
        x = 3
        y = 5
        addition, multiple = add_and_multiply(x, y)
        self.assertEqual(8, addition)
        self.assertEqual(15, multiple)

if __name__ == "__main__":
    unittest.main()



如上,我们要测试A模块,然后A模块依赖于B模块的调用。但是,由于B模块的改变,导致了A模块返回结果的改变,从而使A模块的测试用例失败。其实,对于A模块,以及A模块的用例来说,并没有变化,不应该失败才对。

这个时候就是mock发挥作用的时候了。通过mock模拟掉影响A模块的部分(B模块)。至于mock掉的部分(B模块)应该由其它用例来测试。


总有人吐槽 Python 的性能低下,但是 Python 本质其实也不是用来做计算任务的,Python 是一门胶水语言,是用来写业务逻辑的,而不是用来写CPU密集的算法的。事实上复杂的解析一般都会用 C++ 这种硬核语言来写了,比如 numpy TensorFlow lxml。大多数程序员一天 90% 的工作除了和PM撕逼以外,也就是在写 CRUD,也就是调用这些包。所以瓶颈一般在 IO 上而不在 CPU 上,而解决 IO 的瓶颈手段就多了,Python 中至少有 多进程、多线程、AsyncIO、Gevent 等多种方法。不过方法多其实也是一个弊端,这几种方法可以说是基本互不兼容,对各种第三方库的支持也参差不齐。

而测试python程序的cpu瓶颈,就需要cProfile模块了,cProfile是一种确定性分析器,只测量CPU时间,并不关心内存消耗和其他与内存相关联的信息。

cprofile在python3.7.2里是内置模块,不需要单独安装。

cProfile 有多种调用方法,可以直接从命令行调用:

python -m cProfile -s tottime 你的脚本.py


其中的 -s 的意思是 sort。常用的 sort 类型有两个:

tottime,指的是函数本身的运行时间,扣除了子函数的运行时间
cumtime,指的是函数的累计运行时间,包含了子函数的运行时间


要获得对程序性能的全面理解,经常需要两个指标都看一下。


至此,使用cprofile就可以很简单的看出你写的程序是否性能堪忧了,不过性能这个问题其实是典型的木桶理论的场景,系统的整体性能是由最差的一块决定的。所以也是一个不断迭代的过程。

相关推荐

连wifi神器哪个最好(连wifi软件哪个好用)

水星的更好。如果需要支持最新无线协议WIFI6的路由,可以选择水星X18G,全千兆网口,双频并发,无线速率1800M,有端口盲插功能,对小白很友好;采用最新的MU-MIMO技术,在多用户环境下,每个...

电脑蓝屏了怎么办修复0x0000007b
  • 电脑蓝屏了怎么办修复0x0000007b
  • 电脑蓝屏了怎么办修复0x0000007b
  • 电脑蓝屏了怎么办修复0x0000007b
  • 电脑蓝屏了怎么办修复0x0000007b
boot manager是什么意思(boot,manager)

1.长按电脑开机键,强制性关机;2.按开机键打开电脑,当看到电脑主板LOGO的时候按对应的Bios启动快捷键(每个主板不大一样请自行查询进入BIOS的快捷键)进入BIOS;3.找到启动(Boot)菜单...

笔记本安装打印机步骤(笔记本安装打印机步骤是什么)
  • 笔记本安装打印机步骤(笔记本安装打印机步骤是什么)
  • 笔记本安装打印机步骤(笔记本安装打印机步骤是什么)
  • 笔记本安装打印机步骤(笔记本安装打印机步骤是什么)
  • 笔记本安装打印机步骤(笔记本安装打印机步骤是什么)
hp laserjet1020打印机驱动(hp laserjet1020手机驱动)
hp laserjet1020打印机驱动(hp laserjet1020手机驱动)

1、用USB线缆连接惠普LaserJet1020打印机和个人计算机。线缆两端的接头一扁一方,扁的一头连个人计算机,方的一头连打印机。小提示:打印机的电源开关位于背面,先不用打开。  2、将随打印机附带的驱动光盘放入个人计算机的...

2025-12-11 13:51 off999

win10最早版本是哪个(win10早期版本)

一般WINDOWS10是家庭版或专业版。因为WINDOWS10作为微软公司的新一代操作系统,具有不同版本,家庭版和专业版是最为常见的版本,两者在功能和适用场景上有所不同。家庭版适用于家庭用户和学生...

360网页版(网页版360浏览器网址)

1、首先打开电脑浏览器。2、然后在浏览器上搜索搜索360网盘。3、然后就可以看到网页版登录入口。4、最后点击进去就可以输入账号密码,登录360云盘了。5、登录成功后,就进入到云盘主界面中。就可以进行文...

电脑最新系统下载(电脑安装最新系统版本)

系统文件格式有exFAT、NTFS、FAT等,不同的磁盘格式有不同的特性。1:exFAT、NTFS、FAT分区的比较exFAT优势明显1.支持非常大的文件和存储设备.2.对性能的改进支持。3.对未来的...

一键系统重装哪个好用(一键系统重装那个好)

1.黑鲨装机大师。运行很稳定经过多人多次测试非常的稳定不会出错,也经过了多用户验证使用很不错。界面清晰操作简便,对于新手来说可能都不会安装但是这款软件简单易懂极好上手。2.一键还原精灵装机版。安装简单...

联想驱动安装教程(联想驱动安装教程图解)
  • 联想驱动安装教程(联想驱动安装教程图解)
  • 联想驱动安装教程(联想驱动安装教程图解)
  • 联想驱动安装教程(联想驱动安装教程图解)
  • 联想驱动安装教程(联想驱动安装教程图解)
雨林木风官网 gho系统(雨林木风系统官网网址)

雨林木风系统官网是一家软件公司的官方网站,提供了该公司产品的下载、购买、使用教程、技术支持等服务。这个网站主要面向那些需要使用雨林木风系统的用户,可以通过官网了解和下载该公司的软件产品,以满足用户在工...

分区助手给c盘扩容靠谱吗(分区助手 c盘扩容)

应该是盘符没有了,请重新设置一下盘符就可以了,不用使用恢复软件。直接用微软的磁盘管理工具就可以了,前提是你磁盘上有未分配的空间。如果没有可以用AcronisDiskDirectorSuite,这...

2025手机cpu性能排行榜(手机芯片天梯图2025)

骁龙870处理器华为Mate40Pro(麒麟9000)为例,麒麟9000芯片CPU采用1+3+4设计,一个大核为3.13GHz的A77、3个中核为2.54GHz的A77、4个2.05GHz的A55,...

电脑系统还原怎么关闭(电脑系统还原怎么关闭程序)

要关闭电脑系统还原功能,您可以按照以下步骤进行操作(适用于Windows系统):1.打开“控制面板”。您可以通过在Windows搜索栏中输入“控制面板”并点击打开,或者在开始菜单中找到“控制面板”并...

全国免费wifi万能钥匙(免费的wlan万能钥匙)

想上不是免费的WiFi,需要通过一定的技术手段,比如使用一些共享WiFi的软件,例如。WiFi万能钥匙或者是微信小程序的WiFi连一连,但这些都不是真正意义上的免费上网了,WiFi的密码都是通过别人...

取消回复欢迎 发表评论: