jenkins+pytest+allure+python ModuleNotFoundError: No module named 'pytest'

这篇博客讨论了在 Jenkins 持续集成环境中遇到的 Python 库找不到的问题,特别是 pytest。问题在于本地 PyCharm 的第三方插件路径与 Jenkins 的 Python 环境不一致。解决方案是手动删除 pytest 相关库,然后通过命令行使用 pip 在与 Python 环境一致的路径下重新安装,确保所有库都在正确的位置。同时,列举了多个用于测试报告和日志管理的 pytest 插件,如 pytest-html, pytest-describe 等。
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import pytest
ModuleNotFoundError: No module named 'pytest'
当程序在本地可以运行并可生成报告,但是在jenkins里面提示找不到pytest库之类的,这种情况多半是pycharm工具第三方插件安装在默认的路径中,没有跟python环境的路径一致。所以jenkins找不到,本地pycharm可以找到。需要手动去pytest库(删除整个路径),删除后,在cmd中使用命令安装,安装的同时可以看到路径跟python的安装路径是一致的。
手动安装命令:
pip install pytest-html  自动生成 HTML 格式测试报告
pip install pytest-describe  给测试用例一个美丽的名字
pip install pytest-autochecklog(不只是自动生成测试日志)
pip install sugar  测试进度可视化
pip install ordering  改变测试用例的顺序
pip install allure-pytest (生成 allure报告)


### 概述 搭建集成 **GitHub、JenkinsPytestAllure** 的自动化测试平台,主要涉及以下几个方面: 1. 使用 Docker 部署 Jenkins 环境; 2. 在 Jenkins 中配置 Pytest 测试任务; 3. 集成 Allure 报告生成插件; 4. 与 GitHub 进行连接,实现代码推送后自动触发测试流程。 --- ### 使用 Docker 部署 Jenkins 环境 可以使用 `docker-compose.yml` 文件快速部署 Jenkins 容器,并确保其具备运行 Python 自动化测试的能力。以下是一个完整的配置示例: ```yaml version: '3' services: jenkins: image: jenkins/jenkins:lts privileged: true user: root ports: - "8080:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 volumes: jenkins_home: ``` 启动容器后,在浏览器中访问 `http://<服务器IP>:8080` 即可进入 Jenkins 初始化界面。初始化完成后,登录并进行必要的插件安装和全局工具配置[^3]。 --- ### Jenkins 中配置 Pytest 测试任务 在 Jenkins 中创建一个新的自由风格项目(Freestyle Project),并进行如下配置: #### 1. 源码管理(Source Code Management) 选择 Git,并填写你的 GitHub 仓库地址以及凭据(建议使用 Personal Access Token): ``` Repository URL: https://github.com/yourname/yourrepo.git Branches to build: */main 或 */master ``` #### 2. 构建环境(Build Environment) 勾选 “Delete workspace before build starts”,确保每次构建都是干净的环境。 #### 3. 构建步骤(Build Steps) 选择“Execute shell”或“Windows Batch Command”,根据系统类型执行以下命令: ```bash # 安装依赖 pip install -r requirements.txt # 执行 Pytest 测试并将结果输出到 allure-results 目录 pytest test_your_module.py --alluredir=./allure-results --clean-alluredir ``` --- ### 配置 Allure 报告插件 在 Jenkins 插件管理中安装 **Allure Report Plugin**,然后在项目的“Post-build Actions”中添加“Report Generation”,指定 Allure 结果目录为 `./allure-results`。 完成配置后,每次构建成功后会自动生成可视化的 Allure 测试报告页面。 --- ### 与 GitHub 集成实现持续集成 在 GitHub 仓库中设置 Webhook,指向 Jenkins 的钩子地址,例如: ``` http://<jenkins-server>:8080/github-webhook/ ``` 这样当有新的提交推送到 GitHub 时,Jenkins 就会自动拉取代码并触发构建任务,从而实现完整的 CI/CD 流程。 --- ### 示例:完整 Jenkinsfile 实现(适用于 Pipeline) 如果使用 Jenkins Pipeline,可以在项目根目录下创建 `Jenkinsfile`,内容如下: ```groovy pipeline { agent any stages { stage('Clone Repository') { steps { git branch: 'main', url: 'https://github.com/yourname/yourrepo.git' } } stage('Install Dependencies') { steps { sh 'pip install -r requirements.txt' } } stage('Run Tests') { steps { sh 'pytest test_your_module.py --alluredir=./allure-results --clean-alluredir' } } } post { always { allure includeProperties: false, jdk: '', results: [[path: 'allure-results']] } } } ``` 该文件定义了从代码拉取、依赖安装、执行测试到生成 Allure 报告的全过程。 --- ### 注意事项 - 确保 Jenkins 容器内已安装 PythonPytest 及相关依赖库; - 若 Jenkins 运行在 Linux 系统上,推荐使用虚拟环境(如 `venv`)隔离测试依赖; - Jenkins 容器需要具有读写权限以生成 Allure 报告; - 如果遇到权限问题,可在容器启动时加上 `-uroot` 参数以提升权限级别。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值