1.安装pyinstaller
pip install pyinstaller
2.找到main.py文件,修改一下pytest.mian
from allure_pytest import plugin as allure_plugin # 生成JSON数据,加上--clean-alluredir解决JSON文件生成冗余问题 args = ["-v", "-s", "--alluredir=report/allure", "--clean-alluredir"] pytest.main(args=args, plugins=[allure_plugin])
不然会提示错误:ERROR: usage: main.exe [options] [file_or_dir] [file_or_dir] [...] main.exe: error: unrecognized arguments: --alluredir=report/allure --clean-alluredir inifile: G:\vss\Android\pytest.ini rootdir: G:\vss\Android
3.在pytest.ini中增加参数:addopts = --import-mode=append 保证包正确导入。
addopts = --import-mode=append
4.执行打包
在pycharm的终端输入以下代码:
pyinstaller -F main.py
等待打包结束即可。会生成一个build,dist文件夹和main.spec文件。exe文件就在dist下。
遇到的报错解决:
1.ImportError: cannot import name 'webdriver' from 'appium' (C:\Users\admin\AppData\Local\Temp_MEI258962\appium__init__.pyc)
在命令中增加hidden参数:
--hidden-import appium.webdriver
如果仅提示cannot import name 'xxx'。直接--hidden-import xxx即可。
2.ERROR: usage: main.exe [options] [file_or_dir] [file_or_dir] [...] main.exe: error: unrecognized arguments: --alluredir=report/allure --clean-alluredir inifile: G:\vss\Android\pytest.ini rootdir: G:\vss\Android
如上修改main.py文件即可。
3.部分包没有进行打包需要手动导入。
ImportError while importing test module 'C:\Users\admin\Desktop\TEST\dist\testcases\testSearch\test_search_result.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: _pytest\python.py:617: in _importtestmodule ??? _pytest\pathlib.py:564: in import_path ??? importlib\__init__.py:127: in import_module ??? _pytest\assertion\rewrite.py:172: in exec_module ??? G:\vss\Android\testcases\testSearch\test_search_result.py:9: in <module> from appium.webdriver.common.mobileby import MobileBy E ModuleNotFoundError: No module named 'appium.webdriver.common.mobileby'
比如我这个,就需要手动导入appium包即可。在参数后面增加你appium安装的路径即可。
--add-data "E:\pycharmproject\test01\venv\Lib\site-packages\appium;appium"
;前面替换成自己的路径,后面是打包后的名字一般默认一样。
4.收集用例为0
需要自己将项目的用例等文件夹按照项目本来的结构复制到main.exe所在的文件夹中即可。一般main.py是在根目录,所以只需将其他文件夹拷贝到dist文件夹下即可。
最后我的命令是:
pyinstaller main.py -F -p E:\pycharmproject\test01\venv\Lib\site-packages --hidden-import allure --hidden-import appium --hidden-import appium.webdriver --hidden-import yaml --add-data "E:\pycharmproject\test01\venv\Lib\site-packages\appium;appium"
仅供大家参考。。。