• Python测试框架 Pytest —— mock使用(pytest-mock)


    pytest-mock

    安装:pip install pytest-mock

    这里的mock和unittest的mock基本上都是一样的,唯一的区别在于pytest.mock需要导入mock对象的详细路径。

    1. # weateher_r.py
    2. class Mock_weather():
    3. def weather(self):
    4. '''天气接口'''
    5. pass
    6. def weather_result(self):
    7. '''模拟天气接口'''
    8. result = self.weather()
    9. if result['result'] == '雪':
    10. print('下雪了!!!')
    11. elif result['result'] == '雨':
    12. print('下雨了!!!')
    13. elif result['result'] == '晴天':
    14. print('晴天!!!!')
    15. else:
    16. print('返回值错误!')
    17. return result['status']

    先将需要模拟的天气接口,以及需要模拟的场景的代码写好,然后在进行遵循pytest的用例规范进行书写关于mock的测试用例

    1. # test_01.py
    2. import pytest
    3. from test_01.weather_r import Mock_weather
    4. def test_01(mocker):
    5. # 实例化
    6. p = Mock_weather()
    7. moke_value = {'result': "雪", 'status': '下雪了!'}
    8. # 通过object的方式进行查找需要mock的对象
    9. p.weather = mocker.patch.object(Mock_weather, "weather", return_value=moke_value)
    10. result =p.weather_result()
    11. assert result=='下雪了!'
    12. def test_02(mocker):
    13. # 实例化
    14. product = Mock_weather()
    15. # Mock的返回值
    16. mock_value = {'result': "雨", 'status': '下雨了!'}
    17. # 第一个参数必须是模拟mock对象的完整路径
    18. product.weather = mocker.patch('test_01.weather_r.Mock_weather.weather',return_value=mock_value)
    19. result = product.weather_result()
    20. assert result=='下雨了!'
    21. if __name__ == '__main__':
    22. pytest.main(['-vs'])

    通过上述代码,提供pytest中mock的2中方法:第一种中的第一个参数是通过object的方式进行查找关于Mock_weather的类,然后在找到下面的需要mock的对象方法名称,第2个参数表示mock的值。

    第二中方法中的第一个参数是通过完整的路径进行找到需要mock的对象,第2个参数是mock的值。通过执行发现,两种方法都是可以mock成功的

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

    软件测试面试小程序

    被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

    涵盖以下这些面试题板块:

    1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

    6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

    资料获取方式 :

  • 相关阅读:
    vue仿企微文档给页面加水印(水印内容可自定义,超简单)
    ITSM | 对话——从业务场景、中国市场策略角度解读Atlassian ITSM解决方案
    java连接mysql数据库结构表批量生产word文档
    软件设计师——信息安全知识
    php常用算法
    HTML+CSS+JavaScript仿京东购物商城网站 web前端制作服装购物商城 html电商购物网站
    flink技术总结待续
    spring kafka使用(三)
    鸿蒙会成为安卓的终结者吗?
    ROS问题汇总以及vscode配置问题
  • 原文地址:https://blog.csdn.net/IT_LanTian/article/details/132677521