Java自动化测试(参数化 19)
时间:2022-07-23
本文章向大家介绍Java自动化测试(参数化 19),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
测试数据修改
使用占位符来替代参数,可以在代码中动态修改它的值。
修改前测试参数:
{"mobile_phone":"13212332111","pwd":"12345678"}
测试参数
{"mobile_phone":"${register_md}","pwd":"${register_pwd}"}
测试SQL
["select count(*) from member a where a.mobile_phone = '${register_mb}';"]
Maven导入测试数据生成
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-testdata-generator</artifactId>
<version>1.1.2</version>
</dependency>
随机测试参数生成
package com.zhongxin.utils;
import cn.binarywang.tools.generator.ChineseMobileNumberGenerator;
import java.util.HashMap;
import java.util.Map;
public class UserData {
// 存储接口响应对象
public static Map<String, Object> VARS = new HashMap<>();
// 存储默认请求头
public static Map<String, String> DEFAULT_HEADERS = new HashMap<>();
static {
// 静态代码:类在加载时会自动加载一次此代码
DEFAULT_HEADERS.put("X-Lemonban-Media-Type", "lemonban.v2");
DEFAULT_HEADERS.put("Content-Type", "application/json");
// 把需要参数化的数据存储到VARS
// 随机手机号码
VARS.put("${register_mb}", ChineseMobileNumberGenerator.getInstance().generate());
VARS.put("${register_pwd}", "12345678");
VARS.put("${amount}", "5000");
}
}
测试前的参数替换
public void paramsReplace(CaseInfo caseInfo) {
Set<String> keySet = UserData.VARS.keySet();
String params = caseInfo.getParams();
String sql = caseInfo.getSql();
String expectedResult = caseInfo.getExpectedResult();
String url = caseInfo.getUrl();
for (String placeHolder : keySet) {
String value = UserData.VARS.get(placeHolder).toString();
if (StringUtils.isNotBlank(params)) {
params = params.replace(placeHolder, value);
}
if (StringUtils.isNotBlank(sql)) {
sql = sql.replace(placeHolder, value);
}
if (StringUtils.isNotBlank(expectedResult)) {
expectedResult = expectedResult.replace(placeHolder, value);
}
if (StringUtils.isNotBlank(url)) {
url = url.replace(placeHolder, value);
}
}
caseInfo.setParams(params);
caseInfo.setSql(sql);
caseInfo.setExpectedResult(expectedResult);
caseInfo.setUrl(url);
}
Maven中导入异常排除
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</exclusion>
</exclusions>
</dependency>
使用常量替代
final修饰变量,变量成为常量,常量只能赋值一次。
package com.zhongxin.utils;
public class Constants {
// 响应数据回写列
public static final int PESPONSE_CELL_NUM = 8;
// 断言数据回写列
public static final int ASSERT_CELL_NUM = 10;
// 用例文件路径
public static final String EXCEL_PATH = "src/test/resources/cases_v3.xlsx";
}
部分可能会变更的数据写入到Constants
类中定义为一个常量
日志记录
引入Maven
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
定义输出
src/test/resources/log4j.properties
log4j.rootLogger = INFO,console,file
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = log/api_auto.log
log4j.appender.file.Append = false
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
定义logger
src/test/java/com/zhongxin/utils/HttpUtils.java
import org.apache.log4j.Logger;
private static Logger logger = Logger.getLogger(HttpUtils.class);
使用
logger.info(statusCode);
测试日志打印
打印
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PDO::inTransaction讲解
- 小程序前后端交互使用JWT
- python文件操作seek()偏移量,读取指正到指定位置操作
- 使用OpenCV去除面积较小的连通域
- 使用vs code编辑调试php配置的方法
- Python OpenCV去除字母后面的杂线操作
- PDO::rollBack讲解
- PyTorch的torch.cat用法
- keras在构建LSTM模型时对变长序列的处理操作
- Discuz不使用插件实现简单的打赏功能
- Pytorch学习之torch用法—-比较操作(Comparison Ops)
- PHP里的$_GET数组介绍
- PHP中$GLOBALS与global的区别详解
- MyBatis源码解析之基础模块—Log
- 启用OPCache提高PHP程序性能的方法