# 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']
# 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'])
![](https://i-blog.csdnimg.cn/blog_migrate/dbf6a20c77a68c653bc49159cebe9213.png)
上述内容为pytest中的pytest-mock的简单使用,如果有更好的方法可以下方留言一起探讨