1、任务概述
本次计划的核心任务是开发一个,个人版的公共用例库,旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理,并以提高用例的复用率为目标,力求最大限度地减少重复劳动,提升测试效率。
计划内容:完成公共用例库的开发实施工作,包括需求分析、系统设计、开发、测试、打包、运行维护等工作。
1.1、 已完成:
需求分析、数据库表的设计:公共用例库计划–个人版(一)
主体界面与逻辑设计:公共用例库计划–个人版(二)
导出Excel功能:公共用例库计划–个人版(三)
模块选择功能改造与性能优化:公共用例库计划–个人版(四)
QtCharts制作首页饼图与柱状图:公共用例库计划–个人版(五)
典型Bug页面设计与开发:公共用例库计划–个人版(六)
Excel导入功能开发与导出功能改造:公共用例库计划–个人版(七)
1.2、 本次待完成:
把Python代码打包成exe文件
打包完成后,公共用例库开发就差不多完成了。后续可能会有需求增改,还有维护的事情了。
2、打包计划
使用第三方库PyInstaller:
PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用。
2.1、安装使用
安装命令
pip install pyinstaller
打包命令
pyinstaller [options] script[.py]
常用命令说明
命令 | 说明 |
---|---|
-h,–help | 查看该模块的帮助信息 |
-F,-onefile | 产生单个的可执行文件 |
-D,–onedir | 产生一个目录(包含多个文件)作为可执行程序 |
-a,–ascii | 不包含 Unicode 字符集支持 |
-d,–debug | 产生 debug 版本的可执行文件 |
-w,–windowed,–noconsolc | 指定程序运行时不显示命令行窗口(仅对 Windows 有效) |
-c,–nowindowed,–console | 指定使用命令行窗口运行程序(仅对 Windows 有效) |
-o DIR,–out=DIR | 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 |
-p DIR,–path=DIR | 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 |
-n NAME,–name=NAME | 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 |
本次打包命令,还需要测试一下:
pyinstaller -D -w -i favicon2.ico TestCase.py # 打包一个不带控制台、指定图标的多个文件exe
或者
pyinstaller -F -w -i favicon2.ico TestCase.py # 打包一个不带控制台、指定图标的单个exe文件
2.2、执行打包命令
2.2.1、本地环境执行打包
-
执行命令
pyinstaller -D -w -i favicon2.ico TestCase.py
提示成功后,代码文件夹生成了build、dist、TestCase.spec文件
可执行文件在dist文件夹内
双击打开,可以运行。但是有个问题是pyqt6打包出来的程序太大了,去网上搜索方法解决。
就那么点功能,占用168 MB,有点点坑了。
3、打包优化
3.1、使用vitrualenv虚拟环境
1.安装
pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
2.创建一个virtualenv环境,要空文件夹
virtualenv 路径
3.激活
# windows
cd myenv/Scripts # 进入Scripts文件夹下
activate # 运行activate
4.安装项目所需要的包
安装完包后,虚拟环境大小达到了213 MB,那看看打包后文件大小。
3.1.2、虚拟环境打包
1.pycharm中切换解释器,打开虚拟环境的终端,执行打包命令
2.执行打包结果:
大小:168 MB——>92.8 MB
文件数:216——>196个
文件夹:19——>13个
优化效果还是很明显,减少了75.2 MB体积。
3.2、使用UPX压缩
1.UPX压缩的技术原理:
加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。
解压原理:是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。
2.下载
https://upx.github.io/
https://github.com/upx/upx
3.使用
下载后,解压得到upx.exe
将upx.exe放到虚拟环境的Scripts目录下
3.2.2、虚拟环境+UPX打包
1.还是在pycharm中切换虚拟环境解释器,打开虚拟环境的终端,执行打包命令
pyinstaller -D -w -i favicon2.ico TestCase.py
2.执行,pyinstaller自己会使用UPX压缩
2.执行打包结果:
大小:92.8 MB——>58.9 MB
文件数:196——>196个
文件夹:13——>13个
优化效果还是比较明显,减少了33.9 MB体积。
3.3、土办法优化–删除不必要文件
1.多语言支持文件夹,不需要。删了省5.64 MB
_internal\PyQt6\Qt6\translations
2.联网、PDF、OpenGL 动态链接库,没用到。删了省11.9 MB
_internal\PyQt6\Qt6\bin:
Qt6Network.dll
Qt6Pdf.dll
opengl32sw.dll
3.图像格式支持,部分用不到。删了省1.1 MB
_internal\PyQt6\Qt6\plugins\imageformats:
qwebp.dll
qtiff.dll
qgif.dll
qicns.dll
qpdf.dll
qtga.dll
4.删除后测试功能可用,体积还是小好多。
大小:58.9 MB——>40.2 MB
文件数:196——>98个
文件夹:13——>12个
3.4、虚拟环境+UPX打包成单文件
1.命令
pyinstaller -F -w -i favicon2.ico TestCase.py
2.打包成单文件,就不能删除无用文件了,但是压缩了还是小很多。
缺点是打开速度比上面多文件慢1秒左右(应该是解压缩时间)。多文件打开需要3秒左右,单文件打开需要4秒左右。
4、总结
经过一系列优化,打包成多文件的exe程序,大小到了40.2 MB,单文件32.7 MB虽然小7.5 MB,但是文件不透明,启动慢一点。后续应该会使用多文件。
优化幅度:(168-40.2)/168*100%=76.07%
大小:168 MB——>40.2 MB
文件数:216——>98个
文件夹:19——>12个
打包文件放度盘了
链接:https://pan.baidu.com/s/16XlLXKi0MN648UBWnkJ1iQ?pwd=tvfj
提取码:tvfj
最后还在编写各用例中: