使用 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

旧电脑秒变 AI 员工:OpenClaw 本地部署教程(含环境配置 + 插件开发 + 常见坑)

旧电脑秒变 AI 员工:OpenClaw 本地部署教程(含环境配置 + 插件开发 + 常见坑)

前言 本文基于最新OpenClaw版本编写,适配电脑低配置场景(最低2vCPU+2GiB内存+40GiB SSD),兼容Windows 10/11(优先WSL2)、Ubuntu 20.04+系统,全程纯操作指令,覆盖环境配置、本地部署、插件开发、高频坑排查。核心解决部署卡顿、国内网络适配、插件开发无思路、报错无法排查四大痛点,全程适配国内网络(国内镜像源)、国内大模型(通义千问、阿里云百炼等),无需海外代理,可稳定运行实现自动化办公(文件处理、IM对接、任务调度等)。 一、前置准备(适配优化) 1.1 硬件要求(最低适配) * CPU:Intel i3 4代+/AMD Ryzen 3 2000+(支持虚拟化,

从 ReAct 到 Plan-and-Execute:AI Agent 推理架构的理解与选择

从 ReAct 到 Plan-and-Execute:AI Agent 推理架构的理解与选择

最近在做一个企业办公 Agent 项目,过程中花了不少时间研究 Agent 的推理架构该怎么选。市面上最主流的两种模式——ReAct 和 Plan-and-Execute——看起来都能用,但深入了解后我发现它们的设计哲学完全不同,适用场景也差异很大。 一、先说一个最基本的问题:Agent 为什么需要"推理"? LLM 本身就能回答问题,为什么还要给它加推理框架? 因为 LLM 只会"说",不会"做"。当用户说"帮我创建一个明天截止的任务",LLM 可以生成一段漂亮的文字描述应该怎么做,但它没有手去操作数据库。Tool(或者叫 Skill)就是给 LLM 装上了手脚——它可以调用接口、查询数据、执行操作。 但问题来了:

从0到上线只需3小时!飞算JavaAI引爆全民编程革命:不懂代码也能做系统,AI全自动开发时代来了!

从0到上线只需3小时!飞算JavaAI引爆全民编程革命:不懂代码也能做系统,AI全自动开发时代来了!

目录 一、我是个“编程小白”,但我也有梦想 二、飞算AI到底是什么?一句话说清楚 类比理解: 三、飞算JavaAI的核心功能(小白也能听懂) 1. 智能引导 2. JavaChat 3. 智能问答 4. SQL Chat 5. 编程智能体 四、我的真实体验:从“0”到“上线”只要3小时  注册和登录 使用:  个人感受: 五、飞算AI vs 国内外主流AI编程工具(详细对比) 详细对比分析 1. 功能定位不同 2. 对小白的友好度 3. 生成代码的质量 4. 部署能力 5. 技术栈支持 六、