接口自动化测试之Mock
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化测试之Mock相关的知识,希望对你有一定的参考价值。
参考技术A
Mock介绍
1.找到要替换的对象:我们需要测试的是visit_ustack这个函数,那么我们需要替换掉send_request这个函数。
2.实例化Mock类得到一个mock对象,并且设置这个mock对象的行为。在成功测试中,我们设置mock对象的返回值为字符串“200”,在失败测试中,我们设置mock对象的返回值为字符串"404"。
3.使用这个mock对象替换掉我们想替换的对象。我们替换掉了client.send_request
4.写测试代码。我们调用client.visit_ustack(),并且期望它的返回值和我们预设的一样。
上面这个就是使用mock对象的基本步骤了。在上面的例子中我们替换了自己写的模块的对象,其实也可以替换标准库和第三方模块的对象,方法是一样的:先import进来,然后替换掉指定的对象就可以了。
Mockrunner用在J2EE环境中进行应用程序的模拟测试。它不仅支持Struts actions,servlets,过滤器和标签类,还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序。
Mockrunner扩展了JUnit并模拟了必要的行为,而无需调用实际的基础结构。它不需要正在运行的应用程序服务器或数据库。此外,它不会调用web容器或Struts ActionServlet。它非常快速,使用户可以在测试的所有步骤中操纵所有涉及的类和模拟对象。它可以用于为基于J2EE的应用程序编写非常复杂的单元测试,而不会产生任何开销。Mockrunner不支持任何类型的容器内测试。
Mockrunner不会读取任何配置文件,例如web.xml或struts-config.xml。您可以使用Mockrunner API指定所有参数。因此,可以将servlet,过滤器,标签和Struts动作作为可重用组件进行测试,而不管您在一个或另一个应用程序中使用的设置如何。无法测试配置文件中的定义。如果要这样做,可以将StrutsTestCase用于基于Struts的应用程序或Cactus。
Mockrunner支持Java版本从1.3到1.6以及J2EE 1.3,J2EE 1.4和JavaEE5。尚不支持EJB 3.0。Mockrunner支持Struts版本1.1、1.2和1.3。
下载地址:Mockrunner download | SourceForge.net
最后:【可能给你带来帮助的教程】软件测试最新自学教程
Yapi平台之Mock服务
参考技术A YApi的 Mock 功能可以根据用户的输入接口信息如协议、URL、接口名、请求头、请求参数、返回数据( 返回数据 )生成 Mock 接口,这些接口会自动生成模拟数据,创建者可以自由构造需要的数据。mock模拟数据基于mock.js。Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
l 根据数据模板生成模拟数据
l 模拟 Ajax 请求,生成并返回模拟数据
l 基于 HTML 模板生成模拟数据
进入项目,选择并点击某接口
很多时候需要根据不同的请求参数返回不同的响应数据,可以使用高级Mock中的期望或自定义脚本来实现。
以新网项目中的联合登陆接口为例。后台逻辑为如果用户已开户则返回数据中"openAccount": true,如果未开户"openAccount": false。
接口的输入参数有:mobile,idCard,userRealName。可以设置输入userRealName=’哈哈’时为已开户条件,返回"openAccount": true。为其他值时均为未开户的情况,返回"openAccount": false。下面分别用期望和脚本两种方式实现:
还是以新网银行项目为例,结合app中的H5页面来演示一下。
参考:
yapi官网教程: <u>https://hellosean1025.github.io/yapi/documents/index.html</u>
Mock.js的详细内容参考: <u>http://mockjs.com/0.1/#natural</u>
以上是关于接口自动化测试之Mock的主要内容,如果未能解决你的问题,请参考以下文章
最全面Java接口自动化测试实战 HttpClient+TestNG+Mock+MyBatis