java 接口测试
学习java 时间也不算太长,大学有点基础,学起来也顺手多了,其实我感觉更是因为学习完python之后,在学习别的语言的时候就简单多了,几乎所有的语言学起来都差不多。前几篇写过的都是python接口测试,开源的接口测试代码,https://github.com/liwanlei/jiekou-python3 ,好评如潮。
啥都不说,学会点java我就想实践,毕竟是实践出真知。
其实这个目录结构也是很简单的,根据文件的名字就能猜测到这里是干什么呢,那么接下来,我们来看看这里的庐山真面目。本次才用了是testng测试框架,利用ztest做测试报告,才用测试数据驱动的方式来编写测试用例,
Urlconnetc.java
/**
*
*/
package com.testapi.until;
import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author lileilei
*Urlconnetc.java
*/
public class Urlconnetc {
/*
* 对http请求的简单的封装
*/
public static HttpURLConnection getConnection(String url,String meth,String param){
HttpURLConnection connection = null;
try {
URL postUrl = new URL(url);
DataOutputStream out=null;
connection = (HttpURLConnection) postUrl.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestMethod(meth);
connection.setInstanceFollowRedirects(true);
connection.setRequestProperty("Content-Type","application/json");
connection.setRequestProperty("Accept","application/json");
connection.setInstanceFollowRedirects(true);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
ParseJson,java
/**
*
*/
package com.testapi.until;
import com.google.gson.Gson;
/**
* @author lileilei
*
*/
public class ParseJson {
/*
*解析返回的json ֵ
*/
public static String Json(String jsStrings) {
String result;
if(jsStrings==null) {
result=null;
return result ;
}try {
Gson gson=new Gson();
Json json=gson.fromJson(jsStrings, Json.class);
result=json.code;
return result ;
} catch (Exception e) {
// TODO: handle exception
result=null;
return result ;
}
}
}
Makejson.java package com.testapi.until;
import java.util.HashMap;
import com.google.gson.Gson;
public class Makejson {
/*
* 传入字符串,转成json格式
*/
public static String makejson(String map) {
Gson gson=new Gson();
String param1=gson.toJson(map);
return param1;
}
}
Json.java package com.testapi.until; public class Json {
public String code;
public String text; }
getcode.java /**
*
*/
package com.testapi.until; import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.HashMap; import javax.swing.SortingFocusTraversalPolicy; import com.google.gson.Gson;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; /**
* @author lileilei
*
*Getcode.java
*/
public class Getcode {
private String url="";
public String geturl() {
return url;
}
public String getHttpResponse(String parm,String baseurl,String path,String meth) {
String line="";
String resulst="";
url=baseurl+path;
try {
HttpURLConnection connection=Urlconnetc.getConnection(url, meth,parm);
DataOutputStream out=null;
connection.connect();
out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(parm.toString());
out.flush();
out.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
resulst = resulst + line.toString();
}
reader.close();
connection.disconnect();
} catch (Exception e) {
// TODO: handle exception
}
return resulst;
}
}
测试用例文件
package com.testapi.cas;
import static org.testng.Assert.assertEquals; import java.util.HashMap;
import org.testng.annotations.*;
import com.google.gson.Gson;
import com.testapi.until.Getcode;
import com.testapi.until.Makejson;
import com.testapi.until.ParseJson;
import com.testapi.until.ZTestReport;
@Listeners({ZTestReport.class})
public class NewTest {
@DataProvider(name="DP1")
public Object[][] createData(){
return new Object[][] {
{ "{'key':'你好!'}","http://www.tuling123.com", "/openapi/api", "POST","text" ,"40007"}, { "{'key':'你好!'}","http://www.tuling123.com", "/openapi/api", "POST" ,"text","40007"},
{ "{'key':'你好!'}","http://www.tuling123.com", "/openapi/api", "POST" ,"text","40007"}, { "{'key':'你好!'}","http://www.tuling123.com", "/openapi/api", "POST","text","40007"}
};
}
@Test(dataProvider="DP1")
public void f(String map,String url,String path,String meth,String jsonid,String qiwang) {
String param1 = Makejson.makejson(map);
Getcode getcode=new Getcode();
String resulst=getcode.getHttpResponse(param1, url, path,meth.toUpperCase());
String bnei=ParseJson.Json(resulst);
assertEquals(bnei,qiwang);
}
@BeforeTest
public void beforeTest() {
}
@AfterTest
public void afterTest() {
} }
然后利用testng run来测试
最后的测试报告的html
测试报告来源于飞总的开源的测试报告: https://github.com/zhangfei19841004/ztest
感谢大神开源这么牛逼的测试报告,python版本的测试报告:来源于mock哥https://github.com/TesterlifeRaymond/BeautifulReport
感谢大神的开源,
开源代码地址:https://github.com/liwanlei/java_jiekou
作者寄语:
前进的道路我们充满着迷茫,
前进的每一步我们都会有收获。
路在脚下,我们决定不了我们的出身,但是我们可以努力改变我们未来。
告别昨天失败的自己,努力拼搏今天,成就美好明天
java 接口测试的更多相关文章
- 0312 java接口测试三棱军刺rest-assured
背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? ...
- java 接口测试,使用excel做数据驱动(二)
承接上篇. 改变我们的测试驱动方式,灵活设置测试用例. 数据驱动测试 数据驱动测试的核心是: 测试数据与测试脚本分离,实现测试脚本参数化, 提高测试脚本的可重用性.在自动化功能测试中如果灵活使用数据源 ...
- java接口测试入门
一.什么是接口 接口是前端和后端的数据通道 二.如何获取接口 1.开发不提供接口文档,通过抓包工具比如fiddler进行抓取,如下: 步骤一:设置浏览器(比如火狐)代理 步骤二:设置url过滤器,进入 ...
- JAVA接口测试类
package etcom.servlet; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...
- 接口测试专题(Java & jmeter & Linux基础)
以下是我和两个朋友原创文章合集,主题是接口测试,有Java接口测试案例和jmeter的案例,还有接口测试相关服务器操作基础.欢迎点赞.关注和转发. 接口测试 httpclient处理多用户同时在线 h ...
- Redis入门——Java接口
1. maven配置 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...
- LoadRunner+Java接口性能测试
想必各位小伙伴们会对LR还可以调用java感到好奇,之前我也这么一直认为LR只支持C语言.其实LR脚本支持的语言有:C.Java.Visual Basic.VbScript.JavaScript,只不 ...
- Java自动化环境搭建笔记(1)
Java自动化环境搭建笔记(1) 自动化测试 先搭建java接口测试的环境: 使用mvn命令构建项目 测试集通过testNG.xml组织并运行 测试数据解耦,通过Excel等文件提供 基础依赖 创建m ...
- 28.zookeeper单机(Standalones模式)和集群搭建笔记
zookeeper单机(Standalones模式)和集群搭建: 前奏: (1).zookeeper也可以在windows下使用,和linux一样可以单机也可以集群,具体就是解压zookeeper-3 ...
随机推荐
- YYHS-分数(二分+容斥)
题目描述 KJDH是个十分善于探索的孩子,有一天他把分子分母小于等于n的最简分数列在了纸上,他想找到这些分数里第k小的数,这对于KJDH来说当然是非常轻易,但是KJDH最近多了很多妹子,他还要去找妹子 ...
- AJAX,PHP,前端简单交互制作输入框效果
PHP数据 <?php // 数据 $arr = array( array("百度", "http://www.baidu.com/"), array(& ...
- VS2008 生成静态链接库并使用
1.启动VS2008创建一个Win32控制台程序 2.选择静态库 3.创建两个文件lib.h和lib.cpp //lib.h #ifndef LIB_H #define LIB_H int add(i ...
- poj 3662 Telephone Lines
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7115 Accepted: 2603 D ...
- LCIS(区间合并)
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
- 【JDK1.8】JDK1.8集合源码阅读——LinkedHashMap
一.前言 在上一篇随笔中,我们分析了HashMap的源码,里面涉及到了3个钩子函数,用来预设给子类--LinkedHashMap的调用,所以趁热打铁,今天我们来一起看一下它的源码吧. 二.Linked ...
- 深入理解JavaScript中的继承:原型链篇
一.何为原型链 原型是一个对象,当我调用一个对象的方法时,如果该方法没有在对象里面,就会从对象的原型去寻找.JavaScript就是通过层层的原型,形成原型链. 二.谁拥有原型 任何对象都可以有原型, ...
- Grunt参考
Grunt参考: http://www.cnblogs.com/yexiaochai/p/3603389.html http://blog.csdn.net/wangfupeng1988/articl ...
- 定制滚动条样式 webkit
::-webkit-scrollbar { /* 1 */ } ::-webkit-scrollbar-button { /* 2 */ } ::-webkit- ...
- jQuery选择器(添加节点及删除节点及克隆及替换及包装)第九节
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...