# 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'])
上述内容为pytest中的pytest-mock的简单使用,如果有更好的方法可以下方留言一起探讨