acetal材料(AceTest HTTP请求处理工具)
AceTest HTTP请求处理工具
关于 安装运行 缘起 新建/编辑实例 验证 运行实例 其它工具栏 参数池 导出接口描述文档1 关于
AceTest 是我近期做的小工具 ,其实比较早之前就做好了一版 ,自己用了一段时间 。然后 ,根据自己的使用感觉 ,好好重构了一番 ,现在把它放到 Github 上了:
https://github.com/AceFantasy/AceTest
如果要一句话来说明 AceTest 是做什么的 ,那么就是“模拟 HTTP 请求 ”——好吧 ,虽然我自己也不喜欢这种叫法 ,但是 ,它做的事也确实是这个 。
AceTest 是一个 Web 应用工具 ,你可以在页面上方便地定义一个 HTTP 请求(地址 ,参数 ,头什么的),然后将这个请求发出 ,当然 ,这个请求不是直接发到你指定的地址,而是发到服务器端 ,服务器端通过一个 HTTPClient 再把请求发到指定的地址 ,获取响应后 ,把响应返回给你 。之后 ,你可以定义一些函数对响应的结果进行检查 ,以此 ,可以达到测试的目的 。
同时 ,因为你已经定义好了 HTTP 请求 ,所以 , AceTest 可以依此 ,来自动生成描述 HTTP 接口的文档 。
2 安装运行
AceTest 的后端使用的是 Tornado ,前端的 js 部分使用的是 Dojo 。同时 ,使用了 Django 的 ORM 部分来进行对数据库的访问(不好意思,我懒:) ) 。
所以 ,此项目要跑起来 ,需要:
安装 Tornado ,版本是 2.0 ,或者直接把 Tornado 文件夹放到 AceTest 目录下 。 安装 Django ,版本是 1.2 。然后就可以像普通的 Tornado 项目一样启动了:
$ python server.py启动时现在支持了两个可选的参数:
port 指定端口 db 指定数据库文件所以 ,可以这样:
$ python server.py --port=80--db=/home/zys/acetest.sqlite33 缘起
想到做 AceTest ,和平时的工作有关 。因为维护着 Web 项目 ,而常常项目需要和外部服务交互 ,时不时出现问题需要快速确认外部服务的响应内容 。很显然 ,要看到响应内容 ,不是把一个 URL 复制到浏览器就可以解决问题了的 ,方法啊 ,参数啊之类的东西都要正确才行 ,而有时 ,它们还很复杂 。
之前我一直是自己会写一个 Python 文件放在那里,有什么问题直接修改 Python 文件然后跑一下。当然 ,这本来没有什么大问题 ,只是每次新写的时候会觉得好折腾,我并不是把 httplib 这个模块的用法记得很熟 。
另外就是 ,自己写东西时 ,喜欢一种前后端完全分割的方式 ,先专注写后端逻辑 ,直接返回 json 格式的数据 ,然后已经完成的功能 ,希望可以使用规范的文档来描述 HTTP 接口 ,倒不是说需要给别人看 ,以后自己维护时也方便 。不过每次写这些文档 ,都觉得是很费劲的事。
我的第一份是工作是做桌面软件的自动化测试相关的内容 ,那时做了一个类似的东西 。现在回想起来 ,形式是可以参照的 ,但是 HTTP 请求处理起来就简单很多了 。使用 Tornado 自己的 HTTPClient 配合异步回调机制,很容易实现一个代理访问的模型 。
于是就这样开始了 。定义一个 HTTP 请求 ,然后让后端的 Tornado 执行它 ,把结果返回给我 。最初的构想就是这样 。
对于响应,直接使用 js 进行简单的判断 ,来提示是不是我期望的结果 ,这样 ,就达到的测试的目的 。
再后来 ,对于已经定义好的 HTTP 请求 ,格式化一下 ,就是一份清晰描述的接口文档 。
其实整个项目要做的事实现起来很简单 ,至少后端是这样的 。很大部分的精力都是花在前端写 js 交互部分了 。
最初的想法是这样的 。
第一版时的样子 ,比现在要简陋多了 。不过 ,基本的功能算是都实现了的。
4 新建/编辑实例
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!