我是靠谱客的博主 迅速八宝粥,最近开发中收集的这篇文章主要介绍python Mock使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、什么是mock?

  • mock翻译过来有模拟的意思。主要功能是使用mock对象替代掉指定的python对象,以达到模拟对象的行为的目的。
  • 在python里面mock是辅助单元测试的一个模块,在2.x版本里面属于单独的模块,在python3以后已经集成到了unittest模块当中。

二、使用场景

  • 解决依赖:当测试某个接口或者功能模块时,如果被测接口所依赖的其他接口并没有开发完成,这个时候我们就可以使用mock来模拟依赖接口的返回,进行提前测试。
  • 模拟复杂业务接口:如果测试的某个功能,涉及其他系统,而其他系统测试数据构造相对复杂,该系统并不在本次迭代范围以内。此时可以使用mock来模拟这个复杂系统来降低测试成本提高测试效率。
  • 外部接口联调:当测试过程中需要与第三方公司联调,但是测试环境并没有打通的时候,此时可以根据第三方公司的接口文档来mock各种场景,提前进行我方系统的测试。

三、简单使用

  • 导入模块

from unittest import mock

  • 使用mock模拟函数返回
    from unittest import mock
    def test01():
    """
    test01函数并未实现,通过mock来模拟该函数的返回
    :return:
    """
    pass
    test01 = mock.Mock(return_value=100) 创建Mock对象, 作为Test01的实例方法
    print(test01()) 当调用test01方法时, 会返回定义Mock对象时指定的return_value值
    输出:100
    
  • 跟据不同传参返回不同的值
    from unittest import mock
    def test01():
    """
    根据传参模拟不同返回值
    :return:
    """
    pass
    def test02(data):
    mock_data={
    "demo01":"支付中",
    "demo02":"支付成功",
    "demo03":"支付失败"
    }
    return mock_data[data]
    test01 = mock.Mock(side_effect=test02)
    print(test01("demo02"))
    输出:支付成功
    
  • 函数传参个数检查
    from unittest import mock
    def test01(x,y,z):
    pass
    传参符合规范返回success,否则报错
    test01=mock.create_autospec(test01,return_value="success")
    print(test01(1,2,3))
    输出:success
    
  • @path.object()装饰器使用
    新建mymock.py
    def test01():
    print("啥也不干")
    新建demo01.py文件
    from unittest.mock import patch
    import mymock
    @patch.object(target=mymock,attribute="test01")
    def test02(mock_fun):
    """
    函数内调用模拟方法并返回模拟值
    demo01:类名称/模块名称
    "test01":被模拟的方法
    mock_fun:接收被模拟的函数
    """
    mock_fun.return_value={'status_code':'200'} 为mock对象设置返回值
    result = mymock.test01() 调用函数就相当于调用mock对象
    print(result)
    test02()
    输出:{'status_code':'200'}
    
  • 总结
    • mock还有很多自带方法,而且功能非常强大,但是对于我们测试工程师而言,掌握这几个mock方法,平时工作中就足够了。本篇文章仅介绍mock的常用方法,其他方法感兴趣的同学可以去看官方文档。
    • 官方文档地址:https://docs.python.org/3/library/unittest.mock.html

最后

以上就是迅速八宝粥为你收集整理的python Mock使用的全部内容,希望文章能够帮你解决python Mock使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部