zoukankan      html  css  js  c++  java
  • csv+jenkins+ant测试接口

    1、文件目录

    jmeter_test

      case  用于存放case,csv或者txt格式,jmeter能读取的

      result_log  用于存放报告

        html  存放html报告

        jtl  存放jtl文件

      script  用于保存jemter的jmx文件,jmeter执行后,就保存在这里

      bulid.xml  ant调用文件

    2、用例设计

      

      用例格式:

      2.1第一行都是字段,方便jemter调用

        No  用例编号

        name  测试的名称(测试内容)

        host  接口地址的host

        url  接口地址的路径

        method  请求的方法类型

        data  请求的数据

        check_point  检查点

        is_run  是否可运行

    3、jmeter调用csv中的参数

      

      3.1从csv文件中读取数据,测试计划中,添加 - 配置元件 - CSV Data Set Config

        

        CSV Data Set Config各个参数的简要说明:

        Filename:csv文件和或txt文件路径,可以用相对路径

        File Encoding:文件编码格式设置

        Varible Names:定义文本文件中的参数名,可设置多个参数,参数之间逗号分隔,定义后可在脚本中引用,引用方式${name}

        Delimiter(use " " for tab):指定参数分隔符号

        Allow Quoated data:是否允许引用数据

        Recycle on EOF:是否循环取值

        Stop Thread on EOF:当Recycle on EOF为false并且Stop Thread on EOF为ture,则读完csv文件中的记录后,停止运行

        Sharing Mode:设置是否线程共享

    这里设置的是:可以引用数据,读完CSV文件中的记录后,停止运行

        Allow Quoated data:True

        Recycle on EOF:False

        Stop Thread on EOF:True

      3.2设置线程

        

        理解:常规意义上的线程组,即虚拟用户组

        循环次数:读取数据循环,勾选永远,一直循环,否则只读取第一行数据,或者手动填写数据的行数

      3.3、If控制器

          作用:根据给定表达式的值决定是否执行该节点下的子节点

        

        

        参数:

          Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)

          Evaluate for all children:如果选中这一项,在每一个节点执行前都会计算表达式

        "${is_run}"=="YES"

        判断csv中的is_run字段的值,是否和YES相同,相同则为真,执行,否则为假,不执行

      3.4、判断是否为get请求

        if判断

        

      3.5、添加请求

        

      可以看到,值都是从csv中读取的

      3.6添加响应

        

        匹配的内容,读取的是csv中check_point字段

      3.7、增加查看结果树

        在想要的位置,增加查看结果树

        

    4、保存好后,点击运行

        

    5、和ant结合起来,上一篇文章已经有此内容

        HTML文件中,修改到指定的case文件

        即:includes=“”字段的值

        <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 --> 
        <testplans dir="D:jmeter_testscript" includes="laohuangli_csv.jmx" />
    <?xml version="1.0" encoding="utf-8"?>
    <project name="jmeter_test" default="all" basedir=".">
        <tstamp>
            <format property="time" pattern="yyyyMMddhhmm" />
        </tstamp>
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="D:jmeterapache-jmeter-3.0apache-jmeter-3.0" />
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="D:jmeter_test
    esult_logjtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="D:jmeter_test
    esult_loghtml" />
        <!-- 生成的报告的前缀 -->
        <property name="ReportName" value="接口测试测试报告" />
        <!-- 生成各种文件-->
        <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
        <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    
        <!-- 解决不显示 Min/Max 统计时间的问题。同时把下面的两个jar文件copy到ant的lib包中-->
        <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar"/>
        </path>
    
        <target name="all">
            <antcall target="test" />
            <antcall target="report" />
        </target>
        <target name="test">
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
            <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
                <testplans dir="D:jmeter_testscript" includes="laohuangli_csv.jmx" />
            </jmeter>
        </target>
        
        <target name="report">
            <!-- 解决不显示时间的问题-->
            <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
            <!-- 选择报告模板-->
            <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21s.xsl" >
            <param name="dateReport" expression="${report.datestamp}"/>
            </xslt>
            <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
            <copy todir="${jmeter.result.html.dir}">
                <fileset dir="${jmeter.home}/extras">
                    <include name="collapse.png" />
                    <include name="expand.png" />
                </fileset>
            </copy>
        </target>
    </project>

        ant执行

        

    6、结果

        结果在HTML文件中

        

    7、和jenkins结合起来

      上一篇中已经介绍,构建新job,增加触发器,发送邮件

  • 相关阅读:
    在java中写出完美的单例模式
    Zookeeper的功能以及工作原理
    java面试题之int和Integer的区别
    ActiveMQ面试专题
    并发队列ConcurrentLinkedQueue、阻塞队列AraayBlockingQueue、阻塞队列LinkedBlockingQueue 区别和使用场景总结
    Python requests 指定网卡ip发出请求
    Python 打包发布exe可执行文件
    Power BI 图标设置
    python git 基础操作
    C#通过SFTP协议操作文件
  • 原文地址:https://www.cnblogs.com/R-bear/p/7462899.html
Copyright © 2011-2022 走看看