自动化工具 分享一个小红书的开源测试框架 Hydra

Arthur.Ren · 2017年04月18日 · 最后由 ruanjiancaipu 回复于 2018年09月12日 · 3066 次阅读

先直接放出 github 地址

Hydra

代号九头蛇,致力于打造全平台通用的自动化测试框架

Pre-Conditions:

  1. JDK8 installed (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
  2. Maven installed (http://maven.apache.org/download.cgi)

Quick Start:

  1. clone 工程到本地目录
  2. try runTest.sh feature/test.control
  3. wait & see ...

框架基本思路

  1. BDD ,测试同学专注测试逻辑。
  2. 尽量 Download & Play 。
  3. 基于 JVM 和 Maven ,能复用大部分互联网公司的轮子(UI 的 WebDriver、Appium、Restful、BDD 的 Cucumber-jvm、Jasmine、Pytest ( 需要 jython 支持 )
  4. 起于 JVM + Jasmine , 即通过 JVM 上的动态脚本语言能力,Inject Jasmine 的 BDD 框架,同时能无缝访问 java 世界中的无数的成熟工具。
  5. 对于测试用例开发者来说,一个简单的文本编辑器即可。
  6. 同时也可以通过 maven 直接打出 all-in-one 的可执行 jar 包。方便接入 C.I
  7. 提供统一的 Report 和 Verdict。 设定了统一的 CaseResult 和 SuiteResult ,对于不同的 Runner( Jasmine,TestNG,PyTest 或者 Cucumber-jvm)来说能获得统一的 case 和 suite 粒度的报告。

工程配置方法

1、用 idea 打开,选择 pom.xml,工程的入口为 com.xiaohongshu.automation.Application.java

2、将 conf 路径加入到 classpath 中,方式如下:

IntelliJ 中右键点击 conf 目录选择 Mark folder as “Resource Root”。

工程规范

  1. 所有的包请都放在 com.xiaohongshu.automation 下
  2. 包/类/方法等命名需要有明确的含义,且符合命名规则
  3. 必须写 unittest,对应 class 的 unittest class,命名为 Test_**,且放在相同包路径下
  4. unittest 的行覆盖率要求在 75% 以上,且全部运行通过,才能 push

目录说明

  1. conf: 配置文件路径
  2. src.main.java: 源代码
  3. src.main.resources: 资源路径
  4. src.test.java: 测试代码

JAVA 源代码包说明

java 包路径为:com.xiaohongshu.automation,其下:

  1. config: 配置解析相关功能
  2. runner:执行器
  3. service:支持的各种测试服务包
  4. result: 测试结果包
  5. report:报告生成包
  6. utils: 工具包
共收到 9 条回复 时间 点赞

通篇没有测试用例实例。。。

hydra Jasmine testcase 例子 (参见https://github.com/RedQA/hydra/blob/master/js/test.js):
=== 代码例子如下:

//describe refer to a testsuite... 
describe("This is the suite: Just test a simple API with get method and expect return status= 0 ", function() {
  var appKey = "fc8d52972b64e3bb" ;
  // it refer to a testcase... 
  it("This is another case: test simple rest api", function(){
    var restfulUtils = new RestfulUtils();
    var url = "http://api.jisuapi.com/iqa/query?appkey=" + appKey + "&question=上海人口" ;
    restfulUtils.setServerURL(url);
    restfulUtils.setHttpMethod("get");
    restfulUtils.execute();
    var jsonObj = JSON.parse(restfulUtils.getResponseBody());
    expect(jsonObj.status).toBe('0');
    caseResult.setResultMsg(jsonObj.result.content);
  });
});

=== 测试执行

hydra 是通过 control 文件来配置 testsuite。 control 的示例在 js/feature 目录下。 在 hydra 目录下可直接运行./runTest.sh feature/test.control 来启动。 对应的结果展现为统一的报告。

试了一下,确实很方便。大赞

—— 来自 TesterHome 官方 安卓客户端

谢谢@cpfordream,后续我们会逐步把文档和教程补上来!

已安装成功,框架很大,值得深入研究,期待交流!

好东西,准备 clone 下来研究研究

谢谢支持!下来我们会把 docker image 发布出来,方便大家部署和分享!

Github 找不到了。。。

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册