当前位置:   article > 正文

jmeter接口自动化批量执行工具ANT使用及报告导出_jmeter脚本使用ant集体运行如何操作

jmeter脚本使用ant集体运行如何操作

下载地址:

进入Apache官网上http://ant.apache.org/bindownload.cgi下载,解压即可

环境变量:

在系统变量中,新建变量名“ANT_HOME”,值为你解压的ant安装路径,点击确定保存

在系统变量中编辑变量PATH,在变量值中添加“%ANT_HOME%\bin”,点击确定保存

在CMD窗口中输入ant -version,显示版本号即为成功。

使用:

文件目录结构

jmeter里面新建一个名字叫JmeterTest的目录类似这样

JmeterTest下的目录 

  1. │─ test //项目模块目录
  2. │ │─ html //生成报告的目录
  3. │ │─ jtl //数据目录
  4. │ │─ build.xml
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <project name="自动化标题" default="all" >
  3. <tstamp>
  4. <format property="time" pattern="yyyyMMddhhmmss" />
  5. </tstamp>
  6. <!-- 需要改成自己本地的 Jmeter 目录-->
  7. <property name="jmeter.home" value="E:\jenkins+jmeter+ANT\jmeter" />
  8. <!-- jmeter生成jtl格式的结果报告的路径-->
  9. <property name="jmeter.result.jtl.dir" value="${jmeter.home}/JmeterTest/resultLog-PM/jtl" />
  10. <!-- jmeter生成html格式的结果报告的路径-->
  11. <property name="jmeter.result.html.dir" value="${jmeter.home}/JmeterTest/resultLog-PM/html" />
  12. <!-- jmeter生成html格式的结果报告的前缀-->
  13. <property name="ReportName" value="SmokeReport" />
  14. <!-- jmeter生成的结果文件的名称 -->
  15. <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/result.jtl" />
  16. <!-- jmeter生成的html结果文件的名称 -->
  17. <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
  18. <target name="all">
  19. <antcall target="run" />
  20. <antcall target="report" />
  21. </target>
  22. <!---指定ant-jmeter-1.1.1.jar 的位置-->
  23. <path id="jmeter.classpath">
  24. <fileset dir="${jmeter.home}\extras">
  25. <include name="ant-jmeter*.jar"/>
  26. </fileset>
  27. </path>
  28. <target name="run">
  29. <taskdef
  30. name="jmeter"
  31. classpathref="jmeter.classpath"
  32. classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
  33. <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
  34. <!-- 声明要运行的脚本。“.jmx”包含此目录下的所有jmeter脚本-->
  35. <!-- <testplans dir="D:\yangyb\星印v1.0.01版本" includes="星印扫码.jmx" /> -->
  36. <testplans dir="C:\Users\Administrator\Desktop\接口脚本\12-13号以后\脚本--jemter脚本" includes="*.jmx" />
  37. <!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义。-->
  38. <property name="jmeter.save.saveservice.output_format" value="xml"/>
  39. <property name="thread.num" value="${tn}" />
  40. <property name="loop.num" value="${ln}" />
  41. </jmeter>
  42. </target>
  43. <path id="xslt.classpath">
  44. <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
  45. <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
  46. </path>
  47. <target name="report">
  48. <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
  49. <xslt
  50. classpathref="xslt.classpath"
  51. force="true"
  52. in="${jmeter.result.jtlName}"
  53. out="${jmeter.result.htmlName}"
  54. style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" >
  55. <!-- style="D:/Jmeter/jmeter.results.shanhe.me.json.xsl" > 填写模板的路径位置填写模板的路径位置填写模板的路径位置填写模板的路径位置 -->
  56. <param name="dateReport" expression="${report.datestamp}"/>
  57. </xslt>
  58. <!--jmeter-results-detail-report_21.xsl D:/yangyb/Ant+jmeter/jmeter.results.shanhe.me.xsl-->
  59. <!--因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以需要收到拷贝-->
  60. <copy todir="${jmeter.result.html.dir}">
  61. <fileset dir="${jmeter.home}/extras">
  62. <include name="collapse.png" />
  63. <include name="expand.png"/>
  64. </fileset>
  65. </copy>
  66. <!---发送邮件-->
  67. </target>
  68. </project>

 

类似于这样,上面的文件是build.xml的文件内容(记得修改为自己的路径)。

 运行:

在build.xml文件的目录输入框内输入ant点击回车即可等待报告(html目录)出现。如下图所示

 报告:

痛点: 

ant生成的报告,没有筛选功能,如果有接口失败了,需要排查的时候只能一个一个去扒拉,扒拉的我眼都累了,所以咱们直接写一个小脚本把错误的接口名称拿出来放到xlsx表格中。

代码逻辑:

寻找同级目录下文件名后缀是.html的文件,读取他们的数据,并找到class等于failure的div标签....具体逻辑读一下代码吧,挺简单的,最后取出他的标题。写入到xlsx中。

代码如下:

  1. import sys
  2. from time import sleep
  3. from bs4 import BeautifulSoup
  4. import openpyxl
  5. import os
  6. import glob
  7. # 获取当前文件夹路径
  8. # current_dir = os.path.dirname(os.path.realpath(sys.executable))
  9. #py运行时要使用__file__
  10. current_dir = os.path.dirname(os.path.abspath(__file__))
  11. # 使用 glob 模块查找所有的 HTML 文件
  12. html_files = glob.glob(current_dir + "/*.html")
  13. #定义一个空字符串
  14. file_name = ''
  15. #定义写入的行数
  16. dxc = 1
  17. # 创建一个新的workbook对象
  18. workbook = openpyxl.Workbook()
  19. # 选择第一个工作簿
  20. worksheet = workbook.active
  21. # 遍历所有 HTML 文件并打印它们的文件名
  22. for file_path in html_files:
  23. file_name = os.path.basename(file_path)
  24. print('你要读取的文件是:{}'.format(file_name),'\n')
  25. # 读取HTML文件
  26. with open(file_name, 'r',encoding='utf-8') as f:
  27. html_data = f.read()
  28. # 解析HTML文件
  29. soup = BeautifulSoup(html_data, 'html.parser')
  30. # 查找所有class属性为'failure'的<div>元素
  31. failure_div_elements = soup.find_all('div', {'class': 'failure'})
  32. # 遍历所有failure_div元素
  33. for failure_div_element in failure_div_elements:
  34. # 获取当前failure_div元素所在的父元素
  35. parent_li_element = failure_div_element.parent
  36. # 如果父元素是<li>元素
  37. if parent_li_element.name == 'li':
  38. # 查找相邻的class属性为'navigation'的前一个<li>元素
  39. navigation_li_element = parent_li_element.find_previous_sibling('li', {'class': 'navigation'})
  40. # 如果找到了class属性为'navigation'的<li>元素
  41. if navigation_li_element is not None:
  42. # 取出该元素的文本
  43. navigation_text = navigation_li_element.text.strip()
  44. print(navigation_text)
  45. # 写入数据
  46. worksheet.cell(row=dxc, column=1, value=navigation_text)
  47. dxc += 1
  48. # 保存workbook
  49. workbook.save("data.xlsx")
  50. print('\n','写入成功,生成:data.xlsx 3秒后关闭该窗口,可手动关闭')
  51. sleep(3)

注意点,打包成exe小工具时,记得更改下面

py跑的时候选择第二条,比如这样

  1. # 获取当前文件夹路径
  2. # current_dir = os.path.dirname(os.path.realpath(sys.executable))
  3. #py运行时要使用__file__
  4. current_dir = os.path.dirname(os.path.abspath(__file__))

打包exe的时候选第一条,比如这样

  1. # 获取当前文件夹路径
  2. current_dir = os.path.dirname(os.path.realpath(sys.executable))
  3. #py运行时要使用__file__
  4. # current_dir = os.path.dirname(os.path.abspath(__file__))

运行结束之后你就会得到一个这样的文件。

就可以分析错误的接口了。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/539892
推荐阅读
相关标签
  

闽ICP备14008679号