安装:pip install pytest-mock
这里的mock和unittest的mock基本上都是一样的,唯一的区别在于pytest.mock需要导入mock对象的详细路径。
- # weateher_r.py
- class Mock_weather():
- def weather(self):
- '''天气接口'''
- pass
- def weather_result(self):
- '''模拟天气接口'''
- result = self.weather()
- if result['result'] == '雪':
- print('下雪了!!!')
- elif result['result'] == '雨':
- print('下雨了!!!')
- elif result['result'] == '晴天':
- print('晴天!!!!')
- else:
- print('返回值错误!')
- return result['status']
先将需要模拟的天气接口,以及需要模拟的场景的代码写好,然后在进行遵循pytest的用例规范进行书写关于mock的测试用例
- # test_01.py
- import pytest
- from test_01.weather_r import Mock_weather
-
-
- def test_01(mocker):
- # 实例化
- p = Mock_weather()
- moke_value = {'result': "雪", 'status': '下雪了!'}
- # 通过object的方式进行查找需要mock的对象
- p.weather = mocker.patch.object(Mock_weather, "weather", return_value=moke_value)
- result =p.weather_result()
- assert result=='下雪了!'
-
- def test_02(mocker):
- # 实例化
- product = Mock_weather()
- # Mock的返回值
- mock_value = {'result': "雨", 'status': '下雨了!'}
- # 第一个参数必须是模拟mock对象的完整路径
- product.weather = mocker.patch('test_01.weather_r.Mock_weather.weather',return_value=mock_value)
- result = product.weather_result()
- assert result=='下雨了!'
-
- if __name__ == '__main__':
- 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、计算机基础
资料获取方式 :