为测试框架model类自动生成xml结果集

简介: 问题:有大量类似于theProductId这样名字的字符串需要转换成the_product_id这种数据库column名的形式。 思路:见到(见)大写字母(缝)就插入(插)一个“_”字符(针)进去,最后把所有字母都转换为小写。

问题:有大量类似于theProductId这样名字的字符串需要转换成the_product_id这种数据库column名的形式。

思路:见到()大写字母()就插入()一个“_”字符()进去,最后把所有字母都转换为小写。

解决办法:递归,字符串操作——见缝插针。

方法如下:

public static String toDbFormat(String theString, String insertString, int i) {
    StringBuilder sb = new StringBuilder(theString);
    String result = theString;
    if (i < sb.length()) {
        if (Character.isUpperCase(sb.charAt(i))) {
            sb.insert(i, insertString);
            i = i + 2;
        } else {
            i++;
        }
        result = toDbFormat(sb.toString(), insertString, i);
    }
    return result.toLowerCase();
}

实际应用——在接口自动化测试框架中根据model类为mybatis文件夹中的xml文件自动生成result部分:

public static void createXmlOut(Object object) throws IOException{
    //生成mybatis文件夹中xml文件的result部分
    FileWriter writer= new FileWriter("D:\\xmlOut.txt");
    @SuppressWarnings("rawtypes")
    Class clz = object.getClass();
    for (java.lang.reflect.Field field : clz.getDeclaredFields()) {
        String target = "<result property=\""+field.getName()+"\" column=\""+toDbFormat(field.getName(), "_", 0)+"\" />";
        writer.append(target+"\r\n");
    }
    writer.flush();
    writer.close();
}

测试方法(这里SomeModel替换为测试框架中实际的model类):

public static void main(String[] args) throws IOException {
    SomeModel someModel = new SomeModel();
    createXmlOut(someModel);
}

执行测试方法后就可以在你的D盘xmlOut.txt文件中看到生成的结果了。完整测试代码如下:

package com.netease.lede.qa.util;

import java.io.FileWriter;
import java.io.IOException;

import com.netease.lede.qa.model.duobao.TbDuobaoCoinDetail;

public class CreateResultXMLUtil {
    public static String toDbFormat(String theString, String insertString, int i) {
        // 将变量名转成数据库列名形式
        StringBuilder sb = new StringBuilder(theString);
        String result = theString;
        if (i < sb.length()) {
            if (Character.isUpperCase(sb.charAt(i))) {
                sb.insert(i, insertString);
                i = i + 2;
            } else {
                i++;
            }
            result = toDbFormat(sb.toString(), insertString, i);
        }
        return result.toLowerCase();
    }

    public static void createXmlOut(Object object) throws IOException {
        // 生成mybatis文件夹中xml文件的result部分
        FileWriter writer = new FileWriter("D:\\xmlOut.txt");
        @SuppressWarnings("rawtypes")
        Class clz = object.getClass();
        for (java.lang.reflect.Field field : clz.getDeclaredFields()) {
            String target = "<result property=\"" + field.getName() + "\" column=\""
                    + toDbFormat(field.getName(), "_", 0) + "\" />";
            TylanStringUtil.log(target);
            writer.append(target + "\r\n");
        }
        writer.flush();
        writer.close();
    }

    public static void main(String[] args) throws IOException {
        TbDuobaoCoinDetail tbDuobaoCoinDetail = new TbDuobaoCoinDetail();
        createXmlOut(tbDuobaoCoinDetail);
    }
}
View Code

 

相关文章
|
8月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
11月前
|
安全 Unix Linux
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
285 10
Metasploit Pro 4.22.7-2025050101 发布 - 专业渗透测试框架
|
12月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.7-2025042101 发布 - 专业渗透测试框架
Metasploit Pro 4.22.7-2025042101 (Linux, Windows) - 专业渗透测试框架
335 5
Metasploit Pro 4.22.7-2025042101 发布 - 专业渗透测试框架
|
6月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
311 1
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
|
6月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
588 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
7月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
450 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
7月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
509 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
7月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
631 0
|
7月前
|
缓存 安全 Linux
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
277 0
|
10月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
328 3
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架