使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 53--CI/CD 6--配置Jenkins构建新项目-定时自动执行测试代码

使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 53--CI/CD 6--配置Jenkins构建新项目-定时自动执行测试代码

测试学习记录,仅供参考!

配置Jenkins构建新项目-定时自动执行测试代码

1、启动服务,打开登录 Jenkins,找到新建项目,开始配置测试项目;

配置项目

2、项目描述(选填项);

源码管理

3、源码管理,Jenkins 在执行时通过读取 Git 上的代码

        1)、选中 Git 选项;

        2)、URL:Git 上面项目里面的地址

4、添加 Git 用户名和密码

5、输入用户名、密码,其他自定义,单击“添加”按钮;

6、添加 Git 用户名密码成功后选中它;其他保持默认即可;

构建触发器

7、构建触发器选择定时构建→设置定时时间(自行设置);

8、定时构建语法(五颗星):* * * * *

        第一个 * 表示分钟,取值0~59;

        第二个 * 表示小时,取值0~23;

        第三个 * 表示一个月的第几天,取值1~31;

        第四个 * 表示第几月,取值1~12;

        第五个 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日;

常用定时构建举例:

由于项目的代码一般存在放SVN中,而一个SVN往往是有多个项目组在提交代码,而每个项目组又有多人组成,其中每个人也都在对自己的那块代码不停地在进行维护,所以说对于一个公司而言,SVN的提交记录往往是很频繁的,正因为如此,Jenkins 在执行自动化构建时往往是以天为单位来执行的;

下面举的例子就是在一天中常用的定时构建示例:

        每隔5分钟构建一次 H/5 * * * *

        每两小时构建一次 H H/2 * * *

        每天中午下班前定时构建一次 0 12 * * *

        每天下午下班前定时构建一次 0 18 * * *

构建环境

9、构建环境(若无此选项烦请自行去安装对应插件) → 勾选“Delete workspace before build starts”(构建前清空工作区) 和“Add timestamps to the Console Output”(把结果输出到控制台中);

构建步骤

10、在本地部署,选第一个选项“Execute Windows batch command”;

11、通过 python 去执行远程仓库目录下的 run.py 文件(要根据实际分支情况来填写,注意路径);

        用 Python 去执行主函数;

因为之前有生成 requirements.txt 安装依赖文件--所以这里直接安装导入 pip install -r requirements.txt 若没有生成安装依赖库 requirements.txt 可使用 pip install 命令一个一个安装相应的模块 pip install pytest==7.1.3 ...... python run.py
#!/bin/bash python3 -v pip3 -v pip3 install -r requirements.txt python3 run.py

构建后操作

12、构建后操作一般是输出测试报告,选中“Allure Report”选项(若无此选项烦请安装对应插件);

13、Allure Report 选项信息(自行查看);

14、Path 测试报告地址默认“allure-results”,更改为实际测试报告存放文件路径“report/temp”;

        若配置错误执行构建完成后”测试报告是没有数据的“;

15、鼠标单击“Global Tool Configuration“去配置;点击”新增 Allure Commandline“按钮;

16、输入 Allure Commandline 别名;

17、自定义别名即可(自行设置);单击”保存“按钮;

18、再次回到”构建后操作“能够发现”Allure Report“没有报错警告信息,点击”保存“按钮;

19、自行选择是否添加“E-mail Notification(发送邮件通知)”和“Publish JUnit test result report(统计测试结果)”(烦请自行设置--其中邮箱设置需要到全局配置中自定义邮件模板);

20、Web UI 自动化测试项目配置完成;

开始构建

21、配置完成之后开始启动 Jenkins 构建项目,选中”BuildNow“;

22、若构建失败 → 控制台输出信息 出现问题烦请自行参考解决;

Started by user admin Running as SYSTEM Building in workspace C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试 [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] Done The recommended git tool is: NONE 。。。 Cloning the remote Git repository 。。。 > git.exe init C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试 # timeout=10 。。 > git.exe --version # timeout=10 > git --version # 'git version 2.43.0.windows.1' 。 。 。 Avoid second fetch 。 。 。 Commit message: "PyCharm再次提交修改" 出现这样的信息,则说明Git连接没有问题,可继续往下排查问题 First time build. Skipping changelog. [Web UI 自动化测试] $ cmd /c call E:\Users\apache-tomcat-9.0.98\temp\jenkins9483282840520566421.bat . . . The recommended git tool is: NONE using credential 3d74ddcc-887a-4063-b44a-38f6551fce12 Cloning the remote Git repository Cloning repository https://gitee.com/tianqi-test/webuitest > git.exe init C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试 # timeout=10 Fetching upstream changes from https://gitee.com/tianqi-test/webuitest > git.exe --version # timeout=10 > git --version # 'git version 2.43.0.windows.1' using GIT_ASKPASS to set credentials giteew > git.exe fetch --tags --force --progress -- https://gitee.com/tianqi-test/webuitest +refs/heads/*:refs/remotes/origin/* # timeout=10 ERROR: Error cloning remote repo 'origin' 类似此种报错信息,表示远程仓库连接有误 . . . C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试>python run.py Traceback (most recent call last): File "run.py", line 1, in <module> import pytest ModuleNotFoundError: No module named 'pytest' Jenkins中的python环境找不到模块错误:没有名为“pytest”的模块 → 解决方法:需要在构建步骤时安装模块 C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试>exit 1 Build step 'Execute Windows batch command' marked build as failure 生成步骤“执行Windows批处理命令”将生成标记为失败 。 。 。 Allure report was successfully generated. Creating artifact for the build. Artifact was added to the build. Finished: FAILURE 最终构建结果:失败

。 。 。 C:\Users\Administrator\.jenkins\workspace\Web UI 自动化测试>pip3 install -r requirements.txt Collecting openpyxl==3.1.2 Using cached openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) Collecting PyMySQL==1.1.0 Using cached PyMySQL-1.1.0-py3-none-any.whl (44 kB) Collecting pytesseract==0.3.13 Using cached pytesseract-0.3.13-py3-none-any.whl (14 kB) Collecting pytest==7.1.3 Using cached pytest-7.1.3-py3-none-any.whl (298 kB) Collecting PyYAML==6.0 Using cached PyYAML-6.0-cp38-cp38-win_amd64.whl (155 kB) Collecting requests==2.28.1 Using cached requests-2.28.1-py3-none-any.whl (62 kB) Collecting selenium==4.21.0 Using cached selenium-4.21.0-py3-none-any.whl (9.5 MB) Collecting pytest-xdist==3.6.1 Using cached pytest_xdist-3.6.1-py3-none-any.whl (46 kB) Collecting allure-pytest==2.12.0 Using cached allure_pytest-2.12.0-py3-none-any.whl (10.0 kB) Collecting allure_python_commons==2.12.0 Using cached allure_python_commons-2.12.0-py3-none-any.whl (16 kB) Collecting colorlog==6.9.0 Using cached colorlog-6.9.0-py3-none-any.whl (11 kB) Collecting numpy==1.24.4 Using cached numpy-1.24.4-cp38-cp38-win_amd64.whl (14.9 MB) Collecting pyxnat==1.6.2 Using cached pyxnat-1.6.2-py3-none-any.whl (95 kB) Collecting Pillow==9.3.0 Using cached Pillow-9.3.0-cp38-cp38-win_amd64.whl (2.5 MB) Collecting et-xmlfile Using cached et_xmlfile-2.0.0-py3-none-any.whl (18 kB) Collecting packaging>=21.3 Using cached packaging-25.0-py3-none-any.whl (66 kB) Collecting tomli>=1.0.0 Using cached tomli-2.2.1-py3-none-any.whl (14 kB) Collecting attrs>=19.2.0 Using cached attrs-25.3.0-py3-none-any.whl (63 kB) Collecting pluggy<2.0,>=0.12 Using cached pluggy-1.5.0-py3-none-any.whl (20 kB) Collecting iniconfig Using cached iniconfig-2.1.0-py3-none-any.whl (6.0 kB) Collecting py>=1.8.2 Using cached py-1.11.0-py2.py3-none-any.whl (98 kB) Collecting colorama Using cached colorama-0.4.6-py2.py3-none-any.whl (25 kB) Collecting certifi>=2017.4.17 Downloading certifi-2025.8.3-py3-none-any.whl (161 kB) Collecting idna<4,>=2.5 Using cached idna-3.10-py3-none-any.whl (70 kB) Collecting charset-normalizer<3,>=2 Using cached charset_normalizer-2.1.1-py3-none-any.whl (39 kB) Collecting urllib3<1.27,>=1.21.1 Using cached urllib3-1.26.20-py2.py3-none-any.whl (144 kB) Collecting urllib3[socks]<3,>=1.26 Using cached urllib3-2.2.3-py3-none-any.whl (126 kB) Collecting typing_extensions>=4.9.0 Downloading typing_extensions-4.13.2-py3-none-any.whl (45 kB) Collecting trio-websocket~=0.9 Using cached trio_websocket-0.12.2-py3-none-any.whl (21 kB) Collecting trio~=0.17 Using cached trio-0.27.0-py3-none-any.whl (481 kB) Collecting execnet>=2.1 Using cached execnet-2.1.1-py3-none-any.whl (40 kB) Collecting six>=1.9.0 Using cached six-1.17.0-py2.py3-none-any.whl (11 kB) Collecting lxml>=4.3 Downloading lxml-6.0.1-cp38-cp38-win_amd64.whl (4.0 MB) 。 。 。 Finished: SUCCESS

23、若无问题则会构建成功;

总结

第一步:配置源码管理 → Git

第二步:构建触发器 → 自行设置是否定时构建

第三步:构建环境 → 勾选

第四步:构建步骤 → 自行根据实际场景选择

第五步:构建后操作 → 一般添加 Allure 报告,其他自行设置

Read more

【前端部署在云服务器如何与本地联调--Frp内网穿透】

【前端部署在云服务器如何与本地联调--Frp内网穿透】

苍穹外卖前端部署在云服务器如何与本地联调--Frp内网穿透 * 1. 前言 * 2. FRP是什么 * 3. 解决步骤 * 3.1 在云服务器安装服务端frps,然后开启开机自启(**参考第4部分**) * 3.2 在本地电脑安装客户端fprc(**参考第4部分**) * 4. Frp(C/S)0.64.0各个系统的安装方法 * 4.1 frps安装(Linux)服务端 * 4.2 frpc安装(windows)客户端 * 4.3 frpc安装(==mac==)客户端 * 4.4 frpc安装(Linux)客户端 1. 前言 写这片文章的目的是为了解决上篇苍穹外卖项目的前端部署到云服务器的遗留问题:前端的云服务器的IP是公网IP,而我本地调试的Java后端是内网,前端响应的地址找不到本地的服务器。那么如何让云服务器上的前端项目能够找到后端的对应的地址呢?

RTX5060显卡对PyTorch与CUDA适配问题解决方案(解决环境依赖问题&AI微调部署前奏)

RTX5060显卡对PyTorch与CUDA适配问题解决方案(解决环境依赖问题&AI微调部署前奏)

前言 如果大家的电脑显卡是RTX50系列的话,如果按照正常的部署AI,可能尚未进行调试,就会发现环境的依赖报错一大堆,又或者如下图的UserWarning,之所以会是这样,是因为5060的显卡太新了,以至于PyTorch与CUDA出现兼容问题。 图这里sm_xx代表什么? 流多处理器架构版本: sm_50 - Maxwell架构(GTX 900系列) sm_60 - Pascal架构(GTX 1000系列) sm_70 - Volta架构(Tesla V100) sm_75 - Turing架构(RTX 2000系列) sm_80 -Ampere架构(RTX 3000系列/A100) sm_86 - Ampere架构(笔记本RTX 3000) sm_89

前端数据可视化工具比较:别再为选择工具而烦恼了!

前端数据可视化工具比较:别再为选择工具而烦恼了! 毒舌时刻 数据可视化?听起来就像是前端工程师为了显得自己很专业而特意搞的一套复杂流程。你以为随便用个Chart.js就能做出好看的图表?别做梦了!到时候你会发现,复杂的图表需求根本满足不了。 你以为D3.js是万能的?别天真了!D3.js的学习曲线能让你崩溃,写出来的代码比业务代码还复杂。还有那些所谓的可视化库,看起来高大上,用起来却各种问题。 为什么你需要这个 1. 数据理解:数据可视化可以帮助你更好地理解数据,发现数据中的规律和趋势。 2. 决策支持:可视化的数据可以为决策提供直观的支持,帮助你做出更明智的决策。 3. 用户体验:良好的数据可视化可以提高用户体验,使数据更易于理解和使用。 4. 信息传递:可视化的数据可以更有效地传递信息,减少沟通成本。 5. 品牌形象:专业的数据可视化可以提升品牌的专业形象。 反面教材 // 1. 使用不适合的工具 // 复杂的数据可视化使用Chart.js import Chart from 'chart.js/

OpenClaw(Clawdbot)运行原理剖析:你的个人AI操作系统的引擎是如何工作的?

OpenClaw(Clawdbot)运行原理剖析:你的个人AI操作系统的引擎是如何工作的?

OpenClaw(Clawdbot)运行原理剖析:你的个人AI操作系统的引擎是如何工作的? 如果你曾想象过拥有一个能直接操控你电脑、完成实际任务的AI助手,那么理解OpenClaw(原名Clawdbot)的运行原理,就像是在窥探未来个人计算的引擎舱。 最近我深度体验并部署了OpenClaw,这个开源项目将大语言模型的“思考”能力与本地系统的“执行”能力结合,实现了一种全新的交互范式。在这篇博客中,我将结合自己的实践,为你深入剖析OpenClaw是如何在后台协同工作的。 一、核心架构:客户端-服务器模型 OpenClaw最核心的设计采用了经典的客户端-服务器(Client-Server)模型。理解这一点,是理解整个系统的基础。 当你安装OpenClaw后,实际上得到了两个主要部分: * 网关服务(Gateway):作为常驻后台的“服务器”或“引擎” * 用户界面(TUI/Web/聊天软件):作为与用户交互的“客户端” 它们之间的关系,可以用下面的架构图清晰地表示: 发送指令/接收回复 调度与执行 执行层 (技能与连接) 技能库