python测试之mock

python测试之mock,第1张

概述什么是mock?目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较低;如果在前后端开发工程师约定好接口定义后,通过mock接口返回,则可实现前后端并行开发;在测试过程中,对于某些不易构造或不易获取的对象,创建一个虚拟的对象以便测试的方法

什么是mock?

目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较低;如果在前后端开发工程师约定好接口定义后,通过mock接口返回,则可实现前后端并行开发;在测试过程中,对于某些不易构造或不易获取的对象,创建一个虚拟的对象以便测试的方法就是mock。

使用场景对象信息难构建:测试过程中,需要第三方接口返回特定的数据以符合特定的测试场景,此时往往需要跨部门的沟通协调测试数据,成本较高,效率低,通过mock可以自定义返回所需的测试结果。依赖的接口尚未开发完成:在对接口性能压测时,需要下游接口及时返回数据,满足上有接口的调用频度。在依赖接口多的情况下,通过mock可减轻工作量。异常场景:超时异常,连接异常等。测试过程中需要测试一些异常场景,接口正常的情况下无法提供异常数据优缺点

优点

团队可以并行工作:前后端工程师只需要定义好接口文档,即可开始并行工作,互不影响。与此同时,开发自测阶段也可尽早开展,从而尽早发现问题,有利于整个产品质量以及进度的保证。系统隔离:当前模块所依赖的其他系统模块出错时,可采用mock隔离,避免干预。测试覆盖率:正常情况下,异常条件较难达到,使用mock可轻松解决,需要什么测试数据,进行模拟即可。

缺点

测试过程中如果大量使用mock,测试场景也就失去了真实性,可能会导致在后续的系统性测试中才发现BUG,使得缺陷发现较晚,可能会造成后续修复成本较大。所以建议不要过分依赖mock接口进行测试。

解决方案

方案1:搭建模拟服务器,然后模拟向服务器发送请求

mocowiremock

以上两种均需要安装JDK,而后通过jar命令启动服务器

方案2:将测试对象所依存的对象替换为虚构对象的库

mock库:mock原是python的第三方库。python 3以后mock模块已经整合到了unittest测试框架中,不用再单独安装。
import unittestfrom unittest import mockclass SubClass:    def add(self, a, b):        # 代码功能未实现        passclass TestSub(unittest.TestCase):    def test_sub(self):        sub = SubClass()        # sub.add为要mock的对象,可以是一个类,或者函数,或是类实例        # 实例化Mock类得到一个mock对象,并设置mock对象的行为        sub.add = mock.Mock(return_value=10)        result = sub.add(12, 23)        self.assertEqual(result, 10)if __name__ == '__main__':    unittest.main()
import mock# 实例化Mock类得到一个mock对象,并设置mock对象的行为mock = mock.Mock()mock.test_mock.return_value = 'Hello Mock'print(mock.test_mock())
responses库:responses的使用主要是靠修饰器@responses.activate实现setup和teardown,以及responses.add()加入期望的返回值
@responses.activatedef test_simple1(self):    responses.add(responses.GET, 'http://test.cn/test',                  Json={'error': 'not found'}, status=200)    url = 'http://test.cn/test'    r = requests.get(url)    # print(r.Json())    self.assertEqual(r.Json()['error'], 'not found')

文末分享:公众号有我学习整理出来的自动化测试资料【接口自动化、app自动化、web自动化移动端自动化】、大厂面试文档、简历模板…待你来领取~ 见公众号:【伤心的辣条】愿你我都有所获…


合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

我的测试学习交流群:902061117 群里有技术大牛一起交流分享~

推荐好文:

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

自动化测试到底要学什么?

为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事

自动化测试和手动测试哪个更高级?

新手必看:怎么写一个合格的测试用例?

python登录接口测试问题记录与解决 ( 干 货 )

总结

以上是内存溢出为你收集整理的python测试之mock全部内容,希望文章能够帮你解决python测试之mock所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1187153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存