「原创声明:保留所有权利,禁止转载」
相信一万行代码的理论!
今天开始分享如何写一个自动化测试项目。对于一个长期的自动化测试项目,我的思路如下:现有一个项目的基类,实现对获取请求对象和发送解析请求对象的封装,自定义用户信息(例如 id,uid,password)以及验证信息,自定义header
和cookie
处理方法,自定义通用验证方法和获取业务响应状态码方法,以及包括一些其他需要自定义的功能。然后每个业务的模块类继承于这个基类,就只专注于接口的参数和响应信息即可。
首先先分享基类需要实现的一个接口(IBase
),接口里面包含了上诉所有的功能,以及使用场景和注意事项,项目的基类通过实现这些方法可以非常好地将通用的部分全部放在这个基类里面,使其他模块类专注自己的模块功能接口。
视频专题:
- FunTester 测试框架视频讲解(序)
- 获取 HTTP 请求对象 -- 测试框架视频讲解
- 发送请求和解析响应—测试框架视频解读
- json 对象基本操作 -- 视频讲解
- GET 请求实践 -- 测试框架视频讲解
- POST 请求实践 -- 视频演示
- 如何处理 header 和 cookie--视频演示
- FunRequest 类功能 -- 视频演示
- 接口测试业务验证 -- 视频演示
接口测试中业务验证
gitee 地址:https://gitee.com/fanapi/tester
代码
package com.fun.base.interfaces;
import com.alibaba.fastjson.JSONObject;
import com.fun.base.bean.RequestInfo;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import java.io.File;
/**
* 每个项目需要重写的方法
*/
public interface IBase {
/**
* 获取get请求对象
*
* @param url
* @return
*/
HttpGet getGet(String url);
/**
* 获取get请求对象
*
* @param url
* @param arg
* @return
*/
HttpGet getGet(String url, JSONObject arg);
/**
* 获取post请求对象
*
* @param url
* @return
*/
HttpPost getPost(String url);
/**
* 获取post请求对象
*
* @param url
* @param params
* @return
*/
HttpPost getPost(String url, JSONObject params);
/**
* 获取post请求对象
*
* @param url
* @param params
* @param file
* @return
*/
HttpPost getPost(String url, JSONObject params, File file);
/**
* 获取响应
*
* @param request
* @return
*/
JSONObject getResponse(HttpRequestBase request);
/**
* 获取响应
*
* @param url
* @return
*/
JSONObject getGetResponse(String url);
/**
* 获取响应
*
* @param url
* @param args
* @return
*/
JSONObject getGetResponse(String url, JSONObject args);
/**
* 获取响应
*
* @param url
* @return
*/
JSONObject getPostResponse(String url);
/**
* 获取响应
*
* @param url
* @param params
* @return
*/
JSONObject getPostResponse(String url, JSONObject params);
/**
* 获取响应
*
* @param url
* @param params
* @param file
* @return
*/
JSONObject getPostResponse(String url, JSONObject params, File file);
/**
* 校验响应正确性
* <p>
* 用于处理响应结果,一般校验json的必要层级和响应码
* </p>
*
* @param response
* @return
*/
boolean isRight(JSONObject response);
/**
* 检查响应是否符合标准
* <p>
* 会在fanlibrary类使用,如果没有ibase对象,会默认返回test_error_code
* requestinfo主要用于校验该请求是否需要校验,黑名单有配置black_host提供
* </p>
*
* @param response 响应json
* @param requestInfo 请求info
* @return
*/
int checkCode(JSONObject response, RequestInfo requestInfo);
/**
* 登录
*/
void login();
/**
* 设置header
*/
void setHeaders(HttpRequestBase request);
/**
* 处理响应结果
*
* @param response
*/
void handleResponseHeader(JSONObject response);
/**
* 获取公共的登录参数
*
* @return
*/
JSONObject getParams();
/**
* 初始化对象,从json数据中,一般指cookie
* <p>
* 主要用于new了新的对象之后,然后赋值的操作,场景是从另外一个服务的对象拷贝到现在的对象,区别于clone,因为可能还会涉及其他的验证,所以单独写出一个方法,极少用到
* </p>
*/
void init(JSONObject info);
/**
* 记录请求
*/
void recordRequest();
/**
* 获取请求,用于并发
*
* @return
*/
HttpRequestBase getRequest();
}
- 郑重声明:文章首发于公众号 “FunTester”,欢迎关注交流,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
- Linux 性能监控软件 netdata 中文汉化版
- 性能测试框架第三版
- 图解 HTTP 脑图
- 性能测试中图形化输出测试数据
- 压测中测量异步写入接口的延迟
- 多种登录方式定量性能测试方案
- JMeter 吞吐量误差分析
- 多项目登录互踢测试用例
无代码文章精选
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。