前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试利器之Mock server

测试利器之Mock server

作者头像
用户5521279
发布2019-09-05 18:36:05
6K0
发布2019-09-05 18:36:05
举报
文章被收录于专栏:搜狗测试搜狗测试

哈喽,艾瑞巴蒂,又在美好的周一和大家见面了,今天要和大家分享的是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文件,但是浏览器还是依然报错,如图所示:

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Mock server?
  • 为什么要用Mock?
  • 如何选择Mlock server?
  • 为什么用Moco?
  • 使用过程中遇到的问题?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档