本文主要是介绍pyintaller pyqt5 pytest打包后 找不到测试实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
pyintaller pyqt5 pytest打包后 找不到测试实例
1.项目目录
my_project/
├── src/
│ ├── tests/
│ │ ├── test_example.py
│ ├── main.py
├── my_project.spec
2.main.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
import pytest
import osclass TestApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('Run Pytest Example')layout = QVBoxLayout()self.runButton = QPushButton('Run Tests', self)self.runButton.clicked.connect(self.run_tests)layout.addWidget(self.runButton)self.setLayout(layout)def run_tests(self):current_dir = os.path.dirname(os.path.abspath(__file__))test_dir = os.path.join(current_dir, 'src/tests')pytest.main([test_dir])if __name__ == '__main__':app = QApplication(sys.argv)ex = TestApp()ex.show()sys.exit(app.exec_())
3.编写测试用例:在 src/tests/test_example.py 中编写测试用例。
def test_example():assert 1 + 1 == 2
4.创建 .spec 文件:使用 PyInstaller 生成 .spec 文件,并在其中添加资源文件
# my_project.spec
# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['src\\main.py'],pathex=['.'],binaries=[],datas=[('src\\tests', 'src\\tests')],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='my_project',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=True,
)
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='my_project',
)
5.使用 PyInstaller 打包:在命令行中运行以下命令来打包你的应用程序:
pyinstaller my_project.spec
pyinstaller --onefile --hidden-import=unittest.mock --add-data "src\tests;src\tests" src/main.py
即可解决
这篇关于pyintaller pyqt5 pytest打包后 找不到测试实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!