from unittest import mock result = mock.Mock(name='mock的名称') print(result) # 结果: <Mock name='mock的名称' id='2721150378120'> |
import unittest from unittest import mock class Test01(unittest.TestCase): def weather(self): '''天气接口''' # result = {'result': "雪", 'status': '下雪了!'} pass def weather_result(self): '''模拟天气接口返回值''' result = Test01.weather(self) if result['result'] == '雪': print('下雪了!!!') elif result['result'] == '雨': print('下雨了!!!') elif result['result'] == '晴天': print('晴天!!!!') else: print('返回值错误!') return result['status'] def test_01(self): '''模拟下雪天场景''' mock_xue_result = {'result': "雪", 'status': '下雪了!'} # 使用mock库进行模拟 Test01.weather = mock.Mock(return_value=mock_xue_result) statues = Test01.weather_result(self) self.assertEqual(statues, '下雪了!') def test_02(self): '''模拟下雨天场景''' mock_yu_result = {'result': "雨", 'status': '下雨了!'} # 使用mock库进行模拟 Test01.weather = mock.Mock(return_value=mock_yu_result) statues = Test01.weather_result(self) self.assertEqual(statues, '下雨了!') if __name__ == '__main__': unittest.main() |
# w1.py def weather(): '''天气接口''' pass def weather_result(): '''模拟天气接口返回值''' result = weather() if result['result'] == '雪': print('下雪了!!!') elif result['result'] == '雨': print('下雨了!!!') elif result['result'] == '晴天': print('晴天!!!!') else: print('返回值错误!') return result['status'] |
import unittest from unittest import mock # 导入接口文件 import w1 class Test01(unittest.TestCase): @mock.patch(target="w1.weather") def test_01(self, mock_login): '''下雪了''' mock_login.return_value={'result': "雪", 'status': '下雪了!'} statues = w1.weather_result() self.assertEqual(statues, '下雪了!') @mock.patch(target='w1.weather') def test_02(self,mock_login): '''下雨了!''' mock_login.return_value = {'result': "雨", 'status': '下雨了!'} statues = w1.weather_result() self.assertEqual(statues, '下雨了!') if __name__ == '__main__': unittest.main() |
pip install pytest-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'] |
# 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']) |
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |