AFramework- 自动化测试框架

网友投稿 698 2022-10-18

AFramework- 自动化测试框架

AFramework- 自动化测试框架

AFramework - An automated testing framework for API test.

About

AFramework是一套通用的功能自动化测试框架,可以很方便的用于验收测试和验收测试驱动开发(ATTD)。

AFramework使用易于使用、理解的YAML语法,易于上手。AFramework提供plugin扩展方式,可以快速创建更高级的Action。编写YAML = 设计代码,很优雅

Requirements

Java (本人仅在java 1.7版本下开发完成,发布的release版本也都是在1.7版本下打包完成)

Usage

java -jar AFramework.jar [--testcase-file=testcase.yml]

使用–help查看更多使用帮助。

Testcase

关于YAML语法可参见YAML Syntax),这里有一个示例testcase.yml。每一个YAML文件中包含了一个task列表(任务列表),一个task执行完毕之后,下一个task才会执行,每一个task必须有且仅有一个Action动作,每个task也需要指定一个名称name,这样在运行的过程中,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的,如果没有定义name,action的值将会用作输出信息标记特定的task。如果你的task列表很多的时候,在一个YAML文件里面会使得这个文件特别大,可能你会希望这些文件是可以方便去重用的,此时使用include语句引用task文件的方法,可允许你将其分解到更小的文件中。- name: new task测试用例集  include:    name: new_task.yml定义变量,在task列表运行过程中的任意地方你都可以使用defaults或者vars定义一个新的变量,那么后续的task运行时即可引用。- vars:    username: haha    password: baba注册变量,变量的另一个用途是在运行命令时,把命令结果存储到一个变量中,此时使用register关键字即可达到注册变量的目的。- name: 登陆系统获取session  requests:    method: POST    url: http://server/login    basic_auth:      - ”{{ username }}”      - ”{{ password }}”  register: session条件选择when语句,有时候可能需要某一个task只在特定的条件下执行,如上例中想要在登陆成功后再执行某个task- name: 登陆成功后获取用户信息  requests:    method: POST    url: http://server/info  when: session.result.Code == “Success”标准循环,为了保持简洁,重复的任务可以这么写:- name: 获取多个信息  requests:    method: POST    url: ”http://server/info/{{ item }}”  with_items:    - Bob    - Wheel

如果你在前面定义了变量是一个可循环的值,那么你也可以这样做:

with_items: "{{ somelist }}"

Do-Util循环,有时你想重试一个任务直到达到某个条件:- name: 异步请求直至结束  requests:    method: POST    url: ”http://server/async_task"  retries: 20  delay: 3  util: result.Code == “Finished”assert断言语句,判断一个task最终执行的结果pass还是fail,在最终的结果统计中也会以此来统计。- requests:    method: POST    url: http://server/info  assert: result.Code == “Success”Action列表: debug(debug用,用于打印一个变量的值或者一个msg)defaults (定义变量值,若已存在则不改变)requests (HTTP request调用)shell (shell调用)vars (定义变量,若已存在则会覆盖)

Plugins

开发一个插件需要指定包名为com.github.meanstrong.aframework.plugins.action,类必须继承自ActionBase,复写其中的run方法,如下所示:

package com.github.meanstrong.aframework.plugins.action;public class NewAction extends ActionBase {    public NewAction(Task task) { super(task); }    @Override public Map run(Map task_vars) {        Object args = this.task.args; //args是task中Action对应的参数,可以以map形式取出各值。        // to do something    }}

将写好的插件生成jar后放置于requires目录下,运行AFramework时将自动加载。

Release

AFramework-0.0.1.jar

Author

Rocky Peng

AFramework Python版本正在开发中,预计近期也会发布出来。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot SPI 机制和实现自定义 starter
下一篇:爬虫代理迷你框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~