自动化测试代码的自动生成

自动化测试用例设计平台(AutoTCG OnLine) 自动化测试用例设计平台(AutoTCG OnLine)一、平台介绍二、主要功能三、AutoTCG系列产品 一、平台介绍 1.AutoTCG OnLine是一款在线自动化测试用例设计平台,通过在线创建可视化测试模型,自动生成测试用例 2.AutoTCG采用先进的数学算法,可实现全面科学的测试覆盖 3.AutoTCG适用于嵌入式软件测试、web应用测试、移动app测试、桌面软件测试等多种自动化测试场景... 阅读详情

自动化测试代码的自动生成


一、界面展示

我们来看看可视化的代码自动化生成界面设计,

自动化测试脚本自动生成页面


二、字段用途解释

  • 选择目标测试类

    指: 需要生成代码所要依据的接口类名称。

    备注: 这个是使用的文件上传,自动载入接口类名。

  • 本地的测试工程

    指:需要生成代码的路径地址。

    备注: 默认是生成在项目空间的java代码资源路径。

  • 脚本使用的模板

    指: 自动生成的脚本的代码所使用的模板样式。

    备注: 一般是会根据正常场景和异常场景进行区分。

  • 脚本使用的名称

    指: 这个是代码生成后的一个名称(类名)

    备注:类名称_检查点描述_用例的类型

  • 新建的脚本类型:

    指: 正常测试还是异常测试。

    备注: 这个是和模板配合使用的。

  • 脚本使用的编号

    指: 脚本测试数据的编号

    备注: 用于在执行的时候区分用例。

  • 脚本描述

    指: 脚本的描述,测试检查点,业务描述等。

  • 参数列表

    指: 根据类进行联动生成的。


三、代码展示

  • 代码(0)
    @RequestMapping(value = "/genScript.form", method = RequestMethod.POST)
    public ModelAndView genScript(HttpServletRequest request) {
        String className = request.getParameter("oClass");
        String oProject = request.getParameter("oProject");
        String oTemplet = request.getParameter("oTemplet");
        String oMethodName = request.getParameter("oMethodName");
        String oType = request.getParameter("oType");
        String oNo = request.getParameter("oNo");
        String oDesc = request.getParameter("oDesc");
        String oNumber = request.getParameter("oNumber");
        String oParaList = request.getParameter("oParaList");
        Boolean oBoolean = new TestCaseCGenerator().genScript(mav, className,
                oProject, oTemplet, oType, oNo, oDesc, oNumber, oParaList,oMethodName);
        oSharedDateUtil.shareDate(doMapper, user, cj_awardsDO, mav);
        //设置跳转页面
        mav.addObject("jspContent", "res.jsp");
        mav.addObject("result", oBoolean);
        //添加页面标题
        mav.addObject("title", "首-页");
        //页面业务处理--单独的方法处理
        return mav;
    }
  • 代码(1)
/**   
    *    
    * 方法名称:genScript   
    * 方法描述:  
    * 参数列表:@param mav
    * 参数列表:@param className
    * 参数列表:@param oProject
    * 参数列表:@param tempter
    * 参数列表:@param oType
    * 参数列表:@param oNo
    * 参数列表:@param oDesc
    * 参数列表:@param oNumber
    * 参数列表:@param paramas
    * 参数列表:@param oMethodName
    * 参数列表:@return
    * 返  回  值:Boolean 
    * 创  建  人:   
    * 创建时间:2015年6月29日 下午4:10:54   
    * 修  改  人:   
    * 修改时间:2015年6月29日 下午4:10:54   
    * 修改备注:   
    * @version  
    * @throws  
    *    
    */ 
    public Boolean genScript(ModelAndView mav, String className,
            String oProject, String tempter, String oType, String oNo,
            String oDesc, String oNumber, String paramas, String oMethodName) {
        VelocityEngine ve = new VelocityEngine();
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        ve.setProperty("classpath.resource.loader.class",
                ClasspathResourceLoader.class.getName());
        ve.setProperty(RuntimeConstants.INPUT_ENCODING, "utf-8"); // 输入编码格式设置
        ve.setProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8"); // 输出编码格式设置
        ve.init();
        Template actionTpt = ve.getTemplate(tempter);
        Template csv = ve.getTemplate("csv.vm");
        VelocityContext ctx = new VelocityContext();
        String[] oCls = className.split(":");
        String str = oCls[1];
        String str1 = lowToUpperCase(str);
        String oName = str1 + "_" + oCls[0] + "_" + oMethodName + "_" + oType;
        mav.addObject("name", oName);
        String tcDir = str1 + "_" + oCls[0];
        ctx.put("classNameUpCase", tcDir);
        ctx.put("oDesc", oDesc);
        ctx.put("oNo", oNo);
        ctx.put("subId", oCls[0]);
        String oTcMethodName = oCls[1] + "_" + oMethodName;
        ctx.put("classNameLowCase", oTcMethodName);
        ctx.put("methodParamsName", paramas);
        String[] arr = paramas.split(",");
        ArrayList<String> newArr = new ArrayList<String>();
        for (int i = 0; i < arr.length; i++) {
            if ( !StringUtils.equals(arr[i], "user_token")) {
                newArr.add(arr[i]);
            }
        }
        String csvParamsList = "";
        String methodParamsList = "";
        if (!newArr.isEmpty()) {
            String st = newArr.toString();
            String oParamas = (String) st.subSequence(1, (st.length()) - 1);
            methodParamsList = " ,String " + oParamas.replace(",", ",String ");
            csvParamsList=" , "+oParamas;
        }
        ctx.put("csvParamsList", csvParamsList);
        ctx.put("methodParamsList", methodParamsList);
        ctx.put("testCaseDesc", oDesc);
        ctx.put("oMethodName", oMethodName);
        ctx.put("oType", oType);
        return excue(mav, actionTpt, csv, ctx, oType, oProject, oMethodName,
                tcDir, oTcMethodName);
    }        
  • 代码(二)
/**   
    *    
    * 方法名称:excue   
    * 方法描述:  
    * 参数列表:@param mav
    * 参数列表:@param actionTpt
    * 参数列表:@param csv
    * 参数列表:@param ctx
    * 参数列表:@param oNormal
    * 参数列表:@param oProject
    * 参数列表:@param oMethodName
    * 参数列表:@param tcDir
    * 参数列表:@param oTcMethodName
    * 参数列表:@return
    * 返  回  值:boolean 
    * 创  建  人:   
    * 创建时间:2015年6月29日 下午4:11:24   
    * 修  改  人:   
    * 修改时间:2015年6月29日 下午4:11:24   
    * 修改备注:   
    * @version  
    * @throws  
    *    
    */ 
    private static boolean excue(ModelAndView mav, Template actionTpt,
            Template csv, VelocityContext ctx, String oNormal, String oProject,
            String oMethodName, String tcDir, String oTcMethodName) {
        Boolean flag = false;

        String csvPath = oProject + "\\src\\main\\resources\\TestCase-Data\\"
                + tcDir + "_" + oMethodName + "\\" + oNormal;
        createDir(csvPath);
        csvPath = csvPath + "/" + oTcMethodName + ".csv";
        String javaPath = oProject
                + "\\src\\main\\java\\com\\homs\\ats\\TestSctipts\\" + tcDir
                + "\\";
        createDir(javaPath);
        javaPath = javaPath + "/" + tcDir + "_" + oMethodName + "_" + oNormal
                + ".java";
        boolean b1 = merge(csv, ctx, csvPath);
        boolean b2 = merge(actionTpt, ctx, javaPath);
        if (b1 & b2) {
            flag = true;
        }
        mav.addObject("javaPath", javaPath);
        mav.addObject("csvPath", csvPath);
        return flag;
    }
  • 代码(三)
/**   
    *    
    * 方法名称:lowToUpperCase   
    * 方法描述:  首字母大写
    * 参数列表:@param str
    * 参数列表:@return
    * 返  回  值:String 
    * 创  建  人:ligang13009   
    * 创建时间:2015年6月29日 下午4:11:38   
    * 修  改  人:ligang13009   
    * 修改时间:2015年6月29日 下午4:11:38   
    * 修改备注:   
    * @version  
    * @throws  
    *    
    */ 
    private static String lowToUpperCase(String str) {
        return str.replaceFirst(str.substring(0, 1), str.substring(0, 1)
                .toUpperCase());
    }

    private static Boolean merge(Template template, VelocityContext ctx,
            String path) {
        PrintWriter writer = null;
        Boolean flag = false;
        try {
            writer = new PrintWriter(path);
            template.merge(ctx, writer);
            writer.flush();
            flag = true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            writer.close();
        }
        return flag;
    }

    private static void createDir(String path) {
        File file = new File(path);
        //如果文件夹不存在则创建    
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }
    }

四、模板

  • 模板(JAVA)
    模板JAVA

  • 模板(CSV)

    模板CSV

【Python】Playwright:环境配置与自动生成代码 在Web自动化和测试领域,**Playwright** 是一款功能强大且灵活的工具,它支持多种浏览器和语言,并且可以轻松处理复杂的浏览器操作和测试任务。本文将详细介绍如何在Python环境中安装和配置Playwright,掌握浏览器驱动的设置,并理解浏览器上下文和无头模式的基本概念。 阅读详情

相关推荐

基于Playwright+Pytest的Web端BDD自动化测试框架实战:POM架构·Allure/Cucumber双报告·Docker集成·测试代码自动生成

将POM从“页面级”下沉至“组件级”,是解耦与复用的第一道分水岭。传统POM常将整个封装为单一类,包含数十个定位器与方法,导致任何Header样式微调都需修改该类,违背单一职责原则。而组件化POM主张:每个可复用UI单元(如)应作为独立类存在,具备自身生命周期、状态契约与交互接口。组件类的核心设计契约有三:隔离性(不依赖父页面上下文)、自治性(自带等待与校验逻辑)、可组合性(支持嵌套与参数化实例化)。以为例,其构造函数接收page: Page与。

weixin_42578963的博客 335

如何用深度强化学习做单元测试代码生成

设计一个用强化学习来生成单元测试代码的系统需要考虑以下几个方面: Agent:强化学习算法中的智能体,它需要接收当前环境状态,根据策略选择相应的动作并执行。 State:描述当前环境状态的特征。在这个问题中,状态可以包括待测试函数的输入和输出,以及已经生成的测试用例和它们对应的覆盖率等信息。

qq_73332379的博客 845

对基于Junit的测试代码自动化生成的研究

NULL 博文链接:https://mingyang2013.iteye.com/blog/1578214

轻量级代码生成器加测试数据生成器

FieldMock(rule = MockRuleConstants . DICT , extra = "词库文件的路径") private String language;词库文件中词语的格式如下:多个词语间通过英文的逗号进行分隔。

m0_53157173的博客 1531

人工智能训练师技能等级认定四级技能考核试卷-样题4

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总时长150分钟。考核内容涵盖:1)车牌数据集规范评估与格式处理;2)车牌数据集采集代码修改与数据处理;3)房价预测数据集加载、预处理与可视化分析;4)车牌标注数据集审核与修正;5)螺丝螺母检测数据集的平台创建与共享;6)螺丝螺母数据的去噪处理与标注优化。要求考生使用Python编程、数据处理平台和标注工具完成各项任务,重点考察数据加载、格式转换、缺失值处理、数据可视化、标注审核及平台操作等技能。所有操作需在配备Python3.7和深度学习平台的W

weixin_42221934的博客 349

S32K344 Bootloader实战:一个按键实现从Boot到App的无缝跳转(附完整代码)

本文详细介绍了基于NXP S32K344微控制器的Bootloader开发实战,重点解析如何通过一个硬件按键实现从Boot到App的可靠跳转。内容涵盖内存分区规划、中断向量表重映射、外设初始状态管理等核心要素,并提供了完整的代码示例和调试技巧,适用于汽车电子和工业控制等高可靠性应用场景。

weixin_29192365的博客 308

pytest自动生成测试类 demo

pytest自动生成测试类 demo

喵酱 2208

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3700

自动化测试教程(17)生成测试报告

631行print >>sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)改成:print (sys.stderr, ‘\nTime Elapsed: %s’ %(self.stopTime-self.startTime))我们之前的教程学会了,读取csv文件的方法,还有数据驱动,discover方法的使用,然后我们下面的内容讲解一下自动化的高级,这一小节我们学习一下自动化测试的生成测试报告。

weixin_61808806的博客 1390

【gcc】跨版本兼容实战:高版本编译程序在低版本glibc环境下的部署方案

本文针对高版本gcc编译的程序在低版本glibc环境下部署的兼容性问题,提供了四种实战解决方案:静态编译的局限性、容器化部署的优雅方案、使用Devtoolset工具链的官方支持,以及最通用灵活的打包依赖SO发布方案。重点剖析了通过设置RPATH和Interpreter或使用patchelf工具,实现程序与自带库的独立部署,有效解决glibc版本鸿沟。

weixin_29237635的博客 362

2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(3卷)解析

我们先绘制题组中所有设计图我这边作图用的国内的在线作图工具。

2301_76737000的博客 5419

java自动化测试直接生成报告代码-可直接用

java自动化测试直接生成报告代码

weixin_53143083的博客 453

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

自动化测试系列之三:使用Katalon Recorder自动生成基于Selenium框架的测试代码

系列链接 自动化测试系列之一:使用SpecFlow+Selenium框架之理论介绍 自动化测试系列之二:使用SpecFlow+Selenium框架在Visual Studio上写自动化测试脚本 自动化测试系列之三:使用Katalon Recorder自动生成基于Selenium框架的测试代码 介绍 上一节说到有人提议用Selenium IDE,本人亲自试用了一下,发现不太好用,一是因为它...

wucong60的专栏 2602

ISP-全局色调映射(GTM)算法简单实现

色调映射算法,色彩空间转换LAB

notgoodenouf的博客 2241

华为OD机考双机位C卷 - 区间交集(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 区间交集

算法大师! 1137

Seed-Coder-8B-Base助力自动化测试:自动生成单元测试代码

Seed-Coder-8B-Base是一款专为代码生成优化的80亿参数基础模型,可自动分析函数逻辑并生成高质量、框架对齐的单元测试代码,提升测试覆盖率与开发效率,支持私有化部署,适用于企业级安全需求。

weixin_42613017的博客 1013

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Bot.js Pro 实现adb自动化测试脚本开发自动生成代码 防无障碍检测

不开无障碍 ,用js轻松实现自动化,js代码自动生成,高效开发自动化脚本

QQ_2874662633的博客 7812

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Screenshot-to-code与自动化测试工具集成:转换代码自动生成测试用例

开发团队常面临UI变更频繁导致测试用例维护成本激增的问题。传统工作流中,设计师交付UI截图后,开发者手动编写代码,测试人员再基于代码编写测试用例,整个流程存在大量重复劳动且易产生人为错误。Screenshot-to-code(截图转代码工具)通过AI技术将UI截图直接转换为可执行代码,而将其与自动化测试工具集成,可实现从截图到测试用例的全流程自动化,将平均开发周期缩短40%,测试覆盖率提升至95%...

gitblog_01155的博客 447

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一个不需要写代码,自动生成测试代码的UI自动化测试工具

您好,我们是苏州龙测智能科技有限公司,主要开发基于ui功能测试智能化工具的,开发人员来自美国微软三位测试博士。该工具不要写代码,通过画业务流程图代替代码,然后元素自动定位,一键自动生成测试代码和测试报告,适合测APP/WEB,适用于WINDOWS,安卓,IOS,微信小程序,H5,支持JAVA、Python语言,欢迎大家免费注册使用,https://prod.dragontesting.com ...

weixin_45530056的博客 2238

Python+Appium+Pytest自动化测试app软件,自动生成测试代码实例

Python+Appium+Pytest的自动化测试练习实例

idealner的博客 498

软件开发中基于实时代码执行结果的自动化测试用例生成:从代码执行结果中自动生成测试用例的策略与实现

基于实时代码执行结果的自动化测试用例生成技术,通过动态分析代码执行路径和状态变化,能够有效提高测试效率和覆盖率。基于实时代码执行结果的自动化测试用例生成技术,能够通过分析代码的实际执行路径和结果,自动生成高覆盖率的测试用例,显著提高测试效率和质量。与传统的基于需求或模型的测试用例生成不同,基于实时代码执行的测试用例生成技术直接从代码的实际执行结果中提取信息,动态生成测试用例。代码覆盖率是衡量测试质量的关键指标。通过分析代码覆盖率数据,可以识别出未被测试的代码路径,进而生成针对性的测试用例。

jie_kou的博客 573

【工具引入】uiautomatorviewer 查找元素后自动生成代码

缘起 公司部门调整PC部门和无线部门合并,原本负责主站PC端自动化的同事需要马上上手安卓,IOS自动化。对于初次接触移动端的测试者来说,跨度还是有点大的。加之人员有些变动,不得不搞个工具降低学习成本,马上产出。公司app页面上有动态加载的元素,每次用Appium自带的工具抓取Xpath时,总是报错。为了降低自动化同学的学习成本和解决无法的问题,就对uiautomatorviewer ...

weixin_30752699的博客 261

不用写一行代码!Python最强自动化神器!_python代码自动生成器

下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取**

2501_90424610的博客 1068

AI 大模型重塑软件开发:从代码自动生成到智能测试

AI 大模型正在深刻地改变软件开发的各个环节,从代码自动生成到智能测试,带来了前所未有的机遇和挑战。开发人员应积极拥抱 AI 技术,不断提升自身能力,适应新的开发模式和流程。未来,AI 将继续发挥重要作用,推动软件开发向更高水平迈进。通过不断探索和创新,我们有理由相信,AI 将为软件开发带来更加美好的未来。

2301_81482480的博客 1250

高效自动化测试平台开发实战教程

高效自动化测试平台开发实战教程 1. 项目介绍 automation_test 是一个开源的自动化测试平台项目,旨在帮助开发者实现高效的自动化测试。该项目包含了书籍《高效自动化测试平台开发实战》中的源码,作为书籍的补充,作者会不定期更新代码,增加以及实现更多的功能。 项目的主要功能模块包括: 配置管理:core/config 测试资源管理:core/resource 测试结果报告管理:core/...

gitblog_00034的博客 503
上一篇: 举例说明一个业务的测试分析的过程思路
下一篇: 测试团队的管理(一)
子木清风
博客等级 码龄20年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值