使用pyinstaller打包pytest项目

1、引入测试用例

(1)在打包时将测试用例包含在exe里

打包时加入以下参数,左边的是打包前测试用例的所在目录,右边的是解压后的临时目录名称

复制代码
--add-data="Test_case1;Test_Case1"

(2)由于pyinstaller打包的exe运行逻辑是先把包里的东西解压到临时目录再运行,因此需要在代码里将测试用例的路径做自适应,使其在编译器中和打包后都能正常找到用例

复制代码
def resource_path(relative_path):
    """获取资源的绝对路径,兼容开发和打包后"""
    if hasattr(sys, '_MEIPASS'):
        # 打包后:_MEIPASS 指向临时解压目录
        base_path = sys._MEIPASS
    else:
        # 开发时:使用当前目录
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

如上所述,将用例的目录路径传入函数即可得到实际的路径

2、手动导入第三方模块

由于pyinstaller并不那么智能,通常我们的代码都是分开多个文件去写,使用打包指令 pyinstaller main.py 进行打包后,会导致打包后有些模块找不到,这时候需要在打包时手动去引入模块

如果使用--hidden-import进行引入后仍报错,大概率是还用到了该模块下的子模块,需要使用--collect-all,将模块完整引入。

如下所示,使用--hidden-import引入pytestTestreport 仍报错:

复制代码
usage: main.exe [options] [file_or_dir] [file_or_dir] [...]
main.exe: error: unrecognized arguments: --html=musen.html

使用--collect-all重新打包后即可解决

相关推荐
2301_8223663520 分钟前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
小郎君。40 分钟前
【无标题】
python
喵手1 小时前
Python爬虫实战:数据治理实战 - 基于规则与模糊匹配的店铺/公司名实体消歧(附CSV导出 + SQLite持久化存储)!
爬虫·python·数据治理·爬虫实战·零基础python爬虫教学·规则与模糊匹配·店铺公司名实体消岐
喵手1 小时前
Python爬虫实战:国际电影节入围名单采集与智能分析系统:从数据抓取到获奖预测(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集国际电影节入围名单·从数据抓取到获奖预测
派葛穆2 小时前
Python-PyQt5 安装与配置教程
开发语言·python·qt
自可乐2 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
可触的未来,发芽的智生2 小时前
发现:认知的普适节律 发现思维的8次迭代量子
javascript·python·神经网络·程序人生·自然语言处理
真智AI3 小时前
用 LLM 辅助生成可跑的 Python 单元测试:pytest + coverage 覆盖率报告(含运行指令与排坑)
python·单元测试·pytest
0思必得03 小时前
[Web自动化] Selenium处理文件上传和下载
前端·爬虫·python·selenium·自动化·web自动化
Hui Baby3 小时前
Java SPI 与 Spring SPI
java·python·spring