接口自動化:java+springboot+Junit/TestNG+mybatis-plus+mysql


簡介:

開發語言:Java
框架:spring boot + MyBatis-plus + Junit
代碼管理:git
開發集成工具:IntelliJ IDEA
 Java框架使用spring boot + Mybatis-plus + Junit    spring boot管理配置依賴注入  mybatis-plus管理sql操作   junit管理測試用例
文件結構:
   src => 代碼主目錄 
 pom.xml => maven配置項目需要的jar包依賴
src/main 主要的代碼都在這里面 包括一些配置 封裝 數據庫等
     src/main/java/com/huaxi 
           api :接口調用路徑 
           base:封裝的get,post請求以及一些基礎方法
           commom:一些公用的方法
           config :  公共的一些參數配置
           dao:DataAccessobjects 數據存取對象, 封裝對數據庫的一些操作
           entity: entity 一個類代表一張表的字段映射
           service : 封裝用例或者對於一些流程用例進行封裝
     src/test/resources =>
                                         mapper Mapper.xml映射文件中定義了操作數據庫的sql,每個sql是一個statement,映射文件是mybatis的核心
 
                                         application.yml  數據庫連接相關配置,mybatis配置  
                                         generatorConfig.xml  數據庫關系代碼生成器(小工具)配置
                                         applicationContext.xml.properties 項目配置
                                         redis.properties redis配置
src/test 存放測試用例 
pom.xml  maven的依賴包

目錄結構如圖:

 

 

 

一、環境准備

1、安裝jdk:

安裝包官網上下載:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html  選1.8的就可以,其他的沒有嘗試過

安裝配置教程可參考:https://www.cnblogs.com/kelley-2020/p/12786104.html    也可以自行百度,遍地都是教程

查看java是否安裝成功的命令:Windows + R鍵,輸入cmd,進入命令行界面  輸入命令:java -version   

2、安裝Git:

Git下載官方地址為:https://git-scm.com/download/win

安裝配置教程可參考:https://www.cnblogs.com/ximiaomiao/p/7140456.html  當然也可以自己去百度

3、安裝IDEA:

官網下載地址: https://www.jetbrains.com/idea/

安裝教程可參考:http://c.biancheng.net/view/7592.html  自己百度也可以

4、下載Maven:

下載配置教程可參考:https://www.cnblogs.com/liuhongfeng/p/5057827.html

 

二、代碼管理和提交

1、克隆代碼到本地

git clone https://github.com/wen-5heht/huaxi-test.git

2、使用idea 打開對應的項目,查看項目,編寫用例

 

三、模塊

1、http類型的post接口請求

BaseRequest:post請求,使用的springboot的restTemplate
 *restTemplatePostString
     * @param url
     * @param params
     * @return
     * @throws Exception
     */
public String restTemplatePostString(String url,Map<String, String> params,String token) throws Exception{
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("token",token);

org.springframework.http.HttpEntity<Map<String, String>> request = new org.springframework.http.HttpEntity<>(params, headers);
ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );
JSONObject json = JSONObject.parseObject(response.getBody());
return JSON.toJSONString(json, SerializerFeature.PrettyFormat);
}

登錄接口獲取token:

package com.huaxi.base;

import com.alibaba.fastjson.JSONObject;
import com.huaxi.api.LoginApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * @title:
 * @author: 2021/8/2017:57
 * @date: 2021/8/2017:57
 */
@Slf4j
@Service
public class LoginService {


    /**
     * 大眾端預發布環境賬號登錄
     * @param accountNo
     * @return
     */
    public String AppLogin(String accountNo){
        HashMap<String ,String> params = new HashMap<>();
        params.put("accountNo",accountNo);
        params.put("loginDeviceNum","Atce-SFvOw-nIUpUwdjMN7hHSUChBgfAm2o6PwVoQUIL");
        params.put("loginDeviceType","APP");
        params.put("loginDeviceUUID","c50e03b5-707f-4498-b1ac-9951d855ae29");
        params.put("password","ZTz2K9uhlvwWxYtVdQsQDxjN3Le7keyWd018RUv+vTcPtZTs4P44ECdoThBKAtJthMbRDOdIzcDkC44M0rm8c86hLSgp9yFrjWWHSxkRY+zHqxGo8v8ymAjX2Wf/S+UNAgwI4sB7mnA7ahBOoCU1RRRCGpH6fBI+aUk+2Z5viLU=");
        params.put("appCode","HXGYAPP");
        params.put("channelCode","PATIENT_ANDROID");
        log.info("\n===============打印登錄接口的入參:===================\n" + params);

        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());

        org.springframework.http.HttpEntity<Map<String, String> >request = new org.springframework.http.HttpEntity<>(params, headers);
        ResponseEntity<String> response = restTemplate.postForEntity( LoginApi.Account_Login, request , String.class );
        JSONObject jsonObject = JSONObject.parseObject(response.getBody());
        String token =jsonObject.getJSONObject("data").getString("token");
        log.info("\n===================打印登錄接口返回的token:===================\n" + token);
        return token;
    }
}

 springboot啟動類框架配置加載:

package com.huaxi.huaxitest;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ImportResource;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@ServletComponentScan
@ImportResource(locations = {"classpath*:applicationContext*.xml"})
@EnableScheduling
@MapperScan("com.huaxi.dao")
public class HuaxitestApplication {

    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
        return builder.sources(HuaxitestApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(HuaxitestApplication.class);
        springApplication.addListeners(new ApplicationPidFileWriter());
        springApplication.run(args);
    }

}

 

service:封裝接口調用

package com.huaxi.service;

import com.huaxi.api.ImageCloudAPI;
import com.huaxi.base.BaseRequest;
import com.huaxi.config.config;
import com.huaxi.vo.ListExaminationVO;
import com.huaxi.vo.QueryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;

@Service
public class ImageCloudService extends config {
    @Autowired
    BaseRequest baseRequest;

    /**
     * 數字影像簡介頁面
     * @param appCode
     * @param organCode
     * @param channelCode
     * @param appVersionCode
     * @param pageCode
     * @return
     * @throws Exception
     */
public String imageCloudPage(String appCode,String organCode,String channelCode,String appVersionCode,String pageCode,String token) throws Exception{
HashMap<String,String> params = new HashMap<>();
params.put("appCode",appCode);
params.put("organCode",organCode);
params.put("channelCode",channelCode);
params.put("appVersionCode",appVersionCode);
params.put("pageCode",pageCode);
String result = baseRequest.restTemplatePostString(ImageCloudAPI.Image_Cloud_Page,params,token);
return result;
}
}

api:可以直接用完整的URL,也可以根據域名+url

package com.huaxi.api;

public interface ImageCloudAPI {
    /**
     * 數字影像簡介頁面
     */
    String Image_Cloud_Page = "https://hxgyapipre.cd120.info/cloud/hosplatcustomer/resource/page/query";

 
}

case:用例層,直接調用service的方法,繼承BaseTest
BaseTest:

package com.huaxi.base;

import com.huaxi.huaxitest.HuaxitestApplication;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = HuaxitestApplication.class)
public class BaseTest {
}

用例:

package com.huaxi.huaxitest;

import com.huaxi.base.BaseRequest;
import com.huaxi.base.BaseTest;
import com.huaxi.base.CheckPoint;
import com.huaxi.service.ImageCloudService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;


@Slf4j
public class ImageCloudTestCase extends BaseTest {
    @Autowired
    ImageCloudService imageCloudService;
    @Autowired
    BaseRequest baseRequest;

@Test
public void test001() throws Exception{
String token = loginService.AppLogin("18683571131");
String appCode = "HXGYAPP";
String organCode = "PUBLIC";
String channelCode = "PATIENT_WECHAT";
String appVersionCode = "1.0.0";
String pageCode = "image_cloud_page";
String result = imageCloudService.imageCloudPage(appCode,organCode,channelCode,appVersionCode,pageCode,token);
log.info("影像雲簡介頁返回內容:" + result);
CheckPoint.setResult(result);
CheckPoint.assertEquals("對比msg","操作成功","$.msg");
CheckPoint.assertEquals("對比code","1","$.code");
CheckPoint.assertEquals("對比errCode","0","$.errCode");
CheckPoint.check();
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM