[Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件

时间:2022-09-22 16:39:03

问题1:怎样通过批处理调用java代码?

问题2:怎样通过java从CSV文件获取到用户名和密码存入变量?

问题3:怎样将获取到的用户名和密码组合成字符串,写入外部批处理文件?

问题4:怎样在批处理文件调用ANT的时候,将用户名和密码作为参数传进去?

问题5:怎样通过java调用.bat文件?

问题6:怎样保证java在调用.bat的时候不出现闪退?

问题7:怎样让java在执行.bat的时候,.bat的控制台输出日志?

问题8:怎样让java执行.bat完成之后不会有残余的cmd.exe进程?

/*************CIM_US_TP_SmokeTest.bat*****************/

@echo off
color 0a echo autotest beginning,Please Wait... ... set AutoPath=%~dp0
%AutoPath:~0,2%
pushd %AutoPath% cd /d %AutoPath%
set JmeterPath=..\..\..\
echo AutoPath=%AutoPath%
echo JmeterPath=%JmeterPath% forfiles /p %AutoPath%Result /m *.jtl -d -7 /c "cmd /c del /f @path">nul 2>nul
forfiles /p %JmeterPath%extras /m *.html -d -7 /c "cmd /c del /f @path">nul 2>nul javac getUserAccount_US_TP_SmokeTest.java
java getUserAccount_US_TP_SmokeTest exit

/*************CIM_US_TP_SmokeTest.bat*****************/

/************getUserAccount_US_TP_SmokeTest.java************/

import java.io.*;

public class getUserAccount_US_TP_SmokeTest {

    public static String AutomationPath = System.getProperty("user.dir");
public static void main( String[] args ) throws InterruptedException { System.out.println( "AutomationPath:" + AutomationPath );
getUserAccount_US_TP_SmokeTest generator = new getUserAccount_US_TP_SmokeTest(); String userName = generator.getUserName();
// System.out.println( "userName:" + userName ); String password = generator.getPassWord();
// System.out.println( "password:" + password ); generator.runAnt( userName, password );
} private void runAnt( String userName, String password ) throws InterruptedException {
Process p;
String cmd = "ant -f "+AutomationPath+"\\CIM_US_TP_SmokeTest.xml"+" -DuserName=" + userName + " -Dpassword=" + password;
String path=AutomationPath+"\\cmd_US_TP_Smoke.bat";
fileWrite(cmd,path);
try {
System.out.println( "Execute in command line:: " + path );
p =Runtime.getRuntime().exec(path);
//取得命令结果的输出流
InputStream fis=p.getInputStream();
//用一个读输出流类去读
InputStreamReader isr=new InputStreamReader(fis);
//用缓冲器读行
BufferedReader br=new BufferedReader(isr);
String line=null;
//直到读完为止
while((line=br.readLine())!=null) {
System.out.println(line);
}
Thread.sleep(10000);
System.out.println( "Execute cmd over. ");
} catch( IOException e ) {
e.printStackTrace();
} } public void fileWrite(String cmd,String path){ File file = new File(path);
try {
if(!file.exists()){
file.createNewFile();
}
FileWriter fw=new FileWriter(file,false);
PrintWriter pw=new PrintWriter(fw);
pw.println(cmd);
pw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public String getUserName() {
String userName="";
try {
BufferedReader reader = new BufferedReader(new FileReader(AutomationPath+"\\Data\\AccountInfo\\AutoTestAccount_Office_US_TP.csv"));//换成你的文件名
reader.readLine();//第一行,为标题信息
String line=reader.readLine();//读取第二行
reader.close();
String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分 userName = item[0];//这就是你要的数据了
//System.out.println("Get Login Email: "+userName);
} catch (Exception e) {
e.printStackTrace();
}
return userName;
} public String getPassWord() {
String password="";
try {
BufferedReader reader = new BufferedReader(new FileReader(AutomationPath+"\\Data\\AccountInfo\\AutoTestAccount_Office_US_TP.csv"));//换成你的文件名
reader.readLine();//第一行,为标题信息
String line=reader.readLine();//读取第二行
reader.close();
String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分 password= item[1];//这就是你要的数据了
//System.out.println("Get Login Password: "+password);
} catch (Exception e) {
e.printStackTrace();
}
return password;
}
}

/************getUserAccount_US_TP_SmokeTest.java************/

/************CIM_US_TP_SmokeTest.xml**********************/

<?xml version="1.0"?>
<project name="morningstar" default="all" basedir=".\">
    <property name="JMeter.home" value=".\..\..\..\"/>
  
 <property name="mail_to"
value="lemon.li@morningstar.com,na.gong@morningstar.com,sandy.zhou@morningstar.com,jenny.zhang@morningstar.com"/>
    <property name="to_me_only" value="jenny.zhang@morningstar.com"/>
    <property name="ReportName" value="CIMUSSmokeTestReport"/>
    <property name="ComputerName" value="SZOTWIN2K801"/>
    <property name="LoginEmail" value="${userName}"/>
    <echo>${userName}</echo>
    <property name="LoginPassword" value="${password}"/>
    <echo>${password}</echo>
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm"/>
    </tstamp>
    <target name="all" >
        <antcall target="runCWP" />
        <antcall target="runUDF" />
        <antcall target="transferAll"/>
        <antcall target="transferFailure"/>
        <antcall target="sendEmail"/>
    </target>
    <target name="runCWP" depends="">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
        <jmeter jmeterhome="${JMeter.home}" resultlog="${basedir}/Result/${ReportName}${time}.jtl">
            <testplans dir="${basedir}\Script\SmokeTest" includes="CIM_US_TP_CWP_SmokeTest.jmx"/>
        </jmeter>
    </target>
    <target name="runUDF" depends="">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
        <jmeter jmeterhome="${JMeter.home}" resultlog="${basedir}/Result/${ReportName}${time}.jtl">
            <testplans dir="${basedir}\Script\SmokeTest" includes="CIM_US_TP_UDF_SmokeTest.jmx"/>
        </jmeter>
    </target>
    <target name = "transferAll" depends = "">
        <xslt in="${basedir}/Result/${ReportName}${time}.jtl"
            out="${JMeter.home}/extras/${ReportName}${time}.html"
            style="${JMeter.home}/extras/JMeter-results-detail-report_21.xsl"/>
    </target>
    <target name = "transferFailure" depends = "">
        <xslt in="${basedir}/Result/${ReportName}${time}.jtl"
            out="${JMeter.home}/extras/${ReportName}${time}_failure.html"
            style="${JMeter.home}/extras/JMeter-results-detail-report_21_failure.xsl"/>
    </target>
    <target name="sendEmail">
  
     <mail mailhost="internalmail.morningstar.com" mailport="25"
subject="CIM US Automation Test Report(Smoke Test)!"
messagefile="${JMeter.home}/extras/${ReportName}${time}_failure.html"
messagemimetype="text/html" tolist="${mail_to}">
            <from address="jenny.zhang@morningstar.com"/>
            <!-- <fileset dir="${JMeter.home}/extras/">
                <include name="${ReportName}${time}.html"/>
                <include name="expand.png"/>
            </fileset> -->
            <!-- <message>This email was sent automatically by ANT. &lt;br /&gt;
            Please check the automation test report by the link below.  &lt;br /&gt;
            If there are any questions, please contact with Jenny Zhang. Thank you! &lt;br /&gt;&lt;br /&gt;
            http://${ComputerName}/${ReportName}${time}.html
            </message> -->
        </mail>
    </target>
</project>

/************CIM_US_TP_SmokeTest.xml**********************/

[Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件的更多相关文章

  1. java的io操作&lpar;将字符串写入到txt文件中&rpar;

    import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java ...

  2. window 开机重启运行bat文件(运行java的jar包)

    1:直接打开电脑的目录:(记得勾选查看隐藏项目) C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,在里面新建start.bat ...

  3. 使用java对执行命令行 或 执行bat文件

    public class Hellotianhao { public static void main(String[] args) throws Exception{ System.out.prin ...

  4. java web实现在cookie中保存用户名和密码,用户自动登入

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. 【jmeter】使用csv文件生成用户名和密码列表

    介绍 在[jmeter]使用jmeter进行测试-示例 中介绍了jmeter的基本使用,本文将介绍如何使用csv文件生成多个用户名. 应用场景 实际测试中,经常需要模拟多个用户进行负载测试,而用户名和 ...

  6. 【Jmeter】如何通过文件导入方式对用户名和密码进行参数化设置

    JMeter 参数化 注意:param和data body只能用一个.所有任何一个里面有内容,切换都会报错,这不是问题,jmeter是这么设计的 方法一:通过添加CSV Data Set Config ...

  7. Python数据分析之Pandas读写外部数据文件

    1 引言 数据分析.数据挖掘.可视化是Python的众多强项之一,但无论是这几项中的哪一项都必须以数据作为基础,数据通常都存储在外部文件中,例如txt.csv.excel.数据库.本篇中,我们来捋一捋 ...

  8. AJAX载入外部JS文件到页面并让其执行的方法(附源码)

    一. 向HTML页面中动态添加JS文件(从外部载入)并让其执行的两种方法 1.只适用于IE浏览器的简单方法: 先在文档中放置一张JS"空床"并添加ID:<script id= ...

  9. Java执行批处理&period;bat文件(有问题???求高手帮忙解答!!!)

                           Java执行批处理.bat文件(有问题???求高手帮忙解答!!!) 在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下 ...

随机推荐

  1. FP并行算法的几个相关方向

    1 集群系统中的 FP-tree 并行算法(many for one一个任务 还是 云计算one for many多个任务?) 计算机集群系统利用网络把一组具有高性能的工作站或者 PC 机按一定的结构 ...

  2. Apache&plus;PHP&plus;Mysql OS X 10&period;9 Mavericks WEB 服务器配置

    在 OS X 10.9 上基本没有什么特别大的差异. 为了新系统用户方便小弟重新整理了一下,因为在 OSX 10.9 下的 Server 软件进行了不少升级,有些步骤不太一样了. 硬件方面就不在详细描 ...

  3. Xdebug开源PHP程序调试器

    Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况. 本文为大家讲解的是在linux下xdebug的安装和配置方法,感兴趣的同学参考下 ...

  4. 黄聪:Discuz&excl;X3&period;2 如何配置超级版主或者某些管理员,允许管理用户组或者权限

    点击后台-->站长-->后台管理团队-->新增用户(用户名)用户管理员即可

  5. Android Material Design&colon;基于CoordinatorLayout实现向上滚动导航条ToolBar滚出、向下滚动导航条滚出

    activity_main.xml: <android.support.design.widget.CoordinatorLayout xmlns:android="http://sc ...

  6. UOJ &num;11&period; 【UTR &num;1】ydc的大树

    题目描述: ydc有一棵n个结点的黑白相间的大树,从1到n编号. 这棵黑白树中有m个黑点,其它都是白点. 对于一个黑点我们定义他的好朋友为离他最远的黑点.如果有多个黑点离它最远那么都是它的好朋友.两点 ...

  7. asp&period;net core系列 26 EF模型配置&lpar;实体关系&rpar;

    一.概述 EF实体关系定义了两个实体互相关联起来(主体实体和依赖实体的关系,对应数据库中主表和子表关系). 在关系型数据库中,这种表示是通过外键约束来体现.本篇主要讲一对多的关系.先了解下描述关系的术 ...

  8. I-think-3

    一段很有哲理的话,与大家分享一下: 时光匆匆, 有些东西很重要,有些东西不重要, 有些东西已经不再重要,有些东西还是很重要. 宏观地看待人生,大学文凭只是一种达到目标的途径,而并非是唯一. 主要坚定自 ...

  9. 每日一练ACM 2019&period;0417

    Problem Description 给定两个正整数,计算这两个数的最小公倍数.   Input 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.   Output 对于每个测试 ...

  10. H5图片压缩上传

    1.所用到技术 HTML5 API:filereader.canvas 以及 formdata 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.本次使用到的FileRea ...