mock测试

行为驱动设计(rspec)

强颜欢笑 提交于 2019-12-04 15:51:35
行为驱动设计(rspec) 原文:Behavior Driven Design (并非公开版权文档) 你可能已经注意到,验证模对象改变了你在单元测试中执行的那类测试的本质。传统的单元测试中,通过断言(Assertion)来进行大多数的验证。这是一种对应用程序状态的测试。模对象的测试,是测试测试中调用过程十分符合预期。它测试的是应用程序的行为。至少潜在能力上,行为测试更容易将期望行为与实际的实现方法分开。 行为驱动设计(BDD)的口号是试图将测试设计从实现空间移到问题空间。部分地使用设计BDD工具集,测试可以通过指定更接近自然语言的关键词来进行。BDD工具充分利用模对象,既作为说明问题的方法,也作为区分单独的个别单元测试的方法。使用传统的TDD测试,低层方法的修改会导致很多测试失败。BDD认为一个代码的改变能产生许多测试失败表明这个测试不是真正意义上的单元测试,而是集成测试,尽管是非常小的范围内。TDD方式的测试只有在实际对象不能得到或者不好用的情况下才会使用模对象,BDD方式则更加积极地使用模对象来将测试中的函数与系统的其它部分分离。 这个章节将概要地介绍一下RSpec(Ruby中最流行的BDD测试包)。RSpec与Rails集成得非常好,包括单独地测试Controller, View和Helper函数的能力。 安装RSpec RSpec即可以作为Ruby

SpringBootTest使用Mock测试文件上传

匿名 (未验证) 提交于 2019-12-03 00:18:01
@SpringBootTest @RunWith ( SpringJUnit4ClassRunner . class ) public class OssControllerTest { @Autowired private WebApplicationContext wac ; private MockMvc mvc ; @Before public void setupMockMvc (){ mvc = MockMvcBuilders . webAppContextSetup ( wac ). build (); //初始化MockMvc对象 } @Test public void uploadFilePublic () throws Exception { File file = new File ( "C: \\ Users \\ Administrator \\ Desktop \\xx xx.jpg" ); //文件之外的参数 String key = OssUtils . createFileKey ( file . getName (), null ); MockMultipartFile firstFile = new MockMultipartFile ( "file" , "xxxx.jpg" , MediaType . TEXT_PLAIN_VALUE ,

Moq框架简单使用

孤者浪人 提交于 2019-12-02 14:39:16
Moq框架简单使用 系列目录 Moq库简介及安装 Moq简介 Moq是.net平台下的一个非常流行的模拟库,只要有一个接口它就可以动态生成一个对象,底层使用的是Castle的动态代理功能. 它的流行赖于依赖注入模式的兴起,现在越来越多的分层架构使用依赖注入的方式来解耦层与层之间的关系.最为常见的是数据层和业务逻辑层之间的依赖注入,业务逻辑层不再强依赖数据层对象,而是依赖数据层对象的接口,在IOC容器里完成依赖的配置. 这种解耦给单元测试带来了巨大的便利,使得对业务逻辑的测试可以脱离对数据层的依赖,单元测试的粒度更小,更容易排查出问题所在. 大家可能都知道,数据层的接口往往有很多方法,少则十几个,多则几十个.我们如果在单元测试的时候把接口切换为假实现,即使实现类全是空也需要大量代码,并且这些代码不可重用,一旦接口层改变不但要更改真实数据层实现还要修改这些专为测试做的假实现.这显然是不小的工作量. 幸好有Moq,它可以在编译时动态生成接口的代理对象.大大提高了代码的可维护性,同时也极大减少工作量. 除了动态创建代理外,Moq还可以进行行为测试,触发事件等. Moq安装 Moq安装非常简单,在Nuget里面搜索moq,第一个结果便是moq框架,点击安装即可. Moq简单使用 本示例中要使用到的代码如下 public class MyDto { public string Name {

Charles Mock测试

你说的曾经没有我的故事 提交于 2019-12-02 08:16:54
一、Charles是什么? Charles是一个HTTP 代理服务器 ,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。 二、Charles下载安装及使用 官网下载地址: https://www.charlesproxy.com/download/ 导入证书及使用方法: https://blog.csdn.net/weixin_42336579/article/details/80621410 打开Charles,选择Tools下的Map local setting。 勾选Enable Map Local,点击Add。 在电脑上新建一个测试文件todolist.json作为本地数据,设置请求接口为/api/todolist,Chosse选择todolist.json文件的本地地址,点击OK。 三、遇到的问题 1、charles抓不到localhost:3000发出的请求 按照上述步骤配置好后,F12打开浏览器的调试器,选择Network,出现下图情况: 修改React项目的默认域名,在package.json文件中,将''start'

Python接口测试框架实战与自动化进阶✍✍✍

帅比萌擦擦* 提交于 2019-12-02 05:50:36
Python接口测试框架实战与自动化进阶 一、fiddler在工作中的运用 1、如何抓接口  抓紧手机端接口    ①、在电脑终端输入:ipconfig ,找到电脑ip    ②、打开手机,连接WiFi,进入WiFi详情,改用手动代理,将ip设置为电脑端的ip,端口默认(8888)      ③、打开fiddler,找到并打开Fiddler Options ,选择Connections栏,做如下改动:    这样就可以尝试抓取接口了。 注: Python requests中文文档参考: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 二、unittest使用 python自带的包 1、unittest简单使用 使用 unittest的test类:TestCase ,重载相关方法: import unittest class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('重载setUpClass类方法,类实例化(初始化)时调用') @classmethod def tearDownClass(cls): print('重载tearDownClass方法,所有方法执行完后调用') def setUp

Python接口测试框架实战与自动化进阶 学习 教程

假如想象 提交于 2019-12-01 15:13:07
Python接口测试框架实战与自动化进阶 学习 教程 一、fiddler在工作中的运用 1、如何抓接口  抓紧手机端接口   ①、在电脑终端输入:ipconfig ,找到电脑ip   ②、打开手机,连接WiFi,进入WiFi详情,改用手动代理,将ip设置为电脑端的ip,端口默认(8888)     ③、打开fiddler,找到并打开Fiddler Options ,选择Connections栏,做如下改动:    这样就可以尝试抓取接口了。 注:Python requests中文文档参考: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 二、unittest使用 python自带的包 1、unittest简单使用 使用unittest的test类:TestCase ,重载相关方法: import unittest class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('重载setUpClass类方法,类实例化(初始化)时调用') @classmethod def tearDownClass(cls): print('重载tearDownClass方法,所有方法执行完后调用') def setUp

单元测试

淺唱寂寞╮ 提交于 2019-12-01 05:06:16
1. 为什么做单测 单测的好处 减少bug 快速定位bug 提高代码质量 减少调试时间 放心重构 不得不写单测的原因 在成为大牛的路上,单测是必备技能 单测可以给你信心 保住面子 难处 难于坚持,在快速迭代开发过程中,可供写单测的时间过少 扩展 TDD(Test Drive Develop):测试驱动开发,是一种非常高效的开发方式 2. 测试框架 2.1 概述 junit4.12 (单测框架) mockito1.9.5(mock工具) robolectric3.1.2 (模拟Android虚拟机) 2.2 junit4.12 Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 示例代码: @Before: 执行单测之前的初始化操作。 @After:单测完成后收尾工作。 @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } assume: 用于判断测试用例的入参是否有业务含义的工具,如果入参不符合预期时会抛出 assumptionViolatedException、assumeTrue

单元测试 -- mock模拟测试总结

强颜欢笑 提交于 2019-11-29 19:11:47
世面上测试的工具还是比较多的。本人用mock模拟测试用的比较多。所以一种用好了,其实都是大同小异。可以自测就可以了 单元测试的命名 测试类的命名规范:被测试类的类名+Test后缀 测试用例的命名:由于一个被测试单元可能对应着不同的场景,因此测试用例应根据场景命名。比如某测试用例的场景为“当参数不合法时抛出异常”,则可以命名为 “throwExceptionWhenParamsIsInvalid”. 变量命名:测试一个单元时,预期的结果命名expectedResult,实际结果命名为actualResult 所有预期的都以expected为前缀 来源: https://blog.csdn.net/weixin_44550490/article/details/100890502

通过mock-api模拟真实数据

三世轮回 提交于 2019-11-27 04:14:28
一、什么是 mock-api mock-api(模客)是一个便捷的 REST 接口数据模拟工具,用于前后端隔离测试,开发调试。 二、mock-api 的使用 1、注册登录 http://mock-api.com/ 2、建立模拟系统 可以是某个后端服务,也可以是一组相关的api集合 3、创建规则 规则由一组 http request(请求)和 http response(响应)组成 4、启动模拟 模拟系统启动之后,系统会给出改系统的一个 url 地址前缀,前端或真实系统可以通过这个虚拟的 url 地址加上后续的 api 地址来访问自定义的虚拟 api 来源: https://www.cnblogs.com/Leophen/p/11343539.html

使用Spock框架进行单元测试

佐手、 提交于 2019-11-26 16:34:11
1. 关于单元测试 很多人一谈到单元测试就会想到xUnit框架。对于一些java新人来说,会用jUnit就是会写单元测试,高级点的会捣鼓一下testng,然后就认为自己掌握了单元测试。 而实际上,很多人不怎么会写单元测试,甚至不知道单元测试究竟是干什么的。写单元测试要比写代码要难上许多,而这里说的难度跟框架没什么关系。 所以,在开始介绍spock之前,需要先抛开框架,谈谈单元测试本身的事情。在理解了单元测试之后才能更清楚spock框架是什么,以及它否能够更优雅的解决你的问题。 1.1.1. 单元测试是什么 写代码免不了要做测试,测试有很多种,对于java来说,最初级的就是写个main函数运行一下看看结果,高级的可以用各种高大上的复杂的测试系统。每种测试都有它的关注点,比如测试功能是不是正确,或者运行状态稳不稳定,或者能承受多少负载压力,等等。 那么所谓的单元测试是什么?这里直接引用维基百科上的词条说明: 单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 所以,我眼中的“合格的”单元测试需要满足几个条件: 测试的是一个代码单元内部的逻辑