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

机器人导论 第六章 动力学(1)——牛顿欧拉法推导与详述

机器人导论 第六章 动力学(1)——牛顿欧拉法推导与详述

机器人动力学分析复习速通 机器人分析分为 牛顿欧拉法、拉格朗日法、高斯法、凯恩方法 matlab提供的逆动力学采用的是牛顿欧拉法:RNE——Recursive Newton-Euler 需要三个参数,第一个是给定最终的角度,第二个是速度,第三个是角加速度,返回各个关节所需要的力矩。 可选参数有重力加速度和负载fext 牛顿欧拉法 我们的目标是给定机器人的关节位置 q、速度 qd 和加速度 qdd,计算出为了产生这个运动状态,每个关节需要施加多大的驱动力矩 。 一上来看到有人问——我们不是用力域雅可比解决了每个关节应该分配多大力矩的问题了吗? 这是我初学的时候也弄混的问题。 “力域雅可比”解决的是一个不同的问题,属于静力学或外力映射范畴,他的目的是将作用在机器人末端执行器上的外力/力矩 映射到对应的关节空间力矩 。 区别就是一个是给定运动状态,计算每个关节为了达到这个运动状态需要多大力; 另一个则是给定末端的力,计算这个力分配在各个关节上是多大。 牛顿欧拉法的精髓在于正推和逆推,我们来看这个过程: * 正向递推(Forward Recursion):从基

鸿蒙与Android双平台LLaMA.cpp部署指南(保姆级)

鸿蒙与Android双平台LLaMA.cpp部署指南(保姆级)

在鸿蒙(OpenHarmony)与 Android 上部署 LLaMA.cpp 模型推理全流程(超详细) 手把手完成模型转换 → 交叉编译 → 设备部署,支持 OpenHarmony 与 Android 双平台,面向 ARM64 真机。 📚目录 1. 前言 2. 环境准备 3. 模型准备(GGUF) 4. 鸿蒙交叉编译 5. Android 交叉编译 6. 推送至设备 7. 运行推理 8. 常见问题 9. 结语 一、前言 把大模型跑在手机/鸿蒙板子上,只需 llama.cpp + 交叉编译 + 推送运行

开源分享:AI Agent Skills 资源合集,一键安装 Cursor/Claude Code/Copilot 技能包

前言 最近在使用 Cursor 和 Claude Code 进行开发,发现 Agent Skills 这个功能非常强大——它可以让 AI 更专业地完成特定任务,比如代码审查、生成 Git Commit、自动生成测试用例等。 但网上的资源比较零散,于是我整理了一个开源合集分享给大家。 项目地址 GitHub:https://github.com/JackyST0/awesome-agent-skills 什么是 Agent Skills? Agent Skills 是 AI Agent 可以发现和使用的指令、脚本和资源包。 简单来说,就是给 AI 一套「技能说明书」,让它知道如何更专业地帮你完成工作。 比如: * 代码审查 Skill:AI 按照最佳实践审查代码,给出改进建议

Nunchaku FLUX.1 CustomV3:让AI绘画变得简单又高效

Nunchaku FLUX.1 CustomV3:让AI绘画变得简单又高效 你是不是也遇到过这些情况: 想用AI画一张海报,结果调了半小时参数,生成的图不是手多一只,就是背景糊成一团; 下载了一个新模型,光是装依赖、配环境就折腾一整天,最后连界面都没打开; 看到别人发的精美插画心痒痒,可翻遍教程还是搞不清“CLIP”“LoRA”“CFG scale”到底在哪儿改、怎么调…… 别急——这次不用折腾。Nunchaku FLUX.1 CustomV3 镜像,就是为“不想研究原理,只想马上出图”的你准备的。 它不是又一个需要手动拼接节点、反复调试权重的复杂工作流,而是一套开箱即用、单卡RTX4090就能跑、改两行文字就能出高质量图的文生图方案。背后融合了 FLUX.1-dev 的强生成能力、FLUX.1-Turbo-Alpha 的响应速度,以及 Ghibsky Illustration LoRA 的细腻画风加持—