热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用HttpRunner3+Allure+Jenkins实现Web接口自动化测试

陆续给不同项目做了Web接口自动化测试,在尝试不同方法的同时会有新的体会。最近用到了HttpRu

陆续给不同项目做了Web接口自动化测试,在尝试不同方法的同时会有新的体会。最近用到了HttpRunner3,本文将记录使用HttpRunner3+Allure+Jenkins在项目中快速实现Web接口自动化测试的过程。


HttpRunner3


安装

安装HttpRunner3:pip install httprunner


脚手架

使用HttpRunner提供的脚手架工具,能够快速创建项目目录,输入命令:httprunner startproject xxx

比如我通过”httprunner startproject demo”创建了名为demo的项目,创建完成后目录结构如下图所示:



生成测试用例

创建完项目目录后,如何快速生成测试用例呢?

为方便我们写用例,HttpRunner提供了录制工具,能够将har文件转换成pytest类型或者yaml/json类型的用例。而har文件可以通过抓包软件获得,以Charles举例:右键选择想要转换成用例的http请求->Export Session->文件类型选择.har格式保存。


此时,我们就完成了har文件的提取工作,那么如何转换成用例呢?HttpRunner提供了命令:har2case xxx.har 用har文件生成对应的pytest类型的测试用例。还是以demo项目举例,进入项目根目录下,har2case demo/har/github.har将在har目录下生成github_test.py文件,该文件即为pytest格式的用例。


为了便于分类管理,将生成的github_test.py文件从har文件夹移至testcases文件夹下。此外,很多时候,我们需要对初步生成的pytest用例进行修改,由于本文篇幅有限,请参考官方文档查阅方法。


运行用例

HttpRunner提供hrun命令用于运行测试用例,官方文档解释hrun等于pytest。所以,我们可以输入命令pytest demo/testcases/github_test.py来运行pytest类型用例。运行完成后,会在logs文件夹下生成对应的log文件,里面记录了测试过程及结果,如下图所示。


当然,为了操作方便,建议编写runner.py用于运行测试用例,而不是敲命令行的方式。


Allure测试报告


安装allure环境

Step1:安装java环境,因为allure依赖。然后安装allure,下载地址https://github.com/allure-framework/allure2/releases,解压后将allure/bin目录添加至系统环境变量中。

Step2:安装allure-pytest插件:pip install allure-pytest


运行用例并生成Allure测试报告

继续上述例子,分别输入命令行:

pytest demo/testcases/github_test.py –alluredir=demo/reports/allure_results

allure generate –clean demo/reports/allure_results -o demo/reports/allure_reports

将在demo项目的reports目录下生成allure测试报告,如下图所示。


经过上述步骤,已经能在本地使用HttpRunner录制脚本、执行测试及生成测试报告了。如需进一步远程定时运行测试用例、生成测试报告及邮件通知,我们可以通过jenkins实现它。


配置Jenkins


添加插件

安装并启动Jenkins服务后,在Manage Jenkins->Manage Plugins添加以下插件:

Allure Jenkins Plugin : 用于生成Allure测试报告

Email Extension :用于发送邮件


修改系统配置

添加号插件后,需要修改Jenkins的系统配置:

配置Allure:在Manage Jenkins->Global Tool Configuration中配置allure系统路径

发送邮件:在Manage Jenkins->Configure System中配置邮件服务器


修改Job配置

完成上述操作后,接着需要在Jenkins Job中完成相应的配置。新建或者打开一个Job,修改它的配置项。

设置定时


编写批处理命令


配置生成allure


配置发送邮件


Job配置完成后,便可根据实际的项目节奏定时运行测试,生成Allure测试报告及邮件通知相干人员了。当然,后续也可通过jenkins pipeline进一步达到CI/CD的目的。

 

参考资料

https://docs.httprunner.org/

 



推荐阅读
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 基于,docker,快速,部署,多,需求,spark ... [详细]
  • 云原生SRE
    序言年底了,没有分手的朋友的赶紧分了,所谓新年新气象,年年不重样。去留无意,望看风卷残云。。。运维不会消失,但 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有