pytest mock的使用

简介: 1.简单使用`return_value`返回固定的数据。2.使用`side_effect`返回可变的数据。

简单使用return_value返回固定的数据

  • 方法一,使用装饰器。

    import mock
    def add(a, b):
        return a + b
    
    
    # 使用mock的return_value参数改变add返回的数据
    @mock.patch('add', return_value=10)
    def test_add():
        print(add(1, 2))  # 10
  • 方法二,使用mock.path方法。

    import mock
    def test_add():
        with mock.patch('add', return_value=10):
            print(add(1, 2)) # 10

使用side_effect返回可变的数据

  • 当一个方法被同一个测试调用多次,而自己又不想得到同一个返回值,就轮到side_effect上场了。
  • 依次返回list里的数据。

    # 方法一
    @mock.patch('add', side_effect=[10, 20])
    def test_add():
        print(add(1, 2))  # 10
        print(add(1, 2))  # 20
    
    # 方法二
    def test_add():
        with mock.patch('add', side_effect=[10, 20]):
            print(add(1, 2))  # 10
            print(add(1, 2))  # 20
  • 根据传入的参数返回指定的数据。

    # 方法一
    @mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20})
    def test_add():
        print(add(2, 3))  # 20
        print(add(1, 2))  # 10
    
    # 方法二
    def test_add():
        with mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20}):
            print(add(2, 3))  # 20
            print(add(1, 2))  # 10
相关文章
在NestJS中构建超时拦截器
使用 Nest.js 构建超时拦截器
516 0
在NestJS中构建超时拦截器
|
6月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
503 1
|
存储 Java C#
深入理解synchronized实现原理
本文深入讲解了Java中`synchronized`关键字的实现原理。`synchronized`确保同一时刻只有一个线程能进入临界区,并保证共享变量的内存可见性。它通过monitor机制实现,作用于方法时使用ACC_SYNCHRONIZED标志,作用于代码块时使用monitorenter和monitorexit指令。每个对象都有一个与之关联的monitor,线程需获取monitor锁才能执行同步代码。Monitor内部包含_EntryList、_Owner、_WaitSet等队列,管理线程的加锁、等待和唤醒过程。
361 0
深入理解synchronized实现原理
|
存储 数据安全/隐私保护 Windows
逆向学习Windows篇:进程句柄操作详解
逆向学习Windows篇:进程句柄操作详解
920 1
|
存储 块存储
Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容
这篇文章是关于Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容的详细教程,涵盖了OSD的基础操作、节点缩容的步骤和实战案例以及OSD节点扩容的基本流程和实战案例。
805 6
|
机器学习/深度学习
svn commit 用法
svn commit 用法
2293 0
|
缓存 数据可视化 数据安全/隐私保护
Mac 系统占用100G+解决办法(详细步骤)
Mac 系统占用100G+解决办法(详细步骤)
3623 32
|
jenkins Java 应用服务中间件
SpringBoot+Jenkins+Github+Docker+Maven持续集成CI与持续部署CD全自动化部署
我们采用tomcat运行war包的这种方式,先来到官网下载war包:https://www.jenkins.io/download/ 然后把war包上传到tomcat的webapps里,自动就解压运行了,访问页面,然后查看并输入密码: cat /root/.jenkins/secrets/initialAdminPassword
745 0
线性规划求解第一的MindOpt如何使用Python语言的API建模及优化
MindOpt是一款高效的优化算法软件包,求解算法实现了线性规划(LP)、混合整数线性规划(MILP)、二次规划(QP),可以支持命令行、c、c++、java和python调用。接下来我们将发布一系列文章,讲述各个语言如何使用 MindOpt 来求解数学规划问题
线性规划求解第一的MindOpt如何使用Python语言的API建模及优化

热门文章

最新文章