zoukankan      html  css  js  c++  java
  • 使用Python中的mock模块进行单元测试

    在进行单元测试的时候,有时候会遇到这种情况:

    出于某些原因,我们不想测试某一部分内容,但是我们想要测试的部分却依赖这部分内容。

    这时候,可以使用mock模块来模拟调用这部分内容,并给出返回结果,举例如下:

    比如我们不想测试类C中的函数a,只想得到一个返回结果,可以这么写:

    #从Python 3.3 开始,mock被整合到了unittest中
    #此时使用 from unittest import mock 引入mock模块
    #python 3.3 之前使用 import mock
    from
    mock import patch import unittest class TestXXX(unites.TestCase) @patch.object(C, 'a')
      # or: @patch('C.a')
    def test_xxx(self, Ca): Ca.return_value = 20 ......

    这样在测试中调用C类中的a函数将直接返回20

    以下方式也能实现目的:

    ...
        def test_xxx(self):
            c = C()
            c.a = mock.Mock(return_value = 20)
    ......

    以上模拟的是类中的函数,也可以使用Mock来模拟普通函数

    from mock import Mock
    
    mfunc = Mock()
    mfunc.return_value = 3
    
    mfunc()    #3
      

    也可以使用参数调用,并assert参数:

    mfunc(1, 'a')            # 3
    mfunc.assert_called_with(1, 'a') #assert that calls are made in a particular way

     http://cizixs.com/2015/05/28/python-mock-usage

  • 相关阅读:
    贝叶斯公式的直观理解(先验概率/后验概率)
    linux生成.so库如何指定添加其他的.so库
    第一章笔记
    高学成
    第一张笔记
    简单编译器之语法分析
    浅析Netty的异步事件驱动(二)
    浅析Netty的异步事件驱动(一)
    简单编译器之词法分析
    Android TV 焦点控制逻辑
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8111954.html
Copyright © 2011-2022 走看看