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

调试定时任务执行后钉钉消息没有发送的问题。将定时任务与测试报告文件获取封装成函数进行调用,方便后续维护管理。目前调试发现定时任务执行别的脚本时会出现异常问题,需要进一步排查。

上级 9cdef635
此差异已折叠。
import csv
import glob
import re
import time
from trio import current_time
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
import psutil
import logging
from hytest import *
from selenium import webdriver
from selenium.common import TimeoutException, NoSuchElementException, ElementNotInteractableException
......@@ -19,6 +19,33 @@ import hmac
import hashlib
import base64
from urllib.parse import urlencode
from datetime import datetime
import os
import sys
import schedule
import time
import subprocess
import logging
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取当前脚本的父目录
parent_dir = os.path.dirname(current_dir)
logging.info(parent_dir)
# 添加路径
sys.path.append(current_dir)
# 配置日志记录器
log_file = os.path.join(current_dir, 'automation_test.log')
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler()
]
)
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
......@@ -418,6 +445,68 @@ def browser_quit():
# 调用浏览器驱动实例的quit方法,关闭浏览器并释放资源
wd.quit()
def get_latest_report_file(report_dir, base_url):
"""
获取指定目录下最新的HTML报告文件,并返回带有基础URL的完整路径。
:param report_dir: 报告文件所在的目录
:param base_url: 基础URL
:return: 最新的HTML报告文件的完整URL,如果没有找到则返回None
"""
report_files = glob.glob(os.path.join(report_dir, '*.html'))
if not report_files:
logging.warning("No report files found in the directory.")
return None
latest_file = max(report_files, key=os.path.getmtime)
last_modified_time = datetime.fromtimestamp(os.path.getmtime(latest_file)).strftime('%Y-%m-%d %H:%M:%S')
logging.info(f"Latest report file: {latest_file}, Last modified: {last_modified_time}")
# 将文件路径转换为相对于基础URL的完整URL
relative_path = os.path.relpath(latest_file, report_dir)
full_url = f"{base_url}/{relative_path}".replace("\\", "/") # 确保路径分隔符一致
return full_url
def run_automation_test(report_title, report_url_prefix, test_case):
logging.info("Starting automation test...")
command = [
'hytest',
'--report_title', report_title,
'--report_url_prefix', report_url_prefix,
'--test', test_case
]
logging.info(f"Running command: {' '.join(command)}")
try:
result = subprocess.run(command, capture_output=True, text=True, check=True)
logging.debug(f"Command stdout: {result.stdout}")
logging.debug(f"Command stderr: {result.stderr}")
# 获取最新的报告文件
report_dir = os.path.join(parent_dir, 'reports')
base_url = report_url_prefix
latest_report = get_latest_report_file(report_dir, base_url)
if latest_report:
logging.info(f"Latest report file URL: {latest_report}")
# 调用钉钉发送消息接口进行推送测试报告链接
try:
logging.info("开始调用dingding消息通知函数")
dingding_send_message(latest_report, report_title, f"{report_title}定时任务执行完成", "13724387318")
logging.info("dingding_send_message function called successfully")
except Exception as e:
logging.error(f"dingding_send_message调用失败: {e}")
else:
logging.warning("No report files found to send.")
except subprocess.CalledProcessError as e:
logging.error(f"Command failed with return code {e.returncode}: {e.output}")
except OSError as e:
logging.error(f"OS error occurred: {e}")
finally:
logging.info("Automation test completed.")
def dingding_send_message(test_report_Url, title, text, mobile):
"""
发送钉钉机器人消息
......
......@@ -70,4 +70,5 @@
- 钉钉群消息提醒的param参数改为link链接形式,通过链接打开测试报告进行查看。
20. 2024-11-26
- 调试定时任务的问题,还需再进一步调试。
- 补充运维集控的MQTT底层方法与消息体构建。
\ No newline at end of file
- 补充运维集控的MQTT底层方法与消息体构建。
- 调试定时任务执行后钉钉消息没有发送的问题。将定时任务与测试报告文件获取封装成函数进行调用,方便后续维护管理。目前调试发现定时任务执行别的脚本时会出现异常问题,需要进一步排查。
\ No newline at end of file
......@@ -65,8 +65,9 @@ class Login_00x:
# 等待1秒以允许页面响应
sleep(2)
# 根据预期的检查文本类型,获取并记录提示信息
if check_text == "欢迎 预定标准版测试":
notify_text = elment_get_text((By.XPATH, '//*[@id="app"]/div/div[1]/div/span[1]'),wd)
if check_text == "admin@ZDH":
sleep(2)
notify_text = elment_get_text((By.XPATH, f"//span[normalize-space()='{username}']"),wd)
SELENIUM_LOG_SCREEN(wd, '50%', 'Login', 'Login_Pwd', f"{name}_检查登录成功提示信息")
INFO(f"Alert text: {notify_text}")
else:
......@@ -81,7 +82,7 @@ class Login_00x:
# 设置隐式等待时间
wd.implicitly_wait(DEFAULT_WAIT_TIME)
# 检查点:验证提示信息是否与预期相符
CHECK_POINT('弹出提示', notify_text == check_text)
CHECK_POINT('弹出提示', check_text in notify_text)
# 执行步骤 4:刷新页面,以确保下一个测试从一个干净的状态开始
STEP(4, "刷新页面")
......
此差异已折叠。
此差异已折叠。
=== [ 收集测试用例 ] ===
== cases\__st__.py
== cases\会议主流程\__st__.py
== cases\会议主流程\会议修改.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议主流程\会议预约.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\__st__.py
== cases\会议室管理\会议室管理\会议室删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\__st__.py
== cases\会议室管理\功能管理\功能删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\__st__.py
== cases\会议室管理\区域管理\区域删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\登录模块\账号密码登录测试.py
CSV文件已读取
== cases\系统管理\__st__.py
== cases\系统管理\系统设置.py
** no cases in this file , skip it.
== cases\设备管理\安卓信息.py
** no cases in this file, skip it.
== cases\设备管理\毫米波雷达.py
** no cases in this file, skip it.
== cases\账号管理\用户管理\__st__.py
== cases\账号管理\用户管理\主流程.py
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户修改密码.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户状态设置.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\__st__.py
== cases\账号管理\部门管理\主流程.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门编辑.py
CSV文件已读取
** no cases in this file , skip it.
=== [ 执行测试用例 ] ===
预备执行用例数量 : 10
========= 测试开始 : 20241125_175001 =========
>>> cases\
[ suite setup ] cases\
-- 第 1 步 -- 初始化浏览器
'----------' 正在初始化浏览器 '----------'
'----------' 浏览器初始化完成 '----------'
-- 第 2 步 -- 处理SSL认证
'----------' 正在处理SSL证书警告 '----------'
'----------' SSL证书警告处理完成 '----------'
>>> cases\登录模块\账号密码登录测试.py
* 登录_001 - 2024-11-25 17:50:16
[ case execution steps ]
-- 第 1 步 -- 输入账号: , 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_001_检查登录失败提示信息20241125175018799640.png
Alert text: 请输入账号!
-- 第 3 步 -- 校验提示信息: 请输入账号!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_002 - 2024-11-25 17:50:19
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj1, 密码: , 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_002_检查登录失败提示信息20241125175021814253.png
Alert text: 请输入密码!
-- 第 3 步 -- 校验提示信息: 请输入密码!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_003 - 2024-11-25 17:50:22
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj2, 密码: Ubains@4321, 验证码:
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_003_检查登录失败提示信息20241125175024843078.png
Alert text: 请输入验证码!
-- 第 3 步 -- 校验提示信息: 请输入验证码!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_004 - 2024-11-25 17:50:25
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj112, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_004_检查登录失败提示信息20241125175027757649.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_005 - 2024-11-25 17:50:28
[ case execution steps ]
-- 第 1 步 -- 输入账号: adM 12in@czj, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_005_检查登录失败提示信息20241125175030707855.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_006 - 2024-11-25 17:50:31
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj3, 密码: 12345, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_006_检查登录失败提示信息20241125175033655666.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_007 - 2024-11-25 17:50:34
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj4, 密码: U bains1s@432, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_007_检查登录失败提示信息20241125175036568256.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_008 - 2024-11-25 17:50:37
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj5, 密码: Ubains@4321, 验证码: 123
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_008_检查登录失败提示信息20241125175039445768.png
Alert text: 验证码错误
-- 第 3 步 -- 校验提示信息: 验证码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_009 - 2024-11-25 17:50:39
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj6, 密码: Ubains@4321, 验证码: cs 12
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_009_检查登录失败提示信息20241125175042356574.png
Alert text: 验证码错误
-- 第 3 步 -- 校验提示信息: 验证码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_010 - 2024-11-25 17:50:42
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@ZDH, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_010_检查登录成功提示信息20241125175045377467.png
=== [ 收集测试用例 ] ===
== cases\__st__.py
== cases\会议主流程\__st__.py
== cases\会议主流程\会议修改.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议主流程\会议预约.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\__st__.py
== cases\会议室管理\会议室管理\会议室删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\__st__.py
== cases\会议室管理\功能管理\功能删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\__st__.py
== cases\会议室管理\区域管理\区域删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\登录模块\账号密码登录测试.py
CSV文件已读取
== cases\系统管理\__st__.py
== cases\系统管理\系统设置.py
** no cases in this file , skip it.
== cases\设备管理\安卓信息.py
** no cases in this file, skip it.
== cases\设备管理\毫米波雷达.py
** no cases in this file, skip it.
== cases\账号管理\用户管理\__st__.py
== cases\账号管理\用户管理\主流程.py
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户修改密码.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户状态设置.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\__st__.py
== cases\账号管理\部门管理\主流程.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门编辑.py
CSV文件已读取
** no cases in this file , skip it.
=== [ 执行测试用例 ] ===
预备执行用例数量 : 10
========= 测试开始 : 20241125_174401 =========
>>> cases\
[ suite setup ] cases\
-- 第 1 步 -- 初始化浏览器
'----------' 正在初始化浏览器 '----------'
'----------' 浏览器初始化完成 '----------'
-- 第 2 步 -- 处理SSL认证
'----------' 正在处理SSL证书警告 '----------'
'----------' SSL证书警告处理完成 '----------'
>>> cases\登录模块\账号密码登录测试.py
* 登录_001 - 2024-11-25 17:44:04
[ case execution steps ]
-- 第 1 步 -- 输入账号: , 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_001_检查登录失败提示信息20241125174407080171.png
Alert text: 请输入账号!
-- 第 3 步 -- 校验提示信息: 请输入账号!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_002 - 2024-11-25 17:44:07
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj1, 密码: , 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_002_检查登录失败提示信息20241125174410069134.png
Alert text: 请输入密码!
-- 第 3 步 -- 校验提示信息: 请输入密码!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_003 - 2024-11-25 17:44:10
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj2, 密码: Ubains@4321, 验证码:
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_003_检查登录失败提示信息20241125174413028657.png
Alert text: 请输入验证码!
-- 第 3 步 -- 校验提示信息: 请输入验证码!
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_004 - 2024-11-25 17:44:13
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj112, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_004_检查登录失败提示信息20241125174415937254.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_005 - 2024-11-25 17:44:16
[ case execution steps ]
-- 第 1 步 -- 输入账号: adM 12in@czj, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_005_检查登录失败提示信息20241125174418832049.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_006 - 2024-11-25 17:44:19
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj3, 密码: 12345, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_006_检查登录失败提示信息20241125174421880105.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_007 - 2024-11-25 17:44:22
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj4, 密码: U bains1s@432, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_007_检查登录失败提示信息20241125174424902427.png
Alert text: 账号或密码错误
-- 第 3 步 -- 校验提示信息: 账号或密码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_008 - 2024-11-25 17:44:25
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj5, 密码: Ubains@4321, 验证码: 123
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_008_检查登录失败提示信息20241125174427870609.png
Alert text: 验证码错误
-- 第 3 步 -- 校验提示信息: 验证码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_009 - 2024-11-25 17:44:28
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@czj6, 密码: Ubains@4321, 验证码: cs 12
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_009_检查登录失败提示信息20241125174430794150.png
Alert text: 验证码错误
-- 第 3 步 -- 校验提示信息: 验证码错误
** 检查点 ** 弹出提示 ----> 通过
-- 第 4 步 -- 刷新页面
PASS
* 登录_010 - 2024-11-25 17:44:31
[ case execution steps ]
-- 第 1 步 -- 输入账号: admin@ZDH, 密码: Ubains@4321, 验证码: csba
-- 第 2 步 -- 点击登录按钮
picture imgs/Login/Login_Pwd/登录_010_检查登录成功提示信息20241125174433837258.png
import os
import sys
import schedule
import time
import subprocess
import logging
import re
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 添加路径
sys.path.append(current_dir)
from Base.base import dingding_send_message
# 配置日志记录器
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
def run_automation_test():
command = [
'hytest',
'--report_title', '账号密码登录测试报告',
'--report_url_prefix', 'http://192.168.1.166',
'--test', '登录_0**'
]
print(command)
logging.info(command)
try:
logging.debug(f"Running command: {' '.join(command)}")
result = subprocess.run(command, capture_output=True, text=True, check=True)
print(command)
# 记录命令的完整输出
logging.debug(f"Command stdout: {result.stdout}")
logging.debug(f"Command stderr: {result.stderr}")
# 确保 result.stdout 和 result.stderr 是字符串类型
stdout = result.stdout
stderr = result.stderr
# 假设链接的格式是 http://192.168.1.166/report_*.html
link_pattern = re.compile(r'http://192.168.1.166/report_\d{8}_\d{6}\.html')
# 从标准输出中提取链接
report_link = link_pattern.search(stdout)
if report_link:
report_link = report_link.group(0)
logging.info(f"测试报告链接: {report_link}")
# 调用钉钉发送消息接口进行推送测试报告链接
try:
logging.info("开始调用dingding消息通知函数")
dingding_send_message(report_link, "预定系统账号密码测试", "定时任务执行完成", "13724387318")
logging.info("dingding_send_message function called successfully")
except Exception as e:
logging.error(f"dingding_send_message调用失败: {e}")
else:
logging.warning("No test report link found in stdout")
# 从标准错误中提取链接
error_report_link = link_pattern.search(stderr)
if error_report_link:
error_report_link = error_report_link.group(0)
logging.warning(f"Test report link in stderr: {error_report_link}")
else:
logging.warning("No test report link found in stderr")
if result.stdout:
logging.info(f"Command output: {result.stdout}")
if result.stderr:
logging.warning(f"Command error: {result.stderr}")
except subprocess.CalledProcessError as e:
logging.error(f"Command failed with return code {e.returncode}: {e.output}")
except OSError as e:
logging.error(f"OS error occurred: {e}")
from Base.base import *
# 每天凌晨 0 点执行任务
schedule.every().day.at("16:18").do(run_automation_test)
while True:
schedule.run_pending()
time.sleep(1)
\ No newline at end of file
schedule.every().day.at("21:18").do(run_automation_test, report_title="账号密码登录模块_测试报告", report_url_prefix="http://192.168.1.166", test_case="登录_0**")
# schedule.every().day.at("21:14").do(run_automation_test, report_title="用户管理模块_主流程_测试报告", report_url_prefix="http://192.168.1.166", test_case="Main_User_Manage_0001")
try:
while True:
schedule.run_pending()
time.sleep(5)
except KeyboardInterrupt:
logging.info("Scheduler interrupted by user.")
except Exception as e:
logging.error(f"Unexpected error: {e}")
\ No newline at end of file
name,account,expected
登录_001,,Ubains@4321,csba,请输入账号!
登录_002,admin@czj1,,csba,请输入密码!
登录_003,admin@czj2,Ubains@4321,,请输入验证码!
登录_004,admin@czj112,Ubains@4321,csba,账号或密码错误
登录_005,adM 12in@czj,Ubains@4321,csba,账号或密码错误
登录_006,admin@czj3,12345,csba,账号或密码错误
登录_007,admin@czj4,U bains1s@432,csba,账号或密码错误
登录_008,admin@czj5,Ubains@4321,123,验证码错误
登录_009,admin@czj6,Ubains@4321,cs 12,验证码错误
登录_010,admin@ZDH,Ubains@4321,csba,欢迎 预定标准版测试
\ No newline at end of file
登录_002,admin@czj,,csba,请输入密码!
登录_003,admin@czj,Ubains@4321,,请输入验证码!
登录_004,admin@czj003,Ubains@4321,csba,账号或密码错误
登录_005,adM 1221n@czj,Ubains@4321,csba,账号或密码错误
登录_006,admin@czj34,12345,csba,账号或密码错误
登录_007,admin@czj412,U bains1s@432,csba,账号或密码错误
登录_008,admin@czj012,Ubains@4321,123,验证码错误
登录_009,admin@czj1213,Ubains@4321,cs 12,验证码错误
登录_010,admin@ZDH,Ubains@4321,csba,admin@ZDH
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论