文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python在测试中使用 Mock的方法

2023-06-06 16:14

关注

这篇“python在测试中使用 Mock的方法”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“python在测试中使用 Mock的方法”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

Mock概念

mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对所依赖的模块的测试。

一般有两种场景:

前端mock可以通过一些工具来完成:

后端的 Mock 则是从接口的角度,如果一个接口A返回的数据需要依赖于另一个接口B,当敏捷开发中B接口还未开发完全时候这里会需要用到 Mock。

对于测试人员,对接口测试的时候,部分接口尚未开发完成,在约定了接口定义之后,也可以使用 Mock 来模拟。

在 python3.X 中 Mock 模块已经被集成到unittest里面。

Mock类

class Mock(spec=None,side_effect=None,return_value=DEFAULT,name=None)

简单的例子体验下 Mock 的功能特点

from unittest import mockdef add(num1,num2): return num1 + num2 # pass add = mock.Mock(return_value=200) # 创建mock对象 print( add(10,20) )

你会发现无论输入的参数是什么,输出结果都是200。等于方法被 Mock 拦截处理了。

一个相对正式的 Mock 例子

正常情况:

import requestsdef request_scm(): # res = requests.get('http://www.mysx-scm.com') res = requests.get('http://baidu.com') return res.status_codeimport unittestfrom unittest import mockclass TestScmApi(unittest.TestCase):  def testUrl(self):  # request_scm = mock.Mock(return_value=200)  self.assertEqual(request_scm(), 200, msg='testUrl 出现错误')if __name__ == '__main__': unittest.main()

可以分别把两个 # 注释移到下一句试试。

一个完整的测试例子

import requestsclass scmapi(): def request_scm():  res = requests.get('http://www.mysx-scm.com')  # res = requests.get('http://baidu.com')  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参数的值,则将该信息作为失败的错误信息返回。

序号断言方法断言描述
1assertEqual(arg1, arg2, msg=None)验证arg1=arg2,不等则fail
2assertNotEqual(arg1, arg2, msg=None)验证arg1 != arg2, 相等则fail
3assertTrue(expr, msg=None)验证expr是true,如果为false,则fail
4assertFalse(expr,msg=None)验证expr是false,如果为true,则fail
5assertIs(arg1, arg2, msg=None)验证arg1、arg2是同一个对象,不是则fail
6assertIsNot(arg1, arg2, msg=None)验证arg1、arg2不是同一个对象,是则fail
7assertIsNone(expr, msg=None)验证expr是None,不是则fail
8assertIsNotNone(expr, msg=None)验证expr不是None,是则fail
9assertIn(arg1, arg2, msg=None)验证arg1是arg2的子串,不是则fail
10assertNotIn(arg1, arg2, msg=None)验证arg1不是arg2的子串,是则fail
11assertIsInstance(obj, cls, msg=None)验证obj是cls的实例,不是则fail
12assertNotIsInstance(obj, cls, msg=None)验证obj不是cls的实例,是则fail

以上是“python在测试中使用 Mock的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯