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

自动化测试用例设计平台(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

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

pytest自动生成测试类 demo

pytest自动生成测试类 demo

喵酱 2208

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

自动化测试教程(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

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 979

weblogic等保测评操作过程

weblogic网络安全等级测评保护操作

qq_48257021的博客 2761

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

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

weixin_53143083的博客 453

机器学习算法 —— LightGBM

本次我们选择英雄联盟数据集进行LightGBM的场景体验。英雄联盟是2009年美国拳头游戏开发的MOBA竞技网游,在每局比赛中蓝队与红队在同一个地图进行作战,游戏的目标是破坏敌方队伍的防御塔,进而摧毁敌方的水晶枢纽,拿下比赛的胜利。现在共有9881场英雄联盟韩服钻石段位以上的排位比赛数据,数据提供了在十分钟时的游戏状态,包括击杀数、死亡数、金币数量、经验值、等级……参考项目:机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测。

ZShiJ的博客 708

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

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

wucong60的专栏 2602

手把手教你学BSP(11.3)--BSP实例:基于Raspberry Pi 4 Model B的Linux BSP开发实例

通过以上步骤,我们完成了一个基于Raspberry Pi 4 Model B的Linux BSP开发过程,包括硬件初始化、设备驱动编写、Bootloader配置、内核配置和编译,以及最终映像的生成。每个步骤都非常重要,确保每一步都正确无误才能使整个系统正常运行。

MHD0815的博客 1012

JAVA:Spring Boot3 集成 ShardingSphere 实现数据分库分表

本文介绍了基于Spring Boot和ShardingSphere-JDBC实现分库分表与读写分离的解决方案。针对高并发、大数据量场景下单库单表的性能瓶颈,通过配置ShardingSphere-JDBC实现:1)订单表按user_id和order_id分片到两个库和两张表;2)读写分离,写操作路由至主库,读操作在从库间负载均衡。方案使用Druid连接池优化,支持业务透明,无需修改SQL。

木头 660

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

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

weixin_42613017的博客 1013

Devexpress16.2.6破解工具

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

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

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

QQ_2874662633的博客 7812

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

gitblog_01155的博客 447

一个不需要写代码,自动生成测试代码的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、付费专栏及课程。

余额充值