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

一、    环境搭建
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方法
•    页面元素
•    页面对象
•    测试用例
以上四种代码主体进行了拆分,虽然在用例很少的情况下做会增加代码,但是当用例多的时候意义很大,代码量会在用例增加的时候显著减少。我们维护代码变得更加直观明显,代码可读性也变得比工厂模式强很多,代码复用率也极大的得到了提高。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prompt的技巧持续总结

Prompt 有很多网站已经收录了&#xff0c;比如&#xff1a;aimappro 有些直接抄上述网站的作业即可&#xff0c;不过也来看看&#xff0c; 有一些日常提问大概的咒语该怎么写。 1 三种微调下的提示写法 chatgpt时代的创新&#xff1a;LLM的应用模式比较 实际案例说明AI时代大…

将win上的文件传输到Ubuntu虚拟机

首先获取Ubuntu系统的ip地址&#xff0c;在Ubuntu的Terminal中输入ifconfig&#xff0c;可以看到Ubuntu的ip地址 可以看到我电脑的ip地址是10.0.2.15。更改虚拟机的网络连接 这里以VirtualBox为例&#xff0c;打开VirtualBox设置&#xff0c;选择网络&#xff0c;将连接方式改…

通付盾入围《2023年度中国数字安全能力图谱(行业版)》

近日&#xff0c;数世咨询发布《2023年度中国数字安全能力图谱&#xff08;行业版&#xff09;》。通付盾作为以分布式数字身份和大数据决策智能技术为核心的数字化高端软件与服务提供商&#xff0c;凭借在数字安全领域的实力和影响力&#xff0c;入选政府、互联网两大行业细分…

ElasticSearch的安装和访问

ElasticSearch的安装 前言: 本次下载是在Windows系统进行操作,版本为7.6.1,因为下周最新版本的8.1.2有问题 ElasticSearch基于Java开发,JDK最低1.8版本 ElasticSearch的版本要和之后引入的Maven的Jar包版本对应 1 下载ElasticSearch 官网:https://www.elastic.co/cn/ 产品…

【yocto1】利用yocto工具构建嵌入式Linux系统

文章目录 1.获取Yocto软件源码2.初始化Yocto构建目录2.1 imx-setup-release.sh脚本运行2.2 imx-setup-release.sh脚本解析2.2.1 setup-environment脚本解析 3.构建嵌入式Linux系统3.1 BitBake构建系统3.2 BitBake构建系统过程简要解析3.2.1 解析Metadata基本配置Metadatarecipe…

Spring Boot面试题

什么是 Spring Boot&#xff1f; Spring Boot 是一个简化 Spring 应用程序开发的框架&#xff0c;通过自动配置、起步依赖和简化的配置方式&#xff0c;使开发人员能够更快速、方便地创建和配置 Spring 应用程序&#xff0c;提高开发效率和开发体验。 Spring Boot 的设计目标…

如何做一份干净的git提交记录

背景 毕业工作有一些年头了&#xff0c;之前在写工作代码或者给开源项目贡献的时候&#xff0c;提交代码都不是很规范&#xff0c;甚至可以说十分的随意&#xff0c;想到什么就提交什么&#xff0c;根本没有管理提交记录的概念或者想法&#xff08;当你身边的人都不怎么在意的…

基于 Wav2Lip-GFPGAN 深度学习模型的数字人Demo

写在前面 工作中遇到简单整理博文为 Wav2Lip-GFPGAN 环境搭建运行的 Demo理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是…

kubernetes operator解析

您是否想过站点可靠性工程 (SRE) 团队如何有效地成功管理复杂的应用程序&#xff1f; 在 Kubernetes 生态中&#xff0c;只有一个答案&#xff1a;Kubernetes Operators&#xff01; 在本文中&#xff0c;我们将研究它们是什么以及它们是如何工作的。 Kubernetes Operator 概念…

RabbitMQ 能保证消息可靠性吗

系列文章目录 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 系列文章目录前言一、消息可靠性的定义二、几种不可靠的场景三、防意外丢失1. 消息持久化2. 队列持久化3. 发布确认3.1 简单发布确认3.2 批量发布确认3.3 异步发布确认 4…

miniconda 安装 windows+linux

虽然常用anaconda&#xff0c;但是有时候只需要管理环境的时候&#xff0c;用miniconda更方便 如果想安装anaconda&#xff0c;可以参考这篇&#xff1a;anaconda安装 一、linux下 1.下载 链接&#xff1a;miniconda文档 cd /usr/localwget https://repo.anaconda.com/mini…

简要介绍 | CUDA底层原理:加速高性能计算的关键技术

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对CUDA的底层原理进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 CUDA底层原理&#xff1a;加速高性能计算的关键技术 CUDA Refresher: The GPU Computing Ecosystem | NVIDIA Technical Blog 1…

python自动化办公——定制化读取Excel数据并写入到word表格

Python自动化办公——Excel写word表格 文章目录 Python自动化办公——Excel写word表格一、引言二、数据准备三、python代码1、方法一2、方法二3、方法三 一、引言 最近到了毕业设计答辩的时候&#xff0c;老师让我帮毕业生写一段毕业设计的功能就是提供一个学士学位授予申请表…

基于CST软件的对数周期天线设计

摘要&#xff1a; 对数周期天线存在多种形式&#xff0c;主要包括齿片形、齿线型和偶极型等。其中&#xff0c;1960年提出的对数周期偶极子天线&#xff08;LPDA&#xff09;是结构最简单、应用最广泛且性能优良的一类对数周期天线&#xff0c;广泛应用于 UHF、VHF、HF 频段的…

python中os库用法详解(总结)

os库主要是对文件和文件夹进行操作&#xff0c;在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能。 具体步骤如下&#xff1a; 1. 导⼊os模块 import os 2. 使⽤ os 模块相关功能 os.函数名() 1、⽂件重命名 os.rename(⽬标⽂件名, 新⽂件名) 示例代码&#…

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL&#xff1a;7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN&#xff08;内连接&#xff09;2、LEFT JOIN&#xff08;左连接&#xff09;3、RIGHT JOIN&#xff08;右连接&#xff09;4、OUTER JOIN&#xff08;全连接&#xff09;5、LEFT EXCLUDING JOI…

nbcio-vue中formdesigner的组件显示不正常的处理

今天看演示系统的formdesigner组件显示不正常&#xff0c;也不知道是什么时候开始的事情&#xff0c; 如下&#xff1a; 对组件的操作倒是正常&#xff0c;但看本地是正常的&#xff0c;如下&#xff1a; 开始也不知道是什么原因&#xff0c;看代码也是一样的&#xff0c;应该…

JavaScript 中内存泄漏的几种情况?

一、是什么 内存泄漏&#xff08;Memory leak&#xff09;是在计算机科学中&#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存 并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内存之前就失…

Hidl编程实战(一)——定义HAL服务

1. 概述 hidl基本知识可以参考官网 安卓官网-hidl 也讲解了C和Java实现hidl 本文讲解CHal服务的创建 2. 文件的创建 aosp整编过的代码&#xff0c;可以直接choosecombo后使用hidl-gen工具。如果没有整编过&#xff0c;可以单编hidl-gen工具。 hidl-gen工具可以用来协助创建h…

Windows和Linux动态注入

摘要&#xff1a;最近对动态注入有一些兴趣因此搜索了些资料&#xff0c;简单整理了下相关的技术实现。本文只能够带你理解何如注入以及大概如何实现&#xff0c;对注入的方法描述的并不详细。   关键字&#xff1a;dll注入&#xff0c;hook&#xff0c;提权   读者须知&am…