失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java post接口测试_接口测试——Java + TestNG 国家气象局接口(json解析)实例

java post接口测试_接口测试——Java + TestNG 国家气象局接口(json解析)实例

时间:2021-05-12 14:12:17

相关推荐

java post接口测试_接口测试——Java + TestNG 国家气象局接口(json解析)实例

后端测试,主要以测试接口为主。需要代码支撑,近期便找了个天气接口捣鼓了。

使用到的工具是:Eclipse + TestNG + Maven + ReportNG,全国城市编码:/oucbl/p/6138963.html,接口地址:/data/cityinfo/城市编码.html

先看一下代码架构,如下所示:

建的是maven工程,个人觉得这样下载依赖包较方便。工程科分为四部分:功能代码,测试case,报表文件和配置文件。网络上也有很多这样的实例,我只是列举些我在做的过程中所遇到的问题吧,也当一个记录。maven不会配置,可参见我之前写的随笔。

功能代码

Common

1 packagecom.CityWether.CityInfo;2

3 importnet.sf.json.JSONException;4 importnet.sf.json.JSONObject;5

6 public classCommon {7 public staticString getJsonValue(String JsonString, String JsonId) {8 String JsonValue = "";9 //trim()去掉字符串首尾的空格

10 if (JsonString == null || JsonString.trim().length() < 1) {11 return null;12 }13 try{14 JSONObject obj1 = newJSONObject(JsonString);15 JsonValue =obj1.getString(JsonId);16 } catch(JSONException e) {17 e.printStackTrace();18 }19 returnJsonValue;20 }21 }

View Code

URLConnection

1 packagecom.CityWether.CityInfo;2

3 .HttpURLConnection;4 .URL;5

6 public classURLConnection {7 public staticHttpURLConnection getConnection(String url){8 HttpURLConnection connection = null;9 try{10 //打开和URL之间的连接

11 URL postUrl = newURL(url);12 connection =(HttpURLConnection) postUrl.openConnection();13 //设置通用的请求属性

14 connection.setDoOutput(true);15 connection.setDoInput(true);16 connection.setRequestMethod("GET");17 connection.setUseCaches(false);18 connection.setInstanceFollowRedirects(true);19 connection.setRequestProperty("Content-Type", "application/json");20 connection.setRequestProperty("Charset", "utf-8");21 connection.setRequestProperty("Accept-Charset", "utf-8");22 } catch(Exception e) {23 e.printStackTrace();24 }25 returnconnection;26 }27 }

View Code

CityWeather

1 packagecom.CityWether.CityInfo;2

3 importjava.io.BufferedReader;4 importjava.io.DataOutputStream;5 importjava.io.IOException;6 importjava.io.InputStreamReader;7 .HttpURLConnection;8

9 public classCityWeather {10 private String url="";11

12 publicString geturl() {13 returnurl;14 }15

16 public staticString formatString(String s) {17 if (s != null) {18 s = s.replaceAll("\ufeff", "");19 }20 returns;21 }22

23 public String getHttpRespone(String cityCode) throwsIOException {24 String line = "";25 String httpResults = "";26 url=("/data/cityinfo/" + cityCode + ".html");27 try{28 HttpURLConnection connection =URLConnection.getConnection(url);29 //建立实际的连接

30 connection.connect();31 BufferedReader reader = new BufferedReader(newInputStreamReader(connection.getInputStream()));32 while ((line = reader.readLine()) != null) {33 httpResults = httpResults +line.toString();34 }35 reader.close();36 //断开连接

37 connection.disconnect();38 } catch(Exception e) {39 e.printStackTrace();40 }41 returnhttpResults;42 }43 }

View Code

测试case

1 packagecom.CityWether.CityInfo;2

3 importjava.io.IOException;4

5 importorg.testng.Assert;6 importorg.testng.Reporter;7 importorg.testng.annotations.Test;8

9 importcom.CityWether.CityInfo.CityWeather;10 importcom.mon;11

12 public classTestCase {13 public String httpResult= null, weatherinfo= null, city=null,expect_city = null;14 public static String cityCode="";15 CityWeather weather=newCityWeather();16

17 @Test(priority=0)18 public void getHuaihua() throwsIOException{19 expect_city="怀化";20 cityCode="101251201";21 resultCheck(cityCode, expect_city);22 }23

24 @Test(priority=1)25 public void getHuitong() throwsIOException{26 expect_city="会同";27 cityCode="101251206";28 resultCheck(cityCode, expect_city);29 }30

31 @Test(priority=2)32 public void getChangsha() throwsIOException{33 expect_city="长沙";34 cityCode="101250101";35 resultCheck(cityCode, expect_city);36 }37

38 @Test(priority=3)39 public void getBaoshan() throwsIOException{40 expect_city="宝山";41 cityCode="101020300";42 resultCheck(cityCode, expect_city);43 }44

45 @Test(priority=4)46 public void getShanghai() throwsIOException{47 expect_city="上海";48 cityCode="10100";49 resultCheck(cityCode, expect_city);50 }51

52 @Test(priority=5)53 public void Minhang() throwsIOException{54 expect_city="闵行";55 cityCode="10100";56 resultCheck(cityCode, expect_city);57 }58

59 public void resultCheck(String cityCode, String expect_city) throwsIOException{60 System.setProperty("org.uncommons.reportng.escape-output", "false");61 Reporter.log("【正常用例】:获取"+expect_city+"天气成功!");62 httpResult=weather.getHttpRespone(cityCode);63 Reporter.log("

请求地址: "+weather.geturl()+"

");64 Reporter.log("【返回结果】: "+httpResult);65 weatherinfo=Common.getJsonValue(httpResult, "weatherinfo");66 city=Common.getJsonValue(weatherinfo, "city");67 Reporter.log("

【用例结果】: resultCode=>expected: " + expect_city + " ,actual: "+ city+"

");68 Assert.assertEquals(city,expect_city);69 Reporter.log("

"+"------------------------------------------------------------------------------"+"

");71 }72 }

View Code

报表文件示例

报表html文件位置在如下所示:

代码实现如上就完成,需要配置pom.xml文件和testng.xml文件,可参照如下:

pom.xml

pom.xml文件是下载依赖包的,特别方便

1

2 xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com

6 CityWether

7 0.0.1-SNAPSHOT

8 jar

9

10 CityWether

11

12

13

14 UTF-8

15

16

17

18

19 junit

20 junit

21 3.8.1

22 test

23

24

25 org.json

26 json

27 1018

28

29

30 org.testng

31 testng

32 6.9.10

33

34

35 org.uncommons

36 reportng

37 1.1.4

38

39

40 com.google.inject

41 guice

42 4.0

43

44

45 velocity

46 velocity-dep

47 1.4

48

49

50

View Code

这里需要注意的是,由于接口返回的是json数据,所以必须导入json依赖包:

1

2 org.json

3 json

4 1018

5

testng.xml

testng.xml文件是用于运行的,运行程序直接运行该文件即可:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

View Code

问题总结

自己在完成过程中,过程中遇到如下问题:

1、接口返回的数据是乱码

如下所示:

解决办法:

在CityWeather类中代码下加上如下代码即可:

public staticString formatString(String s) {if (s != null) {

s= s.replaceAll("\ufeff", "");

}returns;

}

2、Common类中导包错误

Common类中代码导入如下包,运行程序报错

importorg.json.JSONException;import org.json.JSONObject;

报错为:

解决办法为:

重新导入JSON包即可,如下:

importnet.sf.json.JSONException;import net.sf.json.JSONObject;

3、注意:测试报告美化是依赖ReportNG包的,切莫忘记

本文仅代表作者观点,系作者@温一壶清酒发表。

欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文章出处:/hong-fithing/

如果觉得《java post接口测试_接口测试——Java + TestNG 国家气象局接口(json解析)实例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。