matmanjs / matman Goto Github PK
View Code? Open in Web Editor NEWWeb 端对端测试(E2E,End-to-End Testing)解决方案
Home Page: https://matmanjs.github.io/matman
License: MIT License
Web 端对端测试(E2E,End-to-End Testing)解决方案
Home Page: https://matmanjs.github.io/matman
License: MIT License
希望 readme.md 中可以支持引入图片等,这样就不必特意找图床了
handler 和 handle_module 的 name 限定为文件夹名字,不再支持自定义。主要是为了简化,避免文件夹名字和 name 不一致带来的困扰
文档内容包括原理、如何接入等
我们构造mock数据的目的是为了测试验证某个特定的场景,有时候需要额外的文档来说明这种场景是什么,表现是什么,需要依赖什么等。否则第二个人来运行用例时,即使拿到了数据,也不知道正确的表现是什么。
package.json中却少 morgan 的引用,会导致安装是提示缺少文件
目前 matman.run
方法只支持传递配置文件,需要扩展直接支持传递配置
从使用者的角度来说,目前只支持单个目录结构,且使用方式也不太好理解,需要重新优化一下
在 mock module 中,有时候需要请求一下现网数据,并将现网数据进行加工,因此需要有一个 方法能够比较方便请求cgi数据
不同的 cgi 返回的数据不一定相同,但是都可能会有一个共同的返回规则。
举一个通用的 cgi 返回格式的例子。
一般在返回数据中,会有一个字段(错误码)标志 cgi 返回是否是成功标记,例如 retcode
字段,如果该字段值为 0
,则表示数据请求返回结果是成功的,但如果值不为 0
,则说明获取结果失败;而失败的原因,可能是鉴权失败,或者某些服务异常等。
如果 cgi 返回了失败的错误码 ,一般还有个字段来进一步解释错误的原因,例如
errmsg
等。
{
"retcode": 100000,
"errmsg": "no login"
}
而如果是成功的结果,则实际的数据可能置于 result
中,前端程序处理的数据也来自于此:
{
"retcode": 0,
"result": {
"name": "hello",
"age": 18
}
}
那么我们在写 mock module 的时候,这些公共的部分其实都是可以复用的,我们写 mock module 只需要专心写实际的数据即可(例如上面的 result
字段的值),然后再通过某种处理方式,返回最终的数据。
如果一个项目中 Mocker 比较多,希望支持 mocker 的标签的功能,过滤之后,只显示同一个标签的 mocker
有些 CGI 是被多种场景复用的,往往通过某些指定参数来区分,例如 /cgi-bin/user/list?type=new
代表的是新用户列表,而 /cgi-bin/user/list?type=vip
代表的是VIP用户列表。
已经将一些常用的文件操作函数封装成了 fs-handler,需要引用之
rewrite promise, bluebird is more faster
hybrid 应用很多接口依赖客户端的能力,若PC端调试则有众多不便之处,希望能够支持一下
如果匹配未命中,则透传结果给页面即可。
目前一旦配置了mock模式,则没有选项关闭它,需要支持
目前是直接引用cdn地址,这样并不是特别合适,如果在公司内网有限制的情况下,则会引用不到。直接使用 socket.io-client 来代替
有一个 POST 请求,自己直接复制请求到浏览器中,发现始终代理不上,折腾了老久才发现它是 post 请求,用get的方式肯定代理不上。这个标记太不明显了,需要增加明显标记!
在之前的设计中,一个 handler 必须包含 handle_modules,即使只有一个 module,也需要放进去。但实际上, handle_modules 不应该是必须的。
如果没有 handle_modules
, 就必须有一个 index.js
需要删除没用到的库,避免安装时耗时太长的问题
只能部分打印出来,需要修改一下
有时候需要对这个CGI做一些详细的描述,则可以增加一个 readme.MD
文件。
之前为了实现功能,缺少一些必要的测试用例,需要补齐
handle_module 应该不能够只限制文件夹形式,可以更多类型,比如直接的js、json等
目前的日志都是打印到终端的,如果能够在console平台中也能够看到的话,会更加符合前端人员的习惯。尤其是一些错误信息。
目前项目中如果使用了 es6 的一些语法,需要依赖 babel-cli
工具来运行,但这也许不是最佳方案。
默认情况下readme渲染出来的效果太丑了
目前服务启动之后的默认端口号为 3000
,需要支持自定义端口号
禁用mock服务之后,虽然按钮已经未高亮,但是还是可以点击的
默认情况下 db.json 中的数据拥有高优先级,但是如果其中的数据有问题的话,会让程序的结果出乎意料。
比如之前的activeModule 为 a,但是a模块被删除或者重命名之后,此时启动 matman 会导致程序报错。因此,需要有适当的机制清理错误数据,或者忽略缓存数据。
目前只支持 get 类型的请求代理,需要扩展支持 post 请求
需要进行兼容, 如果不以‘/’开头,则人工增加
系统提供的cgi目前还没有测试用例,对于插件而言,需要测试用例来保证这个插件的可用。
需要增加一种机制,使用者可以自定义输出某些信息到指定的日志文件中。比如在做上报测试时,出错的信息都应该在其中呈现,这样容易看出问题
常规的 mock module 是构造模拟数据值,但是有些场景下,只需要去请求指定 IP 服务器的CGI即可,比如请求测试服务器上的 CGI
启动了mock服务之后,有时候需要针对特定的一次请求不要走mock服务,则需要某种机制,例如在url参数中增加某个标识,以便过忽略掉这个CGI请求。
例如,/cgi-bin/a/b/c
这个 CGI 都走mock服务,但唯独 /cgi-bin/a/b/c?type=2
不需要走mock
webpack构建的是开发模式,需要编译一份正式的打包js资源文件
mocker 和 mock modules 的排序是按照字母顺序来的,但有些重要的可能需要自定义下排序,以便在前面展示
目前官方默认了两个插件 mocker
和 reporter
。但插件机制并不完善。一个理想中的插件机制,应该包含路由配置、前端页面的展示等。
支持用户自定义路由,这样更灵活。目前是采用如下的方法:
router.get('/*', function (req, res) {
// 如果匹配到cgi,则取mock值,否则取现网值
})
但此类做法将路由的功能变为自己处理了,会比较麻烦。另外,该方式还不支持类似 /id/:id
的形式,因此,将路由匹配交由用户自行处理。
如果是mocker数据,需要在 response 中增加标记来识别,以便区分mocker数据和实际数据
比如 mock 服务的场景,比如 report 上报校验的场景。可以在 config.json 中定义,并且前端页面要分类进行展示。
请求参数等信息,必须要传递到 mock module 中,以便使用者可以更加灵活的处理请求
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.