python Mock运用

匿名 (未验证) 提交于 2019-12-02 22:51:30

一.Mock概念

unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西。
它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为。

二.Mock的作用

1.如果你在写一个接口自动化,然后需要A接口返回结果给你的B接口使用,那么你就可以使用Mock了。

2.第三方接口依赖,在做接口自动化的时候,有时候需要调用第三方的接口,但是别人公司的接口服务不受你的控制,有可能别人提供的测试环境今天服务给你开着,别人就关掉了,
给自动化接口测试带来很多的麻烦,此时就可以自己写一个mock-server来模拟接口的返回数据。

三.Mock的导入

Mock在py3.0后就已经放在unittest框架里面了,所以直接from unittest import mock 就行了

四.实例演示

 mock_data.py

 1 def register():  2     '''假设这里是一个注册的功能,未开发完  3     注册成功返回:{'status': 1, 'code': '10001', 'data': None, 'msg': '注册成功'}  4     注册失败返回:{'status': 0, 'code': '20110', 'data': None, 'msg': '手机号码已被注册'}  5     '''  6     pass  7 def register_statues():  8     '''判断注册是否成功'''  9     result = register() 10     print(result) 11     if result["code"] == "10001": 12         return "注册成功" 13     elif result["code"] == "20110": 14         return "手机号码已被注册" 15     else: 16         return "未知错误异常"

test_demo.py

 1 from unittest import mock  2 import unittest  3 from  test_case_demo import mock_data  4   5 class Test_Register(unittest.TestCase):  6     '''单元测试用例'''  7     def test_01(self):  8         '''测试注册成功场景'''  9         # mock一个注册成功的数据 10         mock_data.register = mock.Mock(return_value={'status': 1, 'code': '10001', 'data': None, 'msg': '注册成功'}) 11         # 根据注册获取结果 12         statues = mock_data.register_statues() 13         #print(statues) 14         self.assertEqual(statues, "注册成功") 15  16     def test_02(self): 17         '''测试注册失败场景''' 18         # mock一个注册失败的数据 19         mock_data.register = mock.Mock(return_value={'status': 0, 'code': '20110', 'data': None, 'msg': '手机号码已被注册'}) 20         # 根据注册获取结果 21         statues = mock_data.register_statues() 22         #print(statues) 23         self.assertEqual(statues, "手机号码已被注册") 24  25 if __name__ == "__main__": 26     unittest.main()

结果:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!