美文网首页
JAVA接口自动化测试----Jenkins持续集成(三)

JAVA接口自动化测试----Jenkins持续集成(三)

作者: 丛鹏 | 来源:发表于2019-12-14 15:42 被阅读0次

上一篇介绍的框架大概轮廓及  秀了一下测试报告,这一节主要介绍框架代码的的详细解释

git地址:   https://gitee.com/wancongpeng/HappyDragon.git

一、获取环境

1.pom配置参数默认环境sit,获取相关环境。

根据这个默认sit去寻找src/main/filters/filter_${env}.properties的文件 pom的配置指定profiles默认

二、框架的程序的入口

创建服务,new一个http服务 这里类里是个重写的http服务主要服务是get/post(json、表单、消息头)知道连有什么就可以了不用太细研究。

三、解析测试用例

测试用例  解析

import com.chuanglan.api.constant.BlueDBTemplate;

import com.chuanglan.api.constant.BlueSql;

import com.chuanglan.api.dataproducer.PhoneNumberDataGenerator;

import com.chuanglan.api.dataproducer.dataproducerHelp;

import com.chuanglan.api.services.HttpClientService;

import com.chuanglan.api.services.RPCServiceFactory;

import com.chuanglan.api.utils.DBUtils;

import com.chuanglan.api.utils.GetFileMess;

import com.chuanglan.api.utils.TimeHelper;

import io.qameta.allure.Feature;

import io.qameta.allure.Stories;

import io.qameta.allure.Story;

import io.restassured.RestAssured;

import net.sf.json.JSONObject;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.jdbc.core.JdbcTemplate;

import org.testng.annotations.AfterClass;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

import java.io.IOException;

import java.util.*;

import static com.chuanglan.api.utils.WritePropertiesUtil.writePropertiesFile;

import static java.util.stream.Collectors.toList;

public class OtherDemo {

private  static Loggerlogger = LoggerFactory.getLogger(OtherDemo.class);

private static JdbcTemplatejdbcTemplate;

private static JdbcTemplateoracleTemplate;

private static HttpClientServicehttpClientService;

private static PhoneNumberDataGeneratorphoneNumberDataGenerator;

private static Stringextno;

private static Stringuid;

private static dataproducerHelpdataproducerHelp;

private static DBUtilsdbUtils;

private static Stringdatabase ="DBhelp.properties";//通过filter配置数据库环境

    private static Stringenv =new GetFileMess().getValue("enveromnet",database);

private static Stringdburl=new GetFileMess().getValue("send.url",database);

//找数据

    private StringBatchSubmit =dburl +"/msg/BatchSubmit";

private StringHttpBatchSendSM =dburl+"/msg/HttpBatchSendSM";

private StringHttpVarSM =dburl+"/msg/HttpVarSM";

private Stringmt =dburl+"/msg/mt";

private Stringsend=dburl+"/msg/send";

private StringsendDelay =dburl+"/msg/sendDelay";

private Stringjson=dburl +"/msg/send/json";

private StringVjson=dburl+"/msg/variable/json";

private static StringpackagePath="";

@BeforeClass

    public static void beforeClass() {

//链接公司数据库进行断言

        oracleTemplate=BlueDBTemplate.getJdbcTemplate();

httpClientService = RPCServiceFactory.createHttpService();

phoneNumberDataGenerator =new PhoneNumberDataGenerator();

dataproducerHelp=new dataproducerHelp();

dbUtils=new DBUtils();

packagePath=dbUtils.getPath("测试用例.xlsx");

extno=String.valueOf(TimeHelper.notifyTime(new Date()));

logger.info("游戏运行开始");

}

@Feature("短信发送")

@Stories(value = {@Story(value ="短信发送1")})

@Test(priority =1)

public void BatchSubmit()throws Exception{

logger.info("*******短信发送接口***********");

Thread.sleep(2000);

String account=dataproducerHelp.readTestCase(packagePath,env+"_scene","1","1");

String password=dataproducerHelp.readTestCase(packagePath,env+"_scene","1","2");

String sign=dataproducerHelp.readTestCase(packagePath,env+"_scene","1","3");

String content=dataproducerHelp.readTestCase(packagePath,env+"_scene","1","4");

String phones=phoneNumberDataGenerator.generate();

String timestamp=String.valueOf(TimeHelper.gettime(new Date()));

String msgid=String.valueOf(TimeHelper.notifyTime(new Date()));

Map mappp =oracleTemplate.queryForMap(BlueSql.account_select,new Object[]{account});

String srcCode=String.valueOf(mappp.get("SRC_CODE"));

//数据准备

        List list =new ArrayList();

Map mapp=new HashMap();

mapp.put("msgid",msgid);

mapp.put("phones",phones);

mapp.put("content",content);

mapp.put("sign",sign);

mapp.put("subcode","1");

mapp.put("sendtime",timestamp);

list.add(mapp);

JSONObject reqJson =new JSONObject();

reqJson.put("account", account);

reqJson.put("password", password);

reqJson.put("data", list);

logger.info("发送请求为:"+reqJson);

JSONObject res =httpClientService.sendHttpPost(BatchSubmit, reqJson,false);

logger.info("返回请求为:"+res);

}

@AfterClass

    public static void afterClass()throws IOException{

logger.info("游戏运行结束");

Map data =new HashMap<>();

String database ="DBhelp.properties";

RestAssured.baseURI =new GetFileMess().getValue("send.url", database);

logger.info("********baseURI的值为:***********"+  RestAssured.baseURI);

data.put("ENVEROMNET",new GetFileMess().getValue("enveromnet", database));

data.put("DatabaseLoginName",new GetFileMess().getValue("oracle.user", database));

data.put("DatabaseLoginPass",new GetFileMess().getValue("oracle.password", database));

data.put("DatabaseLoginIP",new GetFileMess().getValue("oracle.dburl", database));

data.put("SendURL",new GetFileMess().getValue("send.url", database));

//        data.put("baseURI", RestAssured.baseURI + ":" + RestAssured.port + "/" + RestAssured.basePath);

        writePropertiesFile(data);

logger.info("********data的值为:***********"+data);

}

}

通过指定DBhelp.properties来获取环境,由于pom已经设置默认环境为sit,通过GetFileMess().getValue方法来获取参数值 DBhelp.properties通过这种变量${******}来获取filter_sit.properties的值,为什么是filter_sit.properties而不是filter_dev.properties的值 ,是因为pom的参数已经指定了传递的默认参数是sit,“<filter>src/main/filters/filter_${env}.properties</filter>”是否还有印象?

四、获取执行的测试数据(Excel)

继续解析用例

五、随机生成测试

这一步就是创建测试数据的,身份证、手机号、订单、姓名这些数据

六、testng与allure结合

把生成的environment.properties传递给install生成的//target//allure-results//文件中,用于页面allure显示的环境变量,这个一定要注意目录 一定要注意这个

七、Testng调试并发

相关文章

网友评论

      本文标题:JAVA接口自动化测试----Jenkins持续集成(三)

      本文链接:https://www.haomeiwen.com/subject/qlncnctx.html