使用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重新打包后即可解决

相关推荐
Sagittarius_A*1 分钟前
图像滤波:手撕五大经典滤波(均值 / 高斯 / 中值 / 双边 / 导向)【计算机视觉】
图像处理·python·opencv·算法·计算机视觉·均值算法
开开心心_Every5 分钟前
一键隐藏窗口到系统托盘:支持任意软件摸鱼
服务器·前端·python·学习·edge·django·powerpoint
我叫汪枫7 分钟前
Python 实战:把 PDF 表格完整转换成 Excel(小白教程)
python·pdf·excel
C+-C资深大佬9 分钟前
python条件控制与if语句
python
电化学仪器白超21 分钟前
计量室电路板长期稳定性自动化测试系统开发与部署
python·单片机·嵌入式硬件·自动化
MediaTea38 分钟前
Python OOP 设计思想 13:封装服务于演化
linux·服务器·前端·数据库·python
love530love39 分钟前
突破 ComfyUI 环境枷锁:RTX 3090 强行开启 comfy-kitchen 官方全后端加速库实战
人工智能·windows·python·cuda·comfyui·triton·comfy-kitchen
wang60212521840 分钟前
流式输出注意点
python·状态模式·fastapi
未定义.22142 分钟前
第3篇:UI自动化核心操作:输入、点击、弹窗、下拉框全场景实战
运维·python·ui·自动化·jenkins·集成测试·pytest
276695829244 分钟前
vercel 安全检测逆向 x-vercel-challenge-solution
开发语言·python·solution·vercel-solution·x-vercel·vercel逆向·ensun