Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
df5a1b98
提交
df5a1b98
authored
4月 16, 2025
作者:
陈泽健
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复因xlsx文件打开读取后没有关闭导致的文件损坏问题,优化read_xlsx_data函数,增加关闭文件操作。
上级
317c152b
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
67 行增加
和
62 行删除
+67
-62
base.py
预定系统/Base/base.py
+60
-56
README.md
预定系统/README.md
+3
-2
展厅会议室中控屏.cpython-310.pyc
...ases/展厅巡检/05展厅会议室中控屏/__pycache__/展厅会议室中控屏.cpython-310.pyc
+0
-0
展厅会议室中控屏.py
预定系统/cases/展厅巡检/05展厅会议室中控屏/展厅会议室中控屏.py
+4
-4
01展厅会议室中控屏.cpython-310.pyc
.../cases/展厅巡检/11环境清除/__pycache__/01展厅会议室中控屏.cpython-310.pyc
+0
-0
会议预定测试用例.xlsx
预定系统/测试数据/会议预定测试用例.xlsx
+0
-0
长安大学测试用例.xlsx
预定系统/测试数据/长安大学测试用例.xlsx
+0
-0
没有找到文件。
预定系统/Base/base.py
浏览文件 @
df5a1b98
...
...
@@ -469,6 +469,9 @@ def read_csv_data(csv_file_path):
# 读取测试用例xlsx文件中的JSON数据进行数据驱动函数
import
openpyxl
import
openpyxl
import
json
from
hytest
import
INFO
def
read_xlsx_data
(
xlsx_file_path
,
sheet_name
=
None
,
case_type
=
None
):
"""
读取XLSX文件中的数据,并将其转换为一个包含字典的列表,每个字典代表一行测试用例数据。
...
...
@@ -482,73 +485,74 @@ def read_xlsx_data(xlsx_file_path, sheet_name=None, case_type=None):
list: 包含字典的列表,每个字典包含测试用例的名称和参数。
"""
try
:
# 打开XLSX文件
workbook
=
openpyxl
.
load_workbook
(
xlsx_file_path
)
except
FileNotFoundError
:
raise
FileNotFoundError
(
f
"文件未找到: {xlsx_file_path}"
)
except
Exception
as
e
:
raise
Exception
(
f
"无法打开文件: {e}"
)
# 选择工作表
if
sheet_name
:
try
:
sheet
=
workbook
[
sheet_name
]
except
KeyError
:
raise
KeyError
(
f
"工作表未找到: {sheet_name}"
)
else
:
sheet
=
workbook
.
active
# 读取表头,从第三行开始
headers
=
[
cell
.
value
for
cell
in
sheet
[
3
]]
# 使用 with 语句打开 XLSX 文件,确保文件在读取完成后自动关闭
with
openpyxl
.
load_workbook
(
xlsx_file_path
,
read_only
=
True
)
as
workbook
:
# 选择工作表
if
sheet_name
:
try
:
sheet
=
workbook
[
sheet_name
]
except
KeyError
:
raise
KeyError
(
f
"工作表未找到: {sheet_name}"
)
else
:
sheet
=
workbook
.
active
# 读取表头,从第三行开始
headers
=
[
cell
.
value
for
cell
in
sheet
[
3
]]
# 打印表头列名
# INFO(f"表头列名: {headers}")
# 找到表头中名为 'JSON' 和 '功能类别' 的列索引
try
:
json_index
=
headers
.
index
(
'JSON'
)
except
ValueError
as
e
:
raise
ValueError
(
f
"表头中没有找到所需的列: {e}"
)
# 打印表头列名
# INFO(f"表头列名: {headers}")
try
:
category_index
=
headers
.
index
(
'功能类别'
)
except
ValueError
as
e
:
raise
ValueError
(
f
"表头中没有找到所需的列: {e}"
)
# 找到表头中名为 'JSON' 和 '功能类别' 的列索引
try
:
json_index
=
headers
.
index
(
'JSON'
)
except
ValueError
as
e
:
raise
ValueError
(
f
"表头中没有找到所需的列: {e}"
)
ddt_cases
=
[]
# 遍历XLSX文件中的每一行数据,从第四行开始
for
row_num
,
row
in
enumerate
(
sheet
.
iter_rows
(
min_row
=
4
,
values_only
=
True
),
start
=
4
):
# 获取 JSON 列的数据
json_data
=
row
[
json_index
]
try
:
category_index
=
headers
.
index
(
'功能类别'
)
except
ValueError
as
e
:
raise
ValueError
(
f
"表头中没有找到所需的列: {e}"
)
# 打印 JSON 数据以进行调试
INFO
(
f
"行 {row_num} 的 JSON 数据: {json_data}"
)
ddt_cases
=
[]
# 遍历XLSX文件中的每一行数据,从第四行开始
for
row_num
,
row
in
enumerate
(
sheet
.
iter_rows
(
min_row
=
4
,
values_only
=
True
),
start
=
4
):
# 获取 JSON 列的数据
json_data
=
row
[
json_index
]
# 检查 JSON 数据是否为空
if
json_data
is
None
or
json_data
.
strip
()
==
""
:
# INFO(f"跳过行 {row_num},JSON 数据为空")
continue
# 打印 JSON 数据以进行调试
INFO
(
f
"行 {row_num} 的 JSON 数据: {json_data}"
)
# 解析 JSON 字符串
try
:
parsed_json
=
json
.
loads
(
json_data
)
except
json
.
JSONDecodeError
:
raise
ValueError
(
f
"行 {row_num} 的 JSON 数据无法解析: {json_data}"
)
# 检查 JSON 数据是否为空
if
json_data
is
None
or
json_data
.
strip
()
==
""
:
# INFO(f"跳过行 {row_num},JSON 数据为空")
continue
# 获取功能类别
category
=
row
[
category_index
]
# 解析 JSON 字符串
try
:
parsed_json
=
json
.
loads
(
json_data
)
except
json
.
JSONDecodeError
:
raise
ValueError
(
f
"行 {row_num} 的 JSON 数据无法解析: {json_data}"
)
# 检查是否需要过滤测试用例类型
if
case_type
and
category
!=
case_type
:
continue
# 获取功能类别
category
=
row
[
category_index
]
# 将解析后的 JSON 数据添加到列表中
ddt_cases
.
append
(
parsed_json
)
# 检查是否需要过滤测试用例类型
if
case_type
and
category
!=
case_type
:
continue
# 日志记录:XLSX文件已读取
INFO
(
"XLSX文件已读取"
)
# 返回包含所有测试用例数据的列表
return
ddt_cases
# 将解析后的 JSON 数据添加到列表中
ddt_cases
.
append
(
parsed_json
)
except
FileNotFoundError
:
raise
FileNotFoundError
(
f
"文件未找到: {xlsx_file_path}"
)
except
Exception
as
e
:
raise
Exception
(
f
"无法打开文件: {e}"
)
# 日志记录:XLSX文件已读取
INFO
(
"XLSX文件已读取"
)
# 返回包含所有测试用例数据的列表
return
ddt_cases
# if __name__ == "__main__":
# xlsx_file_path = r"C:\PycharmData\ubains-module-test\预定系统\测试数据\会议预定测试用例.xlsx"
...
...
预定系统/README.md
浏览文件 @
df5a1b98
...
...
@@ -286,4 +286,5 @@
79.
2025-04-14
-
登录模块增加excel写入函数调用。调试将图片嵌入单元格的功能,验证不可行。
80.
2025-04-16
-
修复展厅巡检预约系统因为元素定位失败导致的创建会议失败问题,优化issue_send_and_upload议题上传函数。
\ No newline at end of file
-
修复展厅巡检预约系统因为元素定位失败导致的创建会议失败问题,优化issue_send_and_upload议题上传函数。
-
修复因xlsx文件打开读取后没有关闭导致的文件损坏问题,优化read_xlsx_data函数,增加关闭文件操作。
\ No newline at end of file
预定系统/cases/展厅巡检/05展厅会议室中控屏/__pycache__/展厅会议室中控屏.cpython-310.pyc
浏览文件 @
df5a1b98
No preview for this file type
预定系统/cases/展厅巡检/05展厅会议室中控屏/展厅会议室中控屏.py
浏览文件 @
df5a1b98
...
...
@@ -136,10 +136,10 @@ class Exhibition_Meeting_Control_0001:
play_cloud_voice
(
app_id
,
app_secret
,
device_sn
)
sleep
(
20
)
# 关闭麦克风
mic_off_button
=
app_drive
.
find_element
(
AppiumBy
.
XPATH
,
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[3]"
)
INFO
(
"关闭麦克风"
)
mic_off_button
.
click
()
#
mic_off_button = app_drive.find_element(AppiumBy.XPATH,
#
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[3]")
#
INFO("关闭麦克风")
#
mic_off_button.click()
# 关闭左摄像头
left_camera_off_button
=
app_drive
.
find_element
(
AppiumBy
.
XPATH
,
...
...
预定系统/cases/展厅巡检/11环境清除/__pycache__/01展厅会议室中控屏.cpython-310.pyc
浏览文件 @
df5a1b98
No preview for this file type
预定系统/测试数据/会议预定测试用例.xlsx
浏览文件 @
df5a1b98
No preview for this file type
预定系统/测试数据/长安大学测试用例.xlsx
浏览文件 @
df5a1b98
No preview for this file type
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论