专栏首页搜狗测试测试利器之Mock server

测试利器之Mock server

哈喽,艾瑞巴蒂,又在美好的周一和大家见面了,今天要和大家分享的是Mock server相关的知识,一大波知识来袭,请做好准备~

什么是Mock server?

Mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 Mock对象:使用Mock Object进行测试,主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象)从而使测试顺利进行的工具。

为什么要用Mock?

  • Mock本意就是模拟或者效仿。我们可以把Mock理解为一个替身,在软件开发领域,通常就是指模拟对象。
  • Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。所以Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。
如何选择Mlock server?

  • EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。
  • JMock是一个使用模拟对象机制测试Java代码的开发包。模拟对象(Mock Object)可以取代真实对象的位置,用于测试一些与真实对象进行交互或依赖于真实对象的功能,模拟对象的背后目的就是创建一个轻量级的、可控制的对象来代替测试中需要的真实对象,模拟真实对象的行为和功能,方便我们的测试。JMock就是这种机制的实现,使用JMock我们可以快速创建模拟对象,定义交互过程中的约束条件等,同时JMock也是易扩展的,你可以很方便添加自定义的需求。
  • Mockito 无需准备昂贵的前期启动。他们的目标是透明的,让开发人员专注于测试选定的行为。Mockito 拥有的非常少的 API,所有开始使用 Mockito,几乎没有时间成本。因为只有一种创造 mock 的方式。只要记住,在执行前 stub,而后在交互中验证。你很快就会发现这样 TDD java 代码是多么自然。
为什么用Moco?

  • 满足大多数应用场景
  • 简单高效,采用Stub code的方式
  • 支持http REST Socket等协议,支持API和独立运行两种方式,可以植入单元测试中
  • 代码开源(https://github.com/dreamhead/moco)
  • 支持Maven scala shell Gradle等集成
使用过程中遇到的问题?

  • Post类型请求,转发到Moco server 后返回400状态码 【解决方案】Post请求response返回格式有json格式、forms格式,PC商城需要用forms格式。
  • Moco 接收C端请求时,匹配reqeust 参数,为全匹配,如果不写则不会匹配参数 ? 【使用场景】 当接口请求中带有时间戳时,如图所示:

配置Moco时,需要将这个参数在配置文件中去掉即可,如图所示:

  • Moco server配置文件match uri字段无法正确匹配 【解决方案】可以使用contain 关键字进行代替使用match 参数
  • 页面返回文件为XML, 直接访问地址返回一下错误,如图所示:

【问题分析】 通过Fiddler抓包查看请求,Moco Server已经返回了对应的XML文件,但是浏览器还是依然报错,如图所示:

【问题根源】 返回的文件就是一个文本,未指定其格式,所以会提示上述错误,服务器给出提示,如图所示:

【解决方案】 指定返回文件的格式即可,如图所示:

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:Py

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mock工具介绍

    如果将mock单独翻译过来,其意义为 “虚假、虚设”,因此在软件开发领域,我们也可以将其理解成 “虚假数据”,或者 “真实数据的替身”。

    用户5521279
  • 控制你的数据——Python mock的基本使用

    Mock即模拟的意思。在Python中,提供了基于单元测试的mock模块,它的主要作用是使用mock对象替代掉指定的Python对象,以达到模拟对象功能的行为...

    用户5521279
  • 浅谈代码覆盖率

    代码覆盖率作为一个指导性指标,可以一定程度上反应测试的完备程度,是软件质量度量的一种手段。100%覆盖的代码并不意味着100%无bug的应用,代码覆盖率作为质量...

    用户5521279
  • 干货 | 携程Mock本地化实践

    这里说的Mock指的是系统测试或者接口测试场景下,模拟被依赖的其他服务接口进行响应返回的工具。测试人员通过服务接口级Mock的手段隔绝真实外部依赖,创造可控、稳...

    携程技术
  • 前后端分离--MockJS模拟API返回数据

    其实,我们都知道前后端分离已经逐渐成为业界项目开发标准方式。在Web开发前后端不分离的时代,开发人员既要开发前端,还得开发后端,而且视图和业务逻辑混合在一起,这...

    逆月翎
  • 搭建一个低配版的Mock Server

    通过阅读本文,你将对Mock的使用有一定的了解,对前后端分离的概念有了更深一步的认识,对Koa的使用有一定的了解。本文先从背景出发去抛出“我们为什么要用Mock...

    丰臣正一
  • 24. 企业级开发基础5:面向对象特征(封装)

    在我们程序开发过程中,定义好类型之后就可以通过类型来创建对象 如:我们定义一个中华人民共和国公民的类型

    大牧莫邪
  • python3 类、对象的基础概念

    py3study
  • c语言基础学习11_项目实战:IDE(集成开发环境)

    ============================================================================= ==...

    黑泽君
  • 27. 企业级开发基础8:面向对象扩展

    前面的章节中,我们已经学习过面向对象的基本操作、面向对象的三大特征的详细操作,对于面向对象有了一个初步的了解和认知。 本节内容会针对面向对象的程序设计进行一部...

    大牧莫邪

扫码关注云+社区

领取腾讯云代金券