Java+SpringBoot+Maven+TestNG+httpclient+Allure+Jenkins實現接口自動化
一、方案
需求目標:測試左移,測試介入研發過程,驗證單接口正常及異常邏輯
選用工具:Java、SpringBoot、Maven、TestNG、httpclient、Allure、Jenkins
方案:創建測試接口測試工程,參照研發設計文檔和設計思路,編寫正常及異常用例,直接調用服務端接口,覆蓋接口邏輯和驗證異常處理,提升接口健壯性。
二、項目結構及代碼說明
2.1 項目結構

2.2 代碼示例
接口腳本舉例說明:AddCustomerTest
點擊查看代碼
package cases.crc.customer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import config.TestConfig;
import model.CrcCustomerCase;
import model.InterfaceName;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.ibatis.session.SqlSession;
import org.json.simple.JSONObject;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import utils.ConfigFile;
import utils.DatabaseUtil;
import java.io.IOException;
import java.util.Random;
public class AddCustomerTest {
@BeforeTest
public void beforeTest(){
TestConfig.defaultHttpClient = new DefaultHttpClient();
TestConfig.crcCustomerCreateUrl = ConfigFile.getUrl(InterfaceName.ADDCUSTOMER);
}
@Test(groups = "addCustomerSuccess",description = "新增客戶成功")
public void addCustomerSuccess() throws IOException {
// 使用HttpClient調用接口
HttpPost post = new HttpPost(TestConfig.crcCustomerCreateUrl);
//設置請求頭信息 設置header,并且繞過token校驗
post.setHeader("content-type","application/json");
post.setHeader("Authorization","Bearer test1");
// 設置json參數
JSONObject param = new JSONObject();
String param1 = randomNumber();
param.put("customerName",param1);
param.put("contacts","hqq");
param.put("mobile","13000001111");
param.put("address","上海市閔行區");
param.put("zipcode","310030");
param.put("areacode",360425);
param.put("status",0);
param.put("bankAccount","123456");
param.put("legalPerson","hqq");
param.put("usci",param1);
param.put("description","自動化接口測試客戶");
//將參數信息添加到方法中
StringEntity entity = new StringEntity(param.toString(),"utf-8");
post.setEntity(entity);
//執行post方法
HttpResponse response = TestConfig.defaultHttpClient.execute(post);
//聲明一個對象來進行響應結果的存儲,獲取響應結果
String strResult = EntityUtils.toString(response.getEntity(),"utf-8");
// 根據用戶名數據庫查詢客戶id
SqlSession session = DatabaseUtil.getSqlSession();
CrcCustomerCase o = session.selectOne("getCustomerInfoByCustomerName", param1);
int customerId = o.getId();
// 將json格式的字符串轉換成json對象,便于斷言
ObjectMapper mapper = new ObjectMapper();
try{
JsonNode jsonNode = mapper.readTree(strResult);
Assert.assertEquals(jsonNode.get("code").asInt(),0);
Assert.assertEquals(jsonNode.get("data").asInt(),customerId);
}catch (Exception e){
System.out.println("json轉換失敗");
e.printStackTrace();
}
}
@Test(groups = "addCustomerFaile",description = "新增客戶失敗,客戶名稱存在")
public void addCustomerFailed01() throws IOException{
// 使用HttpClient調用接口
HttpPost post = new HttpPost(TestConfig.crcCustomerCreateUrl);
//設置請求頭信息 設置header,并且繞過token校驗
post.setHeader("content-type","application/json");
post.setHeader("Authorization","Bearer test1");
// 設置json參數
JSONObject param = new JSONObject();
param.put("customerName","格力集團");
param.put("status",0);
//將參數信息添加到方法中
StringEntity entity = new StringEntity(param.toString(),"utf-8");
post.setEntity(entity);
//執行post方法
HttpResponse response = TestConfig.defaultHttpClient.execute(post);
//聲明一個對象來進行響應結果的存儲,獲取響應結果
String strResult = EntityUtils.toString(response.getEntity(),"utf-8");
// 將json格式的字符串轉換成json對象,便于斷言
ObjectMapper mapper = new ObjectMapper();
try{
JsonNode jsonNode = mapper.readTree(strResult);
Assert.assertEquals(jsonNode.get("code").asInt(),1001001012);
Assert.assertEquals(jsonNode.get("msg").asText(),"客戶名稱已存在");
}catch (Exception e){
System.out.println("json轉換失敗");
e.printStackTrace();
}
}
public String randomNumber(){
String res = "Auto-";
Random random = new Random();
for (int i = 0; i < 6; i++) {
int randomInt = random.nextInt(10);
res += randomInt;
}
System.out.println("生成的隨機字符串:" + res);
return res;
}
}
三、項目集成和測試報告
3.1 準備工作
1)插件安裝 allure
2)Jenkins:系統管理--》全局工具配置

3.2 jenkins新建自由風格的項目:esmc-test-autotest
1)源碼:配置gitlab上的源碼地址、用戶名密碼、分支等
2)maven命令:mvn clean test 清理target/目錄下的文件,并執行src/test/下的測試用例

3)執行mvn test后,會生成allure-results文件夾存放生成的json報告
4)需要配置Allure,查看allure-results/的測試報告

3.3 構建項目

3.4、查看結果:點擊Allure Report按鈕

浙公網安備 33010602011771號