python Mock运用

一.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()

结果:

猜你喜欢

转载自www.cnblogs.com/hao2018/p/11412368.html