前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java自动化测试(参数化 19)

Java自动化测试(参数化 19)

作者头像
zx钟
发布2020-08-17 15:46:16
4430
发布2020-08-17 15:46:16
举报
文章被收录于专栏:测试游记测试游记

测试数据修改

使用占位符来替代参数,可以在代码中动态修改它的值。

修改前测试参数:

代码语言:javascript
复制
{"mobile_phone":"13212332111","pwd":"12345678"}

测试参数

代码语言:javascript
复制
{"mobile_phone":"${register_md}","pwd":"${register_pwd}"}

测试SQL

代码语言:javascript
复制
["select count(*) from member a where a.mobile_phone = '${register_mb}';"]

Maven导入测试数据生成

代码语言:javascript
复制
<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>java-testdata-generator</artifactId>
    <version>1.1.2</version>
</dependency>

随机测试参数生成

代码语言:javascript
复制
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");
    }
}

测试前的参数替换

代码语言:javascript
复制
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中导入异常排除

代码语言:javascript
复制
<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修饰变量,变量成为常量,常量只能赋值一次。

代码语言:javascript
复制
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

代码语言:javascript
复制
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

定义输出

src/test/resources/log4j.properties

代码语言:javascript
复制
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

代码语言:javascript
复制
import org.apache.log4j.Logger;

private static Logger logger = Logger.getLogger(HttpUtils.class);

使用

代码语言:javascript
复制
logger.info(statusCode);

测试日志打印

打印

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试数据修改
  • Maven导入测试数据生成
  • 随机测试参数生成
  • 测试前的参数替换
  • Maven中导入异常排除
  • 使用常量替代
  • 日志记录
    • 引入Maven
      • 定义输出
        • 定义logger
          • 使用
            • 测试日志打印
            相关产品与服务
            数据保险箱
            数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档