草庐IT

Jenkins+Newman+Postman生成接口自动化测试报告

tyh_keepRunning 2023-11-01 原文

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。

文章目录

1. Jenkins的安装与配置

:此安装步骤基于Win10 ,x64环境。

前提:本地需安装好JDK。JDK安装配置教程,可参考:https://blog.csdn.net/moxiaofei1208/article/details/80988626

1.1 安装jenkins

  1. 下载Jenkins,地址:https://www.jenkins.io/download/

  2. 双击下载后的jenkins.msi文件,弹出安全警告弹窗,点击“运行”即可;

  3. 安装欢迎界面,点击Next;

  4. 安装路径设置,可自定义安装路径,再点击Next;

  5. 服务登录凭据设置,有两种方式:
    ①我这里选择"Run service as LocalSystem(not recommended)“,然后点击“Next”即可;
    ②如果选择"Run service as local or domain user”,可参考:https://blog.csdn.net/qq_27696623/article/details/121636342

  6. 端口号设置,因为端口号默认为8080,考虑到该端口号可能会被其他服务占用,故建议修改此端口号。比如我这里改为了8181,再点击“Test Port”,如果有个绿色的√出现(表示端口号可行),再点击Next;

  7. 选择本地jdk安装路径,此页面一般自动带出本地jdk安装路径。若带出不正确可自行修改,打开cmd窗口,执行命令java -verbose,返回结果的最后两行即为本地jdk安装路径。

  8. 自定义设置,点击Next;

  9. 点击Install;

  10. 等待安装;

  11. 安装完成后,点击Finish;

  12. 打开浏览器,在地上栏输入:localhost:端口号(端口号为步骤6中设置的Port),访问到的界面如下图所示;

  13. 安装后首次登录需要找到系统动态设置的初始密码,根据浏览器中的提示路径,找到对应路径下的initialAdminPassword文件,并用文件编辑软件打开,复制里面的密码;

  14. 将复制的密码粘贴到管理员密码输入框中,并点击继续;

  15. 选择“安装推荐的插件”,由于插件下载源是国外的,安装插件过程会比较慢,如果有安装失败的插件,可修改为国内的下载源后再重新安装,可参考:https://www.cnblogs.com/starsray/p/12753366.html

  16. 插件安装完成后,需要创建管理员用户,如下图;

  17. 实例配置,点击“保存并完成”即可;

  18. 配置完成,点击“开始使用Jenkins”;

  19. 若成功进入到Jenkins首页页面,Jenkins安装配置到此完成!

1.2 jenkins中文设置

jenkins设置简体中文
①依次点击【Manage Jenkins】→【Manage Plugins】,进入到插件管理页面;

②切换到【可选插件】tab,并搜索插件名Locale plugin ,若搜索后存在则点击安装,若搜索后不存在,则切换到【已安装】tab,看看该插件是否已经安装了;

③安装中文(简体中文)汉化语言包插件Localization: Chinese (Simplified)

④依次点击【Manage Jenkins】→【Configure System】,进入到系统配置页面;

⑤找到【Default Language】(注:必须先安装Locale plugin插件,否则无法找到该选项),设定简体中文,输入zh_CN

简体中文:“zh_CN”,繁体中文:"zh_TW",英文:"en_US"

⑥重启jenkins,地址栏输入:http://域名/restart,提示中点击“是”,即可完成重启;

注:以上步骤针对于最新版本Jenkins 2.341可能不适用,按照步骤操作后,部分按钮字段仍然显示英文,目前笔者还没找到其他方法可以解决。

2. Postman+Newman生成接口测试报告

详见笔者的另一篇博客:Postman做接口测试并生成接口测试报告

3. 结合Jenkins生成自动化测试报告

3.1 jenkins构建任务

  1. 打开jenkins首页工作台,点击“新建Item;
  2. 填写任务名称,选择项目风格,并点击确定;
  3. 填写项目描述,项目描述为非必填项,可直接进入下一个步骤;
  4. 切换到【构建环境】,选择“Execute Windows batch command”;
  5. 输入执行newman生成接口测试报告的命令,可查看Postman做接口测试并生成接口测试报告。需注意,不能单独只输入newman,前面需加上newman在本地的绝对路径,不然会报找不到newman的错误。
  6. 返回首页工作台,选择项目,进入项目构建页面;
  7. 点击“Build Now”,进行构建,在构建历史中会显示构建时间及构建状态;
  8. 选择一项构建任务,点击“控制台输出”,可查看构建日志,若为绿色的√,即代表构建成功;

  9. 上面构建成功后的测试报告也只能在本地查看,那么,如何将在jenkins上查看测试报告呢?请往下看👇

3.2 jenkins展示html测试报告

在jenkins上展示html报告,需要添加一个HTML Publisher plugin插件,把生成的html报告放到指定文件夹,这样就能用jenkins去读出指定文件夹的报告了。

  1. 下载HTML Publisher plugin插件:打开插件管理→切换到【可选插件】→搜索插件HTML Publisher→安装;

  2. 插件安装页面,勾选“安装完成后重启jenkins”;

  3. 检查插件是否安装成功:进入插件管理页面,切换到【已安装】,搜索HTML Publisher ,如果存在,则证明安装成功,且要使插件处于启用状态;
  4. 返回首页工作台,点击项目,进入项目构建页面;
  5. 点击配置,进入项目配置页面;
  6. 切换到【构建后操作】→点击“增加构建后操作步骤”→下拉选择"Publish HTML reports",然后点击新增;
  7. 新增后的配置如下:
    HTML directory to archive:在本机上运行完脚本后生成的测试报告路径,这里是相对路径;
    Index page[s]:报告名称,这个就是运行完脚本后,在本地报告生成路径下的报告名称,我这里是result.html;
    Index page title[s] (Optional):非必填项;
    Report title:显示在jenkins上的名称,默认HTML Report就行;

  8. 配置完成后回到工作空间,构建任务成功后,便可点击查看生成报告。

4. Jenkins构建触发器

背景:当项目中要求以持续压测、定时任务的方式执行脚本时,通过 build now 手动触发的方式进行构建项目就很不灵活,这时就可以用jenkins自带的构建触发器进行自动化构建。

Jenkins(v2.341)本身内置了 5 种构建触发器:

  • 触发远程构建
  • 其他项目工程构建后触发 Build after other projects are built
  • 定时构建 Build periodically
  • GitHub hook trigger for GITScm polling
  • 轮循构建 Poll SCM

构建触发器入口:进入项目配置→构建触发器

4.1 触发远程构建

选择“触发远程构建” ,填入身份验证的令牌(通常情况下令牌需要经过加密),令牌获取可参博客:不登录触发远程构建详解
作用:无需登录jenkins,使用拼接url+令牌直接访问触发远程构建,在浏览器地址中访问:http://{IP}:{端口号}/buildByToken/build?job={Job名称}&token={Token}

4.2 其他项目工程构建后触发

作用:配置关注项目工程,在关注的项目构建后(失败或成功),再构建本项目

4.3 定时构建

作用:每隔一段时间触发构建

定时构建语法
* * * * *
星号*中间用空格隔开

第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

示例:

  • 每隔5分钟构建一次:H/5 * * * *
  • 每隔2小时构建一次:H H/2 * * *
  • 每天8点构建一次:H 8 * * *
  • 每天8点~17点,两小时构建一次:H 8-17/2 * * *
  • 周一到周五,8点~17点,两小时构建一次:H 8-17/2 * * 1-5
  • 每月1号、15号的12点各构建一次,除12月:H 12 1,15 1-11 *

4.4 GitHub hook trigger for GITScm polling

向GitHub提交代码时触发jenkins自动构建,可参考博客:Jenkins+Github实现自动触发构建

4.5 轮询构建

作用:指定一段时间间隔去扫描代码仓库的代码是否有变更,如果有,则触发项目构建。
语法参考定时构建语法。如这里填写的H/5 * * * *,表示每5分钟去扫描代码仓库是否有代码变更,如有,则触发项目构建。

有关Jenkins+Newman+Postman生成接口自动化测试报告的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  5. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  6. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  7. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  8. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  9. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  10. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

随机推荐