提交 a93c02b3 authored 作者: 陈泽健's avatar 陈泽健

实现通过JSON数据中对应的name值来区分测试用例数量。

上级 6d16de4c
def teststeps(self):
"""
执行测试步骤函数,主要用于执行读取的测试用例并进行会议模板模块功能测试操作
"""
# 从全局存储中获取webdriver对象
wd = GSTORE['wd']
# 先清空Excel文件中的测试结果和日志截图
clear_columns_in_xlsx(xlsx_file_path, "会议审批", ["测试结果", "日志截图"])
# 读取Excel文件中的测试用例数据
ddt_cases = read_xlsx_data(xlsx_file_path, "会议审批")
# 遍历 ddt_cases 并获取每一个 JSON 对象
for case in ddt_cases:
# 为每个测试用例添加一个 name 字段
case_name = case.get('case_name', f"Case_{ddt_cases.index(case) + 1}")
case['name'] = case_name
# 创建审批会议
meeting_message("审批会议室", "普通会议", "审批测试会议","长安大学", wd)
for step in case:
print(f"当前步骤: {step}")
# 先赋值
locator_type = get_by_enum(case.get('locator_type'))
locator_value = case.get('locator_value')
element_type = case.get('element_type')
element_value = case.get('element_value')
expented_result = case.get('expented_result')
# 判断页面功能类型
if case.get("page") == "ApprovalInitiate":
if element_type == "input":
safe_send_keys((locator_type, locator_value), element_value, wd)
sleep(1)
elif element_type == "click":
safe_click((locator_type, locator_value), wd)
sleep(2)
elif element_type == "getTips":
notify_text = get_notify_text(wd, (locator_type, locator_value), "Message_Template", "Template_Edit", "长安审批测试")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("编辑测试判断是否正确", expented_result in notify_text)
SELENIUM_LOG_SCREEN(wd, "50")
elif element_type == "function":
print(f"这是element_value的值:{element_value}")
# 退出登录,并调用用户登录函数
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
sleep(1)
wd.refresh()
user_login(element_value[0],element_value[1])
sleep(2)
# 调用审批会议状态设置函数
approval_status_control("审批测试会议", element_value[2], wd)
sleep(1)
# 退出登录
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
wd.refresh()
# 登录与退出操作频繁,到登录页后存在一个缓存界面,可以点击退出按钮
quit_element = wd.find_element(By.XPATH, "//div[@class='operat']//span//img")
if quit_element != "":
quit_element.click()
# 调用用户登录函数,登录普通用户
user_login("admin@PT","Ubains@4321")
# 进入会议审批模块
safe_click((By.XPATH, "//span[contains(text(),'会议审批')]"), wd)
sleep(1)
\ No newline at end of file
......@@ -396,11 +396,16 @@ class Mqtt:
"endTime": config['endTime'],
"companyNumber": config['companyNumber'],
"participantList": ["JiaoJiao", "JiaYu", "DuiFangZhengZaiZhangTouFa", "DuoTangMaLaBan", "DaLi", "500mlLingDu", "tt.", "wilbur", "q", "Test40", "Test41", "Test42", "Test43", "Test44", "Test45", "Test46", "Test47", "Test48", "Test49",
"Test50", "Test51", "Test52", "Test53", "Test54", "Test55", "Test56", "Test57", "Test58", "Test59",
"Test60", "Test61", "Test62", "Test63", "Test64", "Test65", "Test66", "Test67", "Test68", "Test69",
"Test70", "Test71", "Test72", "Test73", "Test74", "Test75", "Test76", "Test77", "Test78", "Test79",
"Test80", "Test81", "Test82", "Test83", "Test84", "Test85", "Test86", "Test87", "Test88", "Test89",
"Test90"],
"Test50", "Test51", "Test52", "Test53", "Test54", "Test55", "Test56", "Test57", "Test58", "Test59",
"Test60", "Test61", "Test62", "Test63", "Test64", "Test65", "Test66", "Test67", "Test68", "Test69",
"Test70", "Test71", "Test72", "Test73", "Test74", "Test75", "Test76", "Test77", "Test78", "Test79",
"Test80", "Test81", "Test82", "Test83", "Test84", "Test85", "Test86", "Test87", "Test88", "Test89",
"Test90", "Test91", "Test92", "Test93", "Test94", "Test95", "Test96", "Test97", "Test98", "Test99",
"Test100", "Test101", "Test102", "Test103", "Test104", "Test105", "Test106", "Test107", "Test108", "Test109",
"Test110", "Test111", "Test112", "Test113", "Test114", "Test115", "Test116", "Test117", "Test118", "Test119",
"Test120", "Test121", "Test122", "Test123", "Test124", "Test125", "Test126", "Test127", "Test128", "Test129",
"Test130", "Test131", "Test132", "Test133", "Test134", "Test135", "Test136", "Test137", "Test138", "Test139",
"Test140"],
"signInBeforeMinutes": config['signInBeforeMinutes'],
"signEndTime": config['signEndTime'],
......
......@@ -17,6 +17,7 @@ from selenium.common import ElementNotInteractableException
from selenium.webdriver.common.keys import Keys
from urllib.parse import urlencode
from datetime import datetime
# import datetime
# 获取当前脚本的绝对路径
......@@ -1558,6 +1559,9 @@ def meeting_message(meeting_room_name, message_type, message_name, project_type,
返回:
无返回值。
"""
print("到这了")
# 切换至会议室列表界面,开始新一轮的审批会议创建
safe_click((By.XPATH, "//li[@class='meeting_list_li']//span[contains(text(),'会议室列表')]"), wd)
# 先搜索会议室
safe_click((By.XPATH, "//i[@class='el-collapse-item__arrow el-icon-arrow-right']"), wd)
sleep(1)
......
......@@ -263,4 +263,6 @@
69. 2025-03-19
- 处理datetime类重复导入的问题,调整get_current_time_formatted函数相关的代码。
70. 2025-03-20
- 补充clear_columns_in_xlsx函数实现在读取测试用例前,先将测试结果和日志截图清空。
\ No newline at end of file
- 补充clear_columns_in_xlsx函数实现在读取测试用例前,先将测试结果和日志截图清空。
71. 2025-03-21
- 实现通过JSON数据中对应的name值来区分测试用例数量。
\ No newline at end of file
......@@ -13,74 +13,76 @@ from 预定系统.Base.base import *
# 构建XLSX文件的绝对路径
xlsx_file_path = os.path.join(预定系统_path, '测试数据', '长安大学测试用例.xlsx')
class MessageApproval:
tags = ['长安大学审批测试']
class ChangAnMessageApproval:
tags = ['长安大学取消审批测试']
"""
执行指令是:
1.cd 预定系统
2.hytest --report_title 长安大学审批测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --tag 长安大学审批测试
2.hytest --report_title 长安大学取消审批测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --tag 长安大学取消审批测试
"""
ddt_cases = read_xlsx_data(xlsx_file_path, sheet_name='会议审批')
def teststeps(self):
"""
执行测试步骤函数,主要用于执行读取的测试用例并进行会议模板模块功能测试操作
"""
# 从全局存储中获取webdriver对象
wd = GSTORE['wd']
# 先清空Excel文件中的测试结果和日志截图
clear_columns_in_xlsx(xlsx_file_path, "会议审批", ["测试结果", "日志截图"])
# 读取Excel文件中的测试用例数据
ddt_cases = read_xlsx_data(xlsx_file_path, "会议审批")
# 遍历 ddt_cases 并获取每一个 JSON 对象
for case in ddt_cases:
# 创建审批会议
meeting_message("审批会议室", "普通会议", "审批测试会议","长安大学", wd)
for step in case:
print(f"当前步骤: {step}")
# 先赋值
locator_type = get_by_enum(step.get('locator_type'))
locator_value = step.get('locator_value')
element_type = step.get('element_type')
element_value = step.get('element_value')
expented_result = step.get('expented_result')
name = self.name
# 创建审批会议
meeting_message("审批会议室", "普通会议", "审批测试会议", "长安大学", wd)
for step in self.para:
# 赋值元素定位类型,并将字符串转为Enum类型
locator_type = get_by_enum(step.get('locator_type'))
# 赋值元素值
locator_value = step.get('locator_value')
# 赋值元素类型,例如:click点击、input输入框等
element_type = step.get('element_type')
# 赋值元素值,例如输入框的输入值
element_value = step.get('element_value')
# 赋值预期结果
expented_result = step.get('expented_result')
# 判断页面功能类型
if step.get("page") == "ApprovalInitiate":
# 判断页面功能类型
if step.get("page") == "ApprovalInitiate":
if element_type == "input":
safe_send_keys((locator_type, locator_value), element_value, wd)
sleep(1)
if element_type == "input":
safe_send_keys((locator_type, locator_value), element_value, wd)
sleep(1)
elif element_type == "click":
safe_click((locator_type, locator_value), wd)
sleep(2)
elif element_type == "click":
safe_click((locator_type, locator_value), wd)
sleep(2)
elif element_type == "getTips":
notify_text = get_notify_text(wd, (locator_type, locator_value), "Message_Template", "Template_Edit", "长安审批测试")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("编辑测试判断是否正确", expented_result in notify_text)
SELENIUM_LOG_SCREEN(wd, "50")
elif element_type == "getTips":
notify_text = get_notify_text(wd, (locator_type, locator_value), "Message_Template",
"Template_Edit", "长安审批测试")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("编辑测试判断是否正确", expented_result in notify_text)
SELENIUM_LOG_SCREEN(wd, "50")
elif element_type == "function":
print(f"这是element_value的值:{element_value}")
# 退出登录,并调用用户登录函数
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
sleep(1)
wd.refresh()
user_login(element_value[0],element_value[1])
sleep(2)
# 调用审批会议状态设置函数
approval_status_control("审批测试会议", element_value[2], wd)
sleep(1)
# 退出登录
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
wd.refresh()
# 登录与退出操作频繁,到登录页后存在一个缓存界面,可以点击退出按钮
quit_element = wd.find_element(By.XPATH, "//div[@class='operat']//span//img")
if quit_element != "":
quit_element.click()
# 调用用户登录函数,登录普通用户
user_login("admin@PT","Ubains@4321")
# 进入会议审批模块
safe_click((By.XPATH, "//span[contains(text(),'会议审批')]"), wd)
sleep(1)
\ No newline at end of file
elif element_type == "function":
print(f"这是element_value的值:{element_value}")
# 退出登录,并调用用户登录函数
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
sleep(1)
wd.refresh()
user_login(element_value[0], element_value[1])
sleep(2)
# 调用审批会议状态设置函数
approval_status_control("审批测试会议", element_value[2], wd)
sleep(1)
# 退出登录
safe_click((By.XPATH, "//img[@title='退出登录']"), wd)
wd.refresh()
# 登录与退出操作频繁,到登录页后存在一个缓存界面,可以点击退出按钮
quit_element = wd.find_element(By.XPATH, "//div[@class='operat']//span//img")
if quit_element != "":
quit_element.click()
# 调用用户登录函数,登录普通用户
user_login("admin@PT", "Ubains@4321")
# 进入会议审批模块
safe_click((By.XPATH, "//span[contains(text(),'会议审批')]"), wd)
sleep(1)
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论