Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

news2024/11/16 3:48:50

一、    环境搭建
1.    Python下载及安装
Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。
 

 

如未安装python, 推荐下载python 3.8.3以上版本,本文主要介绍windows下安装,打开 WEB 浏览器访问https://www.python.org/downloads/windows/ ,在下载列表选择对应的Windows系统平台安装包,如文件名python-3.9.5-amd64.exe(对应64位操作系统),直接运行安装。

 下载后运行.exe可执行文件,使用默认设置,“下一步”直到完成, 添加安装路径如:C:\Python38和C:\Python38\Scripts两个路径到环境变量Path中,保存后在cmd命令行下执行python验证。
环境变量编辑结果:

 

 2. JDK安装(后面的Tomcat, allure等需要依赖JDK)
去官网(https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html)下载JDK安装包,运行下载的JDK安装文件,如jdk-8u181-windows-x64.exe,只需要更改一下安装位置(或不改)并记住这个安装位置。
2.1在上一步的环境变量中新建JAVA_HOME变量,变量值即JDK安装目录(我的是: c:\Program Files\Java\jdk1.8.0_181)。
2.2再新建CLASS_PATH变量,变量值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;  前面有个英文的点和分号不要漏掉。
2.3 Path变量中新增值 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;  注意如果是windows7系统等path变量中多个地址都放在一行的情况下,要在之间增加英文分号与前面的变量值间隔开.
设置完成后结果如下图所示:

 保存配置后可以在cmd下执行java -version验证:

 

3. 编辑器安装
可以自行搜索PyCharm或Visual Studio Code的安装及配置,本文不详细说明
PyCharm下载地址: https://www.jetbrains.com/zh-cn/pycharm/
Visual Studio Code下载地址: https://code.visualstudio.com/

4. 相关python包及插件的安装
本框架需要用到的python包包括:pytest, selenium, allure-pytest
4.1 安装pytest
在cmd下或PyCharm或Visual Studio Code的Terminal命令行下用pip命令工具安装: 
>pip install -U pytest   (-U参数表示如已安装则升级到最新版)

 Pytest命令未指定目录或文件时,会在当前目录及所有子目录下查找测试模块,包含:文件名为test_*.py或者*_test.py的文件,在测试模块中查找以test_开头的函数,查找名字以Test开头的类。其中首先筛选掉包含__init__()函数的类,再查找类中以test_开头的类方法,即规则如下:
==测试文件以test_开头(以_test结尾也可以)
==测试类以Test开头,并且不能带有init方法
==测试函数以test_开头
==断言使用基本的assert即可
如图所示

Pytest框架提供可按优先级执行测试用例 

 

4.2 安装selenium
命令行输入
>pip install selenium    

  
了解selenium请访问:https://blog.csdn.net/qq_44326412/article/details/107825851?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162129756416780357211210%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162129756416780357211210&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-107825851.first_rank_v2_pc_rank_v29&utm_term=selenium&spm=1018.2226.3001.4187
 4.3 安装allure
4.3.1 Allure 下载最新版本:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 选择一个版本进入后,下载zip包

下载完后解压到某个目录中, 在环境变量path中加入allure所在目录,如我的环境变量path中增加D:\allure\allure-2.13.9\bin
4.3.2 与pytest的集成
安装pytest-allure插件库, >pip install allure-pytest
4.3.3 Jenkins中安装allure插件 ,以下安装Jenkins时再介绍
4.3.4 allure生成报告
说明:pytest执行测试用例产生的数据是以json格式的数据类型保存,通过allure generate去解析才能正式生成html类型的测试报告
配合pytest使用: >pytest --alluredir=D:/pytest/result (执行pytest时指定allure报告产生结果的目录,也可以使用相对路径指定,如:pytest --alluredir=../result , 表示指定当前目录的上一级目录下的result目录)
要在测试完成后查看实际报告,需要使用Allure命令行实用程序从结果生成报告:
>allure generate ../result -o ../report --clean (从上一条命令生成的allure结果../result中整理成测试报告到../report下,--clean参数表示之前已有结果则清除)
通过allure注解方式可对报告进行层级划分,这种方式可对用例进行统一的管理并分级展示
示例代码:
 

 执行结果如下:

 

5. Tomcat及Jenkins安装
   注Jenkins也可以直接运行在windows下, 但推荐使用Tomcat容器来运行Jenkins
5.1从官网下载Tomcat,根据需要下载windows版的64位zip文件;下载地址为:https://tomcat.apache.org/whichversion.html

5.2将下载后的Tomcat解压到某个盘中,我的解压到D:\Tomcat; 

5.3配置Tomcat环境变量,新建一个TOMCAT_HOME,值为D:\Tomcat\apache-tomcat ;新建一个CATALINA_HOME,值为D:\Tomcat\apache-tomcat-9.0.36;将;%TOMCAT_HOME%\bin;%CATALINA_HOME%\lib放到path中。

5.4进入到D:\Tomcat\apache-tomcat-9.0.36\bin点击startup.bat文件
  

5.5然后在浏览器中输入localhost:8080出现一只猫页面即成功(默认是8080端口),如果端口冲突要修改,就到D:\Tomcat\apache-tomcat-9.0.36\conf目录下修改server.xml文件中<Connector port="8088" protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="8443" />将8080改为8088或其它你想要的端口号 
效果图如下

5.6安装Jenkins

5.6.1下载Jenkins应用包jenkins.war (下载地址https://www.jenkins.io/zh/download/)

5.6.2 新建一个环境变量,JENKINS_HOME,即将要安装的jenkins的目录,我创建的为D:\Jenkins,
或者是编辑D:\Tomcat\apache-tomcat-9.0.36\conf下的context.xml文件添加<Context ...> <Environment name="JENKINS_HOME" value="D:/jenkins/" type="java.lang.String"/>
</Context>
不然会默认安装在c盘用户下的.jenkins 文件夹下,还有就是如果之前的文件如果安装出错了的话要将所有的文件都删除掉不然还会影响后续的安装
5.6.3把jenkins.war 包放在tomcat的webapps下
 
5.6.4进入到D:\Tomcat\apache-tomcat-bin运行startup.bat文件,此时会安装jenkins,安装好之后,wabapp里会出现jenkins文件。重点jenkins和tomcat端口不要一样。tomcat设置端口8088,jenkins端口8080,打开http://localcat:8086/jenkins
效果如下图,访问jenkins的时候有个初始化密码,需要输入,查找初始化密码,按提示进入对应的目录D:\Program Files\Jenkins\secrets,打开initialAdminPassword复制其中密码到输入栏(Linux系统下初始化密码在/root/.jenkins/secrets/initialAdminPassword)

5.6.5 安装Jenkins的allure插件
以admin帐号登录Jenkins,首页左边Manage Jenkins菜单下,进入Manage Plugins子菜单,在插件管理页面中选择”可选插件”,搜索allure, 会搜索到Allure Jenkins Plugin,勾选后点击页面下方的Install without restart或Download now and install after restart即可安装.
5.6.6 jenkins全局配置
由于jeknkins运行需要jdk环境,所以全局配置要引入环境变量

宿主执行机执行需要依赖本地allure启动组件,全局配置需引入allure环境变量 

注:关于Jenkins中项目的配置请查阅文档 
安装后在项目配置中”构建”步骤执行pytest命令时生成测试结果并指定存放目录 

然后可在项目的配置菜单中看到构建后操作下有Allure Report项如下图,其中的Results: Path中填写测试结果生成的目录result(即上步构建指定的结果目录), 在Report path:中指定测试报告存放的目录: 

 

二、    pytest+selenium框架
1.    框架的目录结构 

 

说明:common目录存放公共的方法,如driver,读取文件的方法等,目录中需要__init__.py文件;
config目录存放日志等的配置文件,目录中需要__init__.py文件;
driver目录存放浏览器驱动程序,目前使用谷歌驱动器chromedriver.exe; 
log目录即存放日志文件;
PageObject目录存放页面类、方法、元素等,目录中需要__init__.py文件;
report目录存放allure产生的测试报告;
result目录存放allure生成的测试结果文件;
testcase目录用于存放测试用例和conftest.py(pytest胶水文件,如果需要),目录中需要__init__.py文件,如在windows命令行运行用例,可cd到此目录下后执行pytest命令;
其它文件__init__.py为空文件,python包的必要文件,没有此文件则不能在py文件中导入;
README.md为项目的相关文字说明;
requirements.txt文件中列明了依赖包的信息,为了方便项目安装依赖,可以直接在命令行下执行:pip install -r requirements.txt ,即可安装好所需要的包及其需要的版本。

2. 框架的组成
简单理解POM模型:
由于下面要讲元素相关的,所以首先理解一下POM模型
Page Object模式具有以下几个优点。
a.抽象出对象可以最大程度地降低开发人员修改页面代码对测试的影响, 所以, 你仅需要对页面对象进行调整, 而对测试没有影响;
b.可以在多个测试用例中复用一部分测试代码;
c.测试代码变得更易读、 灵活、 可维护
Page Object模式图

 

•    basepage ——selenium的基类,对selenium的方法进行封装
•    pageelements——页面元素,把页面元素单独提取出来,放入一个文件中
•    searchpage ——页面对象类,把selenium方法和页面元素进行整合
•    testcase ——使用pytest对整合的searchpage进行测试用例编写
通过上图我们可以看出,通过POM模型思想,我们把:
•    selenium方法
•    页面元素
•    页面对象
•    测试用例
以上四种代码主体进行了拆分,虽然在用例很少的情况下做会增加代码,但是当用例多的时候意义很大,代码量会在用例增加的时候显著减少。我们维护代码变得更加直观明显,代码可读性也变得比工厂模式强很多,代码复用率也极大的得到了提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android——事务处理(续)(十三)

1. 长按事件 1.1 知识点 &#xff08;1&#xff09;掌握长按事件的操作形式&#xff1b; &#xff08;2&#xff09;可以设置手机的桌面背景&#xff1b; 1.2 具体内容 范例&#xff1a;长按一张图片之后&#xff0c;此图片设置为手机桌面背景。 <LinearLayout xmlns:a…

LocalDateTime 和 LocalDate 与 date 有什么区别;LocalDateTime 示例,LocalDate 示例

目录 1 LocalDateTime 和 LocalDate 与 date 有什么区别2 LocalDateTime 示例&#xff1a;2 LocalDate 示例&#xff1a; 1 LocalDateTime 和 LocalDate 与 date 有什么区别 LocalDateTime、LocalDate和Date是 Java中不同的类库中用于表示日期和时间的类&#xff0c; 它们在功…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

《机器学习公式推导与代码实现》chapter13-LightGBM

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 LightGBM 就GBDT系列算法的性能而言&#xff0c;XGBoost已经非常高效了&#xff0c;但并非没有缺陷。LightGBM就是一种针对XGBoost缺陷的改进版…

【C++11】 列表初始化 auto 范围for 新增关键字 新增容器

文章目录 1 列表初始化2 auto && 范围for3 新增关键字3.1 decltype3.2 default3.3 delete3.4 final与override 4 总结 1 列表初始化 由c语言的规则我们知道&#xff1a;一般只有数组才会支持用{}初始化&#xff0c;但是C11新语法规定我们不仅可以用{}初始化各种对象(内…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信&#xff0c;上网找了各种方案。 目的是在企业微信中&#xff0c;公司发给员工一个地址&#xff0c;员工点开后打开画面&#xff0c;在这个画面上可以获取到这个员工的userid&#xff08;后续功能操作就是各自不同的功能了哈&#xff0c;就不详细说了&#…

STM32F4_触摸屏

目录 1. 触摸屏原理 2. 电阻式触摸屏检测原理 3. 电容式触摸屏检测原理 4. 硬件配置 4.1 XPT2046驱动芯片 4.2 硬件设计 5. 代码详解 5.1 main.c 5.2 AT24C02.c 5.3 AT24C02.h 5.4 C_Touch_I2C.c 5.5 C_Touch_I2C.h 5.6 Touch.c 5.7 Touch.h 5.8 FT5206.c 5.9 …

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…

Python入门自学进阶-Web框架——36、Web微信类实现初步

打开页面&#xff0c;会出现一个二维码&#xff0c;要使用手机微信扫一扫&#xff0c;才能登录。它的实现原理是什么&#xff1f; 下图为打开网页版微信登录的调试工具网络信息&#xff0c;定时发送请求&#xff0c;状态待处理&#xff08;pending&#xff09; 上图的挂起是pe…

网络安全|渗透测试入门案例分析,从零基础入门到精通—登录框页面的快速渗透常用检测手段

目录 引言 1、弱口令 2、万能密码绕过 ​编辑 3、登录认证绕过 3.1.令牌刷新端的错误配置 3.2. 错误的sso配置 3.3.CMS个例的访问问题 3.4.JWT Token的错误解析 3.5.暴力修改Authentication 4、图形验证码不失效 5、短信验证码不失效 6、短信攻击 7、反射型跨站脚…

【MySQL数据库】MySQL 高级SQL 语句二

MySQL 高级 SQL 语句二 一、连接查询1.1 inner join&#xff08;内连接&#xff09;1.2 left join &#xff08;左连接&#xff09;1.3 right join(右连接) 二、CREATE VIEW ---- 视图三、 UNION - - 连集3.1 UNION3.2 UNION ALL 四、交集值&#xff08;取两个SQL语句结果的交集…

经典:商业智能BI解读,值得收藏

关注新闻的朋友们可能注意到了&#xff0c;最近这段时间关于数据要素、数字经济、数字化转型的相关行动越来越多&#xff0c;一方面是各级政府的政策规划以及大规模的发展行动&#xff0c;另一方面是则是各行各业的企业开始探寻数字经济&#xff0c;通过数字化转型进行改革&…

angular学习笔记

目录 1、认识Angular![在这里插入图片描述](https://img-blog.csdnimg.cn/17fe3ec067b64d75bf9d24a4e71403ed.png)2、路由2.1、路由懒加载2.2、路由守卫 3、模版指令4、生命周期4.1、父子生命周期 5、依赖注入6、RXJS7、自定义事件&#xff0c;自定义指令8、自定义管道9、获取d…

内网渗透(八十八)之委派攻击

委派 委派是大型网络中经常部署的应用模式,给多跳认证带来了很大的便利与此同时也带来了很大的安全隐患。利用委派,攻击者可结合其他漏洞进行组合攻击,导致攻击者可获取本地管理员权限甚至域管理员权限,还可以制作深度隐藏的后门。 委派是指将域内用户的权限委派给服务账…

【Adversarial Attack in Object Detection】物理对抗攻击和防御

目录 安全监控 **有无意义**无意义的补丁有意义的补丁 光学对抗攻击对抗灯干扰相机成像 攻击方法White-box attacksGradient-based attacks Optimization-based attacks Black-box attacksQuery-based attacksEvolution algorithm OUTLOOK 在计算机视觉中&#xff0c;根据实现…

征服Go世界,御剑江湖!学习路线与顶级资源一网打尽

引言 Go语言&#xff08;也称为Golang&#xff09;是一种开源的编程语言&#xff0c;由Google开发。它具有简洁的语法、高效的并发性能和良好的内存管理&#xff0c;因此在近年来迅速获得了广泛的关注和采用。本文将为您提供一条学习Go语言的路线图&#xff0c;并介绍一些优质…

二分查找 - 数据结构和算法教程

二分查找被定义为在排序数组中使用的一种搜索算法&#xff0c;它通过重复将搜索间隔分成两半来实现。二分查找的思想是利用数组被排序的信息&#xff0c;将时间复杂度降低到O&#xff08;log N&#xff09;。 在数据结构中应用二分查找的条件 数据结构必须排序。访问数据结构的…

mac为什么读取不了NTFS格式硬盘,Tuxera NTFS for Mac 2022 读写ntfs移动硬盘插件

使用 Mac 的巨大痛点之一&#xff1a;移动硬盘只能打开文件&#xff0c;但是无法写入新的资料。有人说格式化硬盘&#xff0c;改成苹果的 macOS扩展格式&#xff0c;但是原先硬盘的数据要转移&#xff0c;而且拿到 Windows 系统里无法被识别。 有人说格式化硬盘&#xff0c;改…

关于nginx,正向代理和反向代理是什么意思

为什么要使用nginx 很多公司会用到nginx做代理服务器&#xff0c;为什么用nginx&#xff0c;tomcat服务器不行吗&#xff1f; tomcat缺点&#xff1a;并发量小&#xff0c;用户使用的少 nginx&#xff1a;高并发&#xff0c;高性能&#xff0c;cpu、内存等资源消耗却非常低&…

在 Navicat Premium 中管理 MySQL 用户 | 第 4 部分:权限管理员工具

第 4 部分&#xff1a;权限管理员工具 在本系列中&#xff0c;我们一直在探索如何使用 Navicat 的旗舰产品 Navicat Premium 执行常见的用户管理任务。在上一篇文章中&#xff0c;我们研究了新用户对象选项卡的“服务器权限”、“权限”和“SQL预览”选项卡。 在上一篇文章中…