解决双击运行:pyinsaller打包python+pytest+allure生成dist文件夹run_suite.exe报错相关问题

解决双击运行:pyinsaller打包python+pytest+allure生成dist文件夹中可执行程序“run_suite.exe”报错相关问题

一、首先确保环境有python的pyinstaller第三方库

PyInstaller 是一个独立的第三方库,用于将Python应用程序打包成可执行文件。它可以将Python代码及其依赖项打包成独立的可执行文件,让用户能够在没有安装Python解释器的情况下运行应用程序

1、在解决报错之前,确保已经安装pyinstaller插件,安装方式:
第一种方法:直接在终端执行

pip install pyinstaller 

第二种方法:是使用源下载

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

2、验证是否安装成功,在终端执行:
打开命令行终端(Windows:cmd,Mac/Linux:Terminal)。
在命令行中输入以下命令来验证PyInstaller是否成功安装:

pyinstaller --version

在这里插入图片描述

二、解决下述各类报错问题

1、打包运行 pyinstaller -D xxx.py 打包成功后 双击执行xxx.exe报错 如图:

报错信息:ERROR: usage: run suite.exe [options] [file or dir] [file or dir] l…run suite.exe: error:unrecognized arguments:-alluredir --cleanalluredirinifile: F:\web AutoTest\pytest.inirootdir:F:web AutoTest reportdoes not exist Report successfully generated to allure report在这里插入图片描述
问题的原因:使用pyonstaller打包,未导入第三方库allure
解决方案:打包时加入测试用例文件夹,先删除现有的dist、build文件夹和run_suite.spec文件,后在终端 Terminal执行下方打包命令

 pyinstaller --add-data "allure-report:allure-report" run_suite.py

2、打包运行 pyinstaller -D xxx.py 打包成功后 双击执行xxx.exe报错无可执行的测试用例 如图:在这里插入图片描述

问题的原因:使用pyonstaller打包,未加入测试用例
解决方案:打包时加入测试用例文件夹,先删除现有的dist、build文件夹和run_suite.spec文件,后在终端 Terminal执行下方打包命令

pyinstaller --add-data "./testcases;testcases" run_suite.py

3、解决配置问题

1、pytest.ini文件增加addopts = --import-mode=append,实现所有import模块都能执行

[pytest]
log_cli = True
log_cli_level = DEBUG
log_file_level = DEBUG
log_file_date_format = %Y-%m-%d %H:%M:%S
log_file_format = %(asctime)s  %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s


addopts = --import-mode=append -sv --alluredir report --clean-alluredir
# addopts = -sv --alluredir report --clean-alluredir
testpaths = ./testcases
python_files = test*.py
python_classes = Test*
python_functions = test_*

2.、修改run_suite.py文件生成报告的代码方式

import os
import pytest
from allure_pytest import plugin as allure_plugin

if __name__ == "__main__":
    # pytest.main()
    # os.system("allure generate report --clean")
    """
    上述注释掉的是原来的代码,下方是经过修改的代码
    """
    args = ["-v", "-s", "--alluredir=report/allure", "--clean-alluredir"]
    pytest.main(args=args, plugins=[allure_plugin])
    # 生成 Allure 报告
    allure_report_dir = "report"
    os.system(f"allure generate {allure_report_dir} --clean")

4、解决E ModuleNotFountError: No module name ‘XXXXXX’

1、E ModuleNotFountError: No module name‘ page’;E ModuleNotFountError: No module name ‘config’;E ModuleNotFountError: No module name ‘utils’;。。。。。。

在这里插入图片描述

问原因:未把依赖文件打包到可执行exe文件相同目录
解决方案:把pytest执行的测试用例testcases文件夹,相关依赖文件夹base、common、page、中的py文件和run_suite.py文件相同目录的config.py也放在和使用pyinstaller打包的exe文件相同目录下,先删除现有的dist、build文件夹和run_suite.spec文件,后在终端 Terminal执行下方打包命令**

pyinstaller --add-data "./testcases;testcases" --add-data "./base/*.py;base" --add-data "./common/*.py;common" --add-data "./page/*.py;page" --add-data "./config.py;." run_suite.py

2、双击运行使用pyinstaller dist 文件夹中run_suite.exe报错:from selenium.webdriver.common.by import ByModuleNotFoundError :No module named 'selenium
在这里插入图片描述
问题原因:部分包没有进行打包需要手动导入
解决方案:先删除现有的dist、build文件夹和run_suite.spec文件,后在终端 Terminal执行下方打包命令
****

pyinstaller --add-data "./testcases;testcases" --add-data "./base/*.py;base" --add-data "./common/*.py;common" --add-data "./page/*.py;page" --add-data "./config.py;." --hidden-import "selenium" --hidden-import "selenium.webdriver" --hidden-import "selenium.webdriver.common" --hidden-import "selenium.webdriver.common.by" run_suite.py

5、解决读取文件异常问题

报错信息with open(BASE_DIR + “./data/login_data.json”, encoding=“utf-8”) as f: E FileNotFoundError: [Errno 2] No such file or directory: ‘F:\web_AutoTest\dist\run_suite\_internal./data/login_data.json’;
在这里插入图片描述
问题原因:windows读取文件格式是反斜杠:
解决方案:把test_login.py中打开文件代码改为:
with open(BASE_DIR + r"\data\login_data.json", encoding=“utf-8”) as f:

在这里插入图片描述
上述所有问题。然后在文件夹F:\web_AutoTest\dist\run_suite中双击run_suite.exe,就能看到执行自动化测试用例的过程了
下方供上执行过程视频及allure报告

**执行过程中**

**执行完之后**


在这里插入图片描述

上述解决方案仅供大家参考,谢谢捧场

  • 31
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
接口自动化测试框架是基于Python语言开发的,主要使用了以下几个工具和库:requests、yami、pytestallure和logging。 首先,requests是Python中一个常用的HTTP库,在接口测试中用于发送HTTP请求,并获取响应结果。它提供了简洁的API,使得发送各种类型的请求变得非常方便。 其次,yami是一个用于解析接口返回数据的库。它可以帮助我们从HTTP响应中提取所需的数据,并进行断言判断,比如验证返回的状态码、响应内容等。 然后,pytest是一个Python的测试框架,它具有很强大的测试用例管理和执行能力。我们可以使用pytest来编写接口测试用例,并结合fixture功能对测试环境进行初始化和清理工作。 allure是一个用于生成测试报告的工具。它可以将测试结果以可视化的方式展示,同时具备丰富的报告元素,比如用例执行状态、失败原因等。这样可以方便查看测试结果,快速定位问题。 最后,logging是Python内置的日志记录工具,在接口自动化测试中,我们可以使用logging来记录一些重要的操作或错误信息,帮助我们进行调试和问题追踪。 综上所述,以上工具和库是常用于搭建接口自动化测试框架的重要组成部分。通过它们的结合使用,可以辅助我们完成接口测试的各项工作,包括发送请求、解析响应、断言判断、测试用例管理、生成测试报告等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值