本篇文章给大家谈谈用什么工具进行mock测试,以及mock测试的使用场景对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享用什么工具进行mock测试的知识,其中也会对mock测试的使用场景进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Mock测试
SpringMVC单元测试的独立测试;对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入MockMVC。
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
★ 服务器端SpringMVC测试的主入口点。
★ 通过MockMVCBuilders建造者的静态方法去建造MockMVCBuilder,MockMvc由MockMVCBuilder构造。
★ 核心方法:perform(RequestBuilder rb),执行一个RequestBuilder请,会自动执行SpringMVC的流程并映射到相应的控制器执行处理,该方法的返回值是一个ResultActions
★ MockMVCBuilder是使用构造者模式来构造MockMvc的构造器。
★ 主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder。
★ 可以直接使用静态工厂MockMvcBuilders创建即可,不需要直接使用上面两个实现类。
★ 负责创建MockMVCBuilder对象。
两种创建方式
★ 用来构建Request请求的,其主要有两个子类。
★ MockHttpServletRequestBuilder和MockMultipartHttpServletRequestBuilder(如文件上传使用),即用来Mock客户端请求需要的所有数据。
★ MockMvc.perform后将得到ResultActions
★ andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确。
★ andDo:添加ResultHandler结果处理器,如调试时打印结果到控制台。
★ andReturn:最后返回相应的MvcResult;然后进行自定义验证或下一步的异步处理。
★ MockMvcResultMatchers
用来匹配执行完请求后的**结果验证。
果匹配失败将抛出相应的异常。
包含了很多验证API方法。
★ MockMvcResultHandlers 结果处理器,表示要对结果做处理的需要用到。
使用postman的mock server
【前情提要】
作为测试工程师,在日常工作中遇到和三方对接的项目,三方开发进度不理想,导致无法进行联调测试,基于此,开始学习与了解mock服务
【吸收】
经过资料查询,实操验证之后,汇总成如下自我理解:
1.正常自己公司的项目里面,会有一个config文件,里面会配置相关第三方调用接口的地址:ip:port//,具体的URL中的path会统一在接口文档中给出,描述三方提供的接口信息,包括(接口说明、接口路径(path)、请求参数、返回数据格式等),具体项目中调用哪些三方接口,则在项目程序里再去规定。
2.mock的意义,简单来说在于模拟第三方接口的返回,用于我们项目的前端调试,或者接口与接口之间的调用调试。
3.基于此,我们可以使用postman工具的mock server功能,来模拟第三方接口,既然模拟了第三方的所有接口,那么我们在得到mock server的地址(IP2:port2)后,需要在自己项目的config文件中,把配置的第三方调用接口的地址(ip:port),修改成mock server的地址(IP2:port2)。这样程序在运行后,本来调用第三方的地址,才能够走到我们的mock server中,模拟我们配置好的接口返回的数据。
( 注 :1.在测试完成后,项目上线之前,需要检查配置文件的地址,是否修改为正确的三方地址。2.出于测试完整性,临时使用mock地址后,三方接口完成开发后,需要修改回正确的三方地址,进行联调测试)
4.postman的mock server 使用步骤:
a.注册postman账号
b.可新建一个space来单独管理mock
d.在环境变量里添加相应的变量,主要包括mock server 的服务地址(即:IP2:port2),以及属于自己账号下的api keys(获取方式需要登录postman官网)
e.给mock server里添加相应的接口,并增加相应的EXAMPLE
f.mock添加对应的接口后,因mock server是联网的,故不受内外网环境的限制,在任何网络环境下,都可配置你自己的mock server地址,进行测试。
python单元测试--mock
使用mock,可以将某个函数所依赖的对象或者变量mock掉,从而降低测试条件的负责度。如下所示:
上述是mock对象的简单使用方法,通过实例化一个Mock对象从而模拟掉原始函数的返回值,高级一些的用法就是通过mock.patch装饰器,装饰在类或者函数上进行模拟测试,如下在test.py文件中有两个类:
测试用例设计如下:
以上测试用例说明,通过patch装饰器模拟了 test.ProductionClass1 这个类,在 test_01 中使用 mock_class 模拟 test.ProductionClass1 。首先通过 mock_class.return_value 获取类实例(如果模拟的是函数,则不需要这一步),然后通过 obj1.pro1_method.return_value 设置方法的返回值,并进行测试。测试结果说明无论是通过 mock_class 还是 test.ProductionClass1 还是 obj1 执行方法,获取到的结果都是设置的值,并且在另一个类中调用模拟类的方法,也能成功获取到设置的 return_value 。
postman使用mock server模拟做挡板测试
mock挡板测试有两种方式,如图所示:
1是通过【create a new collection】直接创建mock server,设置endpoint、状态码和响应正文,比较简单,不需要自行创建samples;
2是通过【select an existing collection】,先创建集合和请求,在此基础上创建mock server,再给请求创建samples(可以将响应结果直接保存为sample)
下面通过2个案例分别描述下2种方式,首先是方式一,直接创建mock server
step1:打开postman,进入【mock server】模块,点【+】出来【Create a mock server】,然后填写请求方式、url、code及body,点下一步;
step2:自定义一个mock server name,勾选上save the mock server URL as an environment variable,这样在环境变量中会自动生成以mock server name命名的环境变量,创建成功后会自动生成一个collection集合 和 环境变量mock25,接下来就是调用啦;
step3:调用。在集合中直接刚才创建的mock25,环境变量也选择mock25,点击send,查看相应结果即可;
以上是方式一,接下来我们看下方法二,通过已有的集合 【select an existing collection】 来做模拟。
step1:发送需要模拟的请求,然后将请求保存到一个已有的collection(或者新建一个collection保存),这里以新建为例,点击【save】边上按钮点【Save As...】在弹窗中输入 Request name 和 +Create Collection然后save;
step2:把这个请求 save as example,需要注意保存时把url改成{{url}}/XXX,这样是为了方便mock server访问(注意和step5中的拼接url,实际后面创建新请求返回的响应体就是这步里example的返回内容);
step3:在collection下创建mock server,选中对应的【Collections】右侧“。。。”下拉中【Mock collection】,然后填写mock server name,勾选选项“Save the mock server URL as an environment variable”
step4:创建好mock server复制 请求路径
step5:新建一个请求,调用mock server,这里需要拼接访问地址,格式:“copy mock url/带上实际需要访问的路径”(与step2相当于前面的{{url}}+原先请求的路径),如下图:
以上是2种创建mock server的方式啦。
日常总结:mock单测+mapStruct+批量插入
一、单测
test采用juint5
pom如下:
常见使用
1、mock mapper文件
2、公共返回值定义
3、异常断言
4、不同情况
二、mapStruct
1、DTO中返回枚举类型
问题:直接将枚举类反馈给前端,具体取对应数值还是文字上一层在做处理(这里do到dto的转换用的是mapStruct)
返回的数据类型如下:
解决:枚举类中添加自定义方法,mapStruct中通过映射做转换
mapStruct依赖
2、返回的两个实体类中参数名不一致
三、批量插入
mybatis批量插入(传入数据不能有空值)
四、hutool工具
参考: 常见方法
参考链接:
1、 事务
2、 mapStruct其他转换
接口自动化测试之Mock
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
最后:【可能给你带来帮助的教程】软件测试最新自学教程
关于用什么工具进行mock测试和mock测试的使用场景的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
用什么工具进行mock测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mock测试的使用场景、用什么工具进行mock测试的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~