时间:2021-05-23
mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对所依赖的模块的测试。
一般有两种场景:
前端mock可以通过一些工具来完成:
后端的 Mock 则是从接口的角度,如果一个接口A返回的数据需要依赖于另一个接口B,当敏捷开发中B接口还未开发完全时候这里会需要用到 Mock。
对于测试人员,对接口测试的时候,部分接口尚未开发完成,在约定了接口定义之后,也可以使用 Mock 来模拟。
在 python3.X 中 Mock 模块已经被集成到unittest里面。
class Mock(spec=None,side_effect=None,return_value=DEFAULT,name=None)
你会发现无论输入的参数是什么,输出结果都是200。等于方法被 Mock 拦截处理了。
正常情况:
import requestsdef request_scm(): # res = requests.get('http://') return res.status_code def pay_alipay(): ''' 待实现 return 200 ''' return 0 import unittestfrom unittest import mockclass TestScmApi(unittest.TestCase): needmock = True def setUpClass(): print("setUpClass():所有方法之前执行") def tearDownClass(): print("tearDownClass():所有方法之后执行") def setUp(self): self.scmapi = scmapi() print("setUp():每个方法之前执行") def tearDown(self): print("teardown():每个方法之后执行") def test_request_scm(self): if self.needmock: scmapi.request_scm = mock.Mock(return_value=200) self.assertEqual(scmapi.request_scm(), 200, msg='test_request_scm 出现错误') def test_pay_alipay(self): if self.needmock: scmapi.pay_alipay = mock.Mock(return_value=200) self.assertEqual(scmapi.pay_alipay(), 200, msg='test_pay_alipay 出现错误')if __name__ == '__main__': unittest.main()基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。
序号 断言方法 断言描述 1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail 2 assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail 3 assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail 4 assertFalse(expr,msg=None) 验证expr是false,如果为true,则fail 5 assertIs(arg1, arg2, msg=None) 验证arg1、arg2是同一个对象,不是则fail 6 assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象,是则fail 7 assertIsNone(expr, msg=None) 验证expr是None,不是则fail 8 assertIsNotNone(expr, msg=None) 验证expr不是None,是则fail 9 assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail 10 assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串,是则fail 11 assertIsInstance(obj, cls, msg=None) 验证obj是cls的实例,不是则fail 12 assertNotIsInstance(obj, cls, msg=None) 验证obj不是cls的实例,是则fail
以上就是python 如何在测试中使用 Mock的详细内容,更多关于python 测试中使用Mock的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前都是介绍在普通项目中使用mock.js,那么本次就来介绍一下在vue中使用mock.js实现前后端分离。安装:npminstallmockjs这里先写个小案
起步在《分布式任务队列Celery使用说明》中介绍了在Python中使用Celery来实验异步任务和定时任务功能。本文介绍如何在Django中使用Celery。
使用Junit或者TestNG可以进行单体测试,这篇文章简单说明一下如何在Springboot的项目中使用Junit进行单体测试。pom设定pom中需要添加sp
本文介绍如何在eclipse中使用Java进行Appium自动化测试前提条件1.配置好了java环境2.安装了eclipse3.安装了Maven4.安装了And
本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写。首先我们需要了解点ORM方面的知识ORM技术对象关系映射技术,即ORM(Obje