学习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 接口测试的更多相关文章

  1. 0312 java接口测试三棱军刺rest-assured

    背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? ...

  2. java 接口测试,使用excel做数据驱动(二)

    承接上篇. 改变我们的测试驱动方式,灵活设置测试用例. 数据驱动测试 数据驱动测试的核心是: 测试数据与测试脚本分离,实现测试脚本参数化, 提高测试脚本的可重用性.在自动化功能测试中如果灵活使用数据源 ...

  3. java接口测试入门

    一.什么是接口 接口是前端和后端的数据通道 二.如何获取接口 1.开发不提供接口文档,通过抓包工具比如fiddler进行抓取,如下: 步骤一:设置浏览器(比如火狐)代理 步骤二:设置url过滤器,进入 ...

  4. JAVA接口测试类

    package etcom.servlet; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...

  5. 接口测试专题(Java & jmeter & Linux基础)

    以下是我和两个朋友原创文章合集,主题是接口测试,有Java接口测试案例和jmeter的案例,还有接口测试相关服务器操作基础.欢迎点赞.关注和转发. 接口测试 httpclient处理多用户同时在线 h ...

  6. Redis入门——Java接口

    1. maven配置 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...

  7. LoadRunner+Java接口性能测试

    想必各位小伙伴们会对LR还可以调用java感到好奇,之前我也这么一直认为LR只支持C语言.其实LR脚本支持的语言有:C.Java.Visual Basic.VbScript.JavaScript,只不 ...

  8. Java自动化环境搭建笔记(1)

    Java自动化环境搭建笔记(1) 自动化测试 先搭建java接口测试的环境: 使用mvn命令构建项目 测试集通过testNG.xml组织并运行 测试数据解耦,通过Excel等文件提供 基础依赖 创建m ...

  9. 28.zookeeper单机(Standalones模式)和集群搭建笔记

    zookeeper单机(Standalones模式)和集群搭建: 前奏: (1).zookeeper也可以在windows下使用,和linux一样可以单机也可以集群,具体就是解压zookeeper-3 ...

随机推荐

  1. ES6 for-of循环和迭代器使用细节

    SE5之前我们可以用for循环来遍历数组,SE5为数组引进了新的方法forEach(),方便了很多,但是该方法不能够通过break或者return返回外层函数. arr.forEach(functio ...

  2. Linux驱动模型解析bus之platform bus

    这是内核启动之后要调用的驱动模型的开始代码: drivers/base/init.c/** * driver_init - initialize driver model. * * Call the ...

  3. AJAX中使用post,get接收发送数据的区别

    如何发起请求 xhr.send(); 备注: 如果是get方式,send()命令中不用写任何参数 传递的数据可以写在url中,服务器用$_GEET["参数名"]接收 如果是post ...

  4. HDU 6112 今夕何夕

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. (2017浙江省赛E)Seven Segment Display

    Seven Segment Display Time Limit: 2 Seconds      Memory Limit: 65536 KB A seven segment display, or ...

  6. 路由知识 静态路由 rip eigrp ospf

    第1章 路由选择原理 1.1 几个概念 1.1.1 被动路由协议 用来在路由之间传递用户信息 1.1.2 主动路由协议 用于维护路由器的路由表 R2#show ip route Codes: C - ...

  7. IdentityServer4 指定角色授权(Authorize(Roles="admin"))

    1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...

  8. 对比jquery获取属性的方法props、attr、data

    1.attr,prop 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法.对于自定义的属性是取不到的: 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 2.a ...

  9. HTML学习笔记 CSS表格及轮廓案例 第八节 (原创)参考使用表

    #tb, tb1, tr, th, td { border: 5px solid blue; /*加边框*/ padding: 5px; /*内边距*/ } #tb1 { border-collaps ...

  10. C#中的静态成员和非静态成员

    C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法 ...