Python [已解决] pytest.main () 打包后,插件参数无法被正确的识别,有大佬碰到过吗

M · December 06, 2019 · Last by findmeboyu replied at January 13, 2020 · 994 hits

如图,使用pyinstaller打包测试后,在调用pytest.main()时,运行后提示如下:

pytest调用如下:

def m_run(case_path, allure_path, test_count, allure_report_path):
pytest.main(['-v',
'-s',
case_path,
'--alluredir',allure_path,
'--count', str(test_count),
'--repeat-scope=function',
'--disable-warnings',
'--capture=no',
])

pyinstaller的spec文件如下:

block_cipher = None


a = Analysis(['D:\\mytools\\SmokingTestCase_for_exe\\run_ui.py'],
pathex=['C:\\Users\\Dell','D:\\mytools\\SmokingTestCase_for_exe',
'D:\\mytools\\python\\python3_7\Lib\\site-packages'],
binaries=[],
datas=[('D:\\mytools\\SmokingTestCase_for_exe\\testcase\\*.py',
'testcase'),
('D:\\mytools\\SmokingTestCase_for_exe\\testdata\\*.yaml',
'testdata'),
('D:\\mytools\\SmokingTestCase_for_exe\\page\\*.py',
'page'),
('D:\\mytools\\SmokingTestCase_for_exe\\*.py',
'.'),
],
hiddenimports=['page','myemail','mylog'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='run_ui',
debug=True,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )

完全没头绪为什么会出现这种情况,去除 -allure和--count两个参数就能正常运行,求大佬帮助

最佳回复

已解决,方法如下:
根据错误是因为Pytest无法识别到命令,具体为什么打包后就识别不到了,这个不得而知,pytest有添加自定义命令的功能,只需要将用到的命令添加进去让Pytest能识别到就好了,需要在conftest.py文件中编写,代码如下:

def pytest_addoption(parser):
parser.addoption('--alluredir')
parser.addoption('--count')
parser.addoption('--repeat-scope')

共收到 16 条回复 时间 点赞
M #1 · December 06, 2019 作者

1

想了解下,-allure和--count这两个参数,是从什么资料上找到并用来使用的?

从错误信息上看,程序本身并不支持这两个参数。

M #3 · December 06, 2019 作者
陈恒捷 回复

是这样的 没打包成exe的时候用这个pytest.mian可以正常运行,然后打包后就这个main就不认识这些参数了,--allure和--count这两个参数是pytest的插件,一个是测试报告的,一个是重复测试用例的,通过pip下载的

已解决,方法如下:
根据错误是因为Pytest无法识别到命令,具体为什么打包后就识别不到了,这个不得而知,pytest有添加自定义命令的功能,只需要将用到的命令添加进去让Pytest能识别到就好了,需要在conftest.py文件中编写,代码如下:

def pytest_addoption(parser):
parser.addoption('--alluredir')
parser.addoption('--count')
parser.addoption('--repeat-scope')

你好 我现在也出现了你的打包问题 我想具体咨询下 代码层写不出来

能具体看下编译的这块代码吗


你填的参数是alluredir ,运行结束,没有生成allure报告???求大佬赐教


这是我的报告路径,求解

M #9 · January 13, 2020 作者
findmeboyu 回复

生成报告不是还要用命令行 allure -o才能生成?我的都能正常运行 ,你这也没看出什么错误呀

我的现在都没有生成allure的json文件


您这conftest.py文件里面还有什么其他关联性代码吗

我把这个文件放在了根目录下


你的启动命令是这个吗

M #14 · January 13, 2020 作者
findmeboyu 回复

直接双击运行的exe,你用绝对路径试一下

可以加个微信吗18860888971,我被这个搞得两周了


这是我的打包命令

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up