美文网首页jmeter
不需要写代码的自动化测试框架(二)

不需要写代码的自动化测试框架(二)

作者: 星空_Sparkle | 来源:发表于2021-03-22 16:05 被阅读0次

在上一篇文章中,我们已经学会了如何进行接口自动化框架的搭建,自动化测试的工作也能够顺利开展起来了,但是呢,在实际项目中使用起来,还是缺少了一些东西,体验不太好,比如:
1、为了方便管理,多个项目的脚本存放在不同的目录下面,这时候要执行所有的自动化用例怎么办?
2、往往我们需要一个概要的测试报告来关心整体的自动化测试情况,还需要一个详情的测试报告来定位自动化测试失败的原因,这时候怎么生成两种不同类型得测试报告?
3、怎么把上面的测试报告集成到Jenkins中,方便查看每次构建的结果?
4、随着自动化次数的执行,大家会发现测试报告目录里面的文件越来越多、越来越大,那么怎么保证每次都是最新的测试报告结果呢?

这篇文章就来为大家一 一解决这些疑问
一、执行多个目录下的自动化用例
进入Jmeter下的build目录,修改build.xml文件,找到下面的代码行

<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:\apache-jmeter-5.1.1\script_smoke" includes="*.jmx" />
        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>
</target>

假如还有脚本存放在"D:\apache-jmeter-5.1.1\script_project"下面,那么在以上代码中再添加一行需要执行脚本的地址即可

<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:\apache-jmeter-5.1.1\script_smoke" includes="*.jmx" />
        <testplans dir="D:\apache-jmeter-5.1.1\script_project" includes="*.jmx" />
        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>
</target>

二、测试概要报告和详情报告配置
先上两张图片,让我们直观的感受下概要报告和详情报告的区别

image.png image.png
从上面两张图可以看出,概要报告可以很快速的看出所有自动化测试用例的执行情况,详细报告可以很清晰的描述接口的请求地址、请求参数、响应参数等信息,在用例执行失败的时候,可以很方便的定位问题
接下来我们看下怎么配置才能生成这两种不同类型的测试报告
1、首先进入Jmeter的安装目录,在extras目录下面找下是否存在jmeter-results-detail-report_21.xsl这个文件
image.png
如果没有这个文件,在网上下载一个放在extras目录即可

2、进入Jmeter下的build目录,修改build.xml文件,找到下面的代码

    <!-- 生成的报告的前缀-->  
<property name="ReportName" value="SmokeReport" />
<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" />

然后在这行代码后面加上一个新的属性值,如下所示

<property name="detail" value="_detail" />
<property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />
image.png

3、继续在build.xml文件中找到下面的代码,添加一个报告标签

    <target name="report">
    <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
   <xslt 
          classpathref="xslt.classpath"
          force="true"
          in="${jmeter.result.jtlNamedetail}"
          out="${jmeter.result.htmlNamedetail}"
          style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl">
          <param name="dateReport" expression="${report.datestamp}"/>
   </xslt>

在上面这行代码下面,添加"详细报告"的标签内容,如下

    <xslt 
          classpathref="xslt.classpath"
          force="true"
          in="${jmeter.result.jtlName}"
          out="${jmeter.result.htmlName}"
          style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
          <param name="dateReport" expression="${report.datestamp}"/>
   </xslt>

添加后的效果如下图所示


image.png

4、"详细报告"的标签添加完成后,继续将目录切换到Jmeter的bin目录下,打开jmeter.properties文件,将以下属性全部放开并修改如下

    jmeter.save.saveservice.data_type=true
    jmeter.save.saveservice.label=true
    jmeter.save.saveservice.response_code=true
    jmeter.save.saveservice.response_data=true
    jmeter.save.saveservice.response_data.on_error=false
    jmeter.save.saveservice.response_message=true
    jmeter.save.saveservice.successful=true
    jmeter.save.saveservice.thread_name=true
    jmeter.save.saveservice.time=true
    jmeter.save.saveservice.subresults=true
    jmeter.save.saveservice.assertions=true
    jmeter.save.saveservice.latency=true
    jmeter.save.saveservice.connect_time=true
    jmeter.save.saveservice.samplerData=false
    jmeter.save.saveservice.responseHeaders=false
    jmeter.save.saveservice.requestHeaders=false
    jmeter.save.saveservice.encoding=false
    jmeter.save.saveservice.bytes=true
    jmeter.save.saveservice.url=true
    jmeter.save.saveservice.filename=false
    jmeter.save.saveservice.hostname=false
    jmeter.save.saveservice.thread_counts=true
    jmeter.save.saveservice.sample_count=false
    jmeter.save.saveservice.idle_time=true

5、最后,重启一下Jmeter(在CMD命令行中输入命令:java -jar jenkins.war),让之前配置的设置全部生效,这样,再次执行自动化脚本,就可以生成两种类型的测试报告了

三、报告集成 Jenkins的配置
OK,到目前为止,我们已经可以成功的生成"概要报告"和"详细报告"了,那么,怎么让这两种报告在Jenkins上体现出来,我们接下来继续操作
1、要在Jenkins上面查看报告,我们首先需要在Jenkins上安装这么一个插件-------HTML Publisher plugin,插件的安装方式这里就不再赘述了,在上一篇文章(不需要写代码的自动化测试框架(一))中已经提到,不清楚的,可以去看看之前的文章
2、进入Jenkins,点击你自己创建的自动化测试工程,选择Configure(配置)

image.png
找到Post-build Actions项,在Add post-build action中选择Push HTML reports
image.png
最后修改下参数值,将报告存放的位置填写正确
image.png
到这里,所有的配置都已完成,我们试着来构建一下我们的自动化工程,构建成功后点击工程左边目录的HTML Report查看报告
image.png
生成的报告如下所示,包含了"概要报告"和"详细报告",大功告成
image.png
四、冗余测试报告请理
随着自动化测试的执行,越来越多的测试报告生成,会产生很多测试垃圾,磁盘空间占用量越来越大,这些都不是我们希望看到的,如图所示
image.png
我们希望能够每次都看见最新的测试报告,在自动化构建之前,将以往的测试报告删除,那么按照这个思路,我们来看具体的操作实现方式
1、我这边会使用python语言来删除指定目录下的所有文件,所以,先将删除文件的脚本写好,如下
    import os
    import glob
    path=r'D:\apache-jmeter-5.1.1\report_smoke'#测试报告的存放路径
    def delfile(path):
        filenames=glob.glob(path+r'\*')
        for filename in filenames:
            try:
                os.remove(filename)
            except:
                try:
                    os.rmdir(filename)
                except:
                    defile(filename)
                    os.rmdir(filename)
    delfile(path)

2、进入Jenkins首页面板,依次点击Manage Jenkins------->Manage Plugins--------->Avaiable,在搜索框中输入python,将这个插件安装好
3、在Jenkins中点击你自己创建的自动化测试工程,选择Configure(配置),在构建步骤中增加一个Execute P ython Script,用来执行步骤1中的脚本(这一步一定要特别注意一点:执行python脚本删除测试报告必须放在构建的第一步,否则后面会出问题,导致构建失败,因为我们的目的是在构建前删除测试报告,如果放在ant运行build文件之后,则后面在Jenkins上面集成报告就会因为找不到报告而报错)

image.png
这样设置完成,点击保存即可,再次运行自动化脚本,你会发现每次都会产生最新的测试报告
image.png

相关文章

  • Python+Pytest+Excel+Jenkins+Allu

    接口框架规划 接口测试框架对比 为什么要写代码实现接口自动化框架 自动化框架介绍 可以理解为工具的集合,把日常所需...

  • 不需要写代码的自动化测试框架(二)

    在上一篇文章中,我们已经学会了如何进行接口自动化框架的搭建,自动化测试的工作也能够顺利开展起来了,但是呢,在实际项...

  • 小白必读-所有测试大咖都知道的自动化知识

    目录: 一、自动化测试与测试自动化 二、什么是自动化测试框架 三、自动化测试框架架构与组件 四、自动化测试框架的类...

  • 不需要写代码的自动化测试框架(一)

    之前写过一篇关于接口自动化框架设计原理和设计流程的文章,该文章中自动化的实现主要是基于代码的方式来实现的,对于编程...

  • 什么样的测试框架更合适呢?

    1.自动化测试框架 测试框架是一组自动化测试规范、组织能力、基础代码以及测试思想、惯例的集合。 框架的好处在于减少...

  • 总结(二)

    一. 自动化测试两种方式 1. 代码驱动测试 普遍使用测试框架来进行单元测试。 2. 图形用户接口测试 测试框架产...

  • python自动化测试,编写unittest框架运行代码的时候不

    在做python自动化测试,编写unittest框架运行代码的时候不执行 1、问题出在哪? 在编写自动化测试脚本的...

  • JUnit单元测试

    1.测试分类: (1).黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。(2).白盒测试:需要写代码...

  • 5.3自动化测试框架

    5.3.1接口自动化测试框架 5.3.2 UI自动化测试框架

  • Junit单元测试

    测试分类: 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 白盒测试:需要写代码的。关注程序具体的...

网友评论

    本文标题:不需要写代码的自动化测试框架(二)

    本文链接:https://www.haomeiwen.com/subject/zajdcltx.html