学习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. 67、django之模型层(model)--查询补充及mookie

    本篇导航: F查询与Q查询 cookie 一.F查询与Q查询 1.以Book表为例 class Book(models.Model) : title = models.CharField(max_le ...

  2. QT生成PDF文件

    QString temp=""; //m_File_Content_Text_Edit->selectAll(); QString t_File_Content = m_Fi ...

  3. 1192: [HNOI2006]鬼谷子的钱袋

    1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3530  Solved: 2575[Submit][St ...

  4. poj 3321Apple Tree

    Apple Tree Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  5. 349B - Color the Fence

    Color the Fence Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Su ...

  6. 爆炸快求1~n有多少素数

    这个求一千亿以内的素数大约用6780ms #include <stdio.h> #include <iostream> #include <string.h> #i ...

  7. Java开发必装的IntelliJ IDEA插件

    IDEA 插件简介 常见的IDEA插件主要有如下几类: 常用工具支持 Java日常开发需要接触到很多常用的工具,为了便于使用,很多工具也有IDEA插件供开发使用,其中大部分已经在IDEA中默认集成了. ...

  8. [转]彻底弄懂css中单位px和em,rem的区别

    难怪会问我 rem 和 em, 这俩或在移动端还是很有必要学习的. root em OK? 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? P ...

  9. JavaScript系列-----对象基于哈希存储(<Key,Value>之Key篇) (1)

    1.Hash表的结构 首先,允许我们花一点时间来简单介绍hash表. 1.什么是hash表 hash表是一种二维结构,管理着一对对<Key,Value>这样的键值对,Hash表的结构如下图 ...

  10. python3 多线程获取数据实例

    import requestsimport jsonfrom retrying import retryfrom lxml import etreefrom queue import Queueimp ...