pyinstaller打包pytest的自动化程序为exe文件

文章介绍了如何使用PyInstaller进行Python程序打包,包括安装pyinstaller、修改pytest配置以解决allure报告的错误、处理import模块问题,以及添加hidden-import和--add-data参数来确保所有依赖都被包含。此外,还提到了如何解决收集用例为0的问题和一些常见的报错解决方案。
摘要由CSDN通过智能技术生成

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"

仅供大家参考。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值