提交 916bca30 authored 作者: 彭甘宇's avatar 彭甘宇

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	.idea/misc.xml
#	.idea/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.10" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<changelist name="在进行更新之前于_2024_12_24_16_59_取消提交了更改_[更改]" date="1735030768202" recycled="false" toDelete="true">
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/在进行更新之前于_2024_12_24_16_59_取消提交了更改_[更改]/shelved.patch" />
<option name="DESCRIPTION" value="在进行更新之前于 2024/12/24 16:59 取消提交了更改 [更改]" />
</changelist>
\ No newline at end of file
Index: .idea/workspace.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n <component name=\"AutoImportSettings\">\r\n <option name=\"autoReloadType\" value=\"SELECTIVE\" />\r\n </component>\r\n <component name=\"ChangeListManager\">\r\n <list default=\"true\" id=\"1b298f03-b3a2-4f3f-9fa2-7f833ec35924\" name=\"更改\" comment=\"\">\r\n <change afterPath=\"$PROJECT_DIR$/预定系统/测试数据/MQTT心跳上报.csv\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/.idea/workspace.xml\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/.idea/workspace.xml\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/预定系统/base/Mqtt_Send.py\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/预定系统/base/Mqtt_Send.py\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/预定系统/测试数据/MQTT安卓上报数据.csv\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/预定系统/测试数据/MQTT安卓上报数据.csv\" afterDir=\"false\" />\r\n <change beforePath=\"$PROJECT_DIR$/预定系统/测试数据/MQTT毫米波上报数据.csv\" beforeDir=\"false\" afterPath=\"$PROJECT_DIR$/预定系统/测试数据/MQTT毫米波上报数据.csv\" afterDir=\"false\" />\r\n </list>\r\n <option name=\"SHOW_DIALOG\" value=\"false\" />\r\n <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\r\n <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\r\n <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\r\n </component>\r\n <component name=\"FileTemplateManagerImpl\">\r\n <option name=\"RECENT_TEMPLATES\">\r\n <list>\r\n <option value=\"Python Script\" />\r\n </list>\r\n </option>\r\n </component>\r\n <component name=\"Git.Settings\">\r\n <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$\" />\r\n </component>\r\n <component name=\"ProjectColorInfo\">{\r\n &quot;associatedIndex&quot;: 0\r\n}</component>\r\n <component name=\"ProjectId\" id=\"2n9KWIVUMNmvuX8Wm4qR3JVKzMd\" />\r\n <component name=\"ProjectViewState\">\r\n <option name=\"hideEmptyMiddlePackages\" value=\"true\" />\r\n <option name=\"showLibraryContents\" value=\"true\" />\r\n </component>\r\n <component name=\"PropertiesComponent\"><![CDATA[{\r\n \"keyToString\": {\r\n \"Python 测试.Python 测试 (LoginBy_ActAndPwd_PyTest.py 内).executor\": \"Run\",\r\n \"Python.安卓信息上报.executor\": \"Run\",\r\n \"Python.毫米波雷达上报.executor\": \"Run\",\r\n \"RunOnceActivity.ShowReadmeOnStart\": \"true\",\r\n \"git-widget-placeholder\": \"develop\",\r\n \"last_opened_file_path\": \"D:/GithubData/ubains-module-test/ubains-module-test\",\r\n \"node.js.detected.package.eslint\": \"true\",\r\n \"node.js.detected.package.tslint\": \"true\",\r\n \"node.js.selected.package.eslint\": \"(autodetect)\",\r\n \"node.js.selected.package.tslint\": \"(autodetect)\",\r\n \"nodejs_package_manager_path\": \"npm\",\r\n \"settings.editor.selected.configurable\": \"com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable\",\r\n \"vue.rearranger.settings.migration\": \"true\"\r\n }\r\n}]]></component>\r\n <component name=\"RecentsManager\">\r\n <key name=\"MoveFile.RECENT_KEYS\">\r\n <recent name=\"D:\\GithubData\\ubains-module-test\\ubains-module-test\\预定系统\\登录模块\" />\r\n <recent name=\"D:\\GithubData\\ubains-module-test\\ubains-module-test\\预定系统\\测试数据\" />\r\n <recent name=\"D:\\GithubData\\ubains-module-test\\ubains-module-test\\预定系统\" />\r\n <recent name=\"D:\\GithubData\\ubains-module-test\\预定系统\" />\r\n </key>\r\n </component>\r\n <component name=\"RunManager\" selected=\"Python.毫米波雷达上报\">\r\n <configuration name=\"安卓信息上报\" type=\"PythonConfigurationType\" factoryName=\"Python\" temporary=\"true\" nameIsGenerated=\"true\">\r\n <module name=\"ubains-module-test\" />\r\n <option name=\"ENV_FILES\" value=\"\" />\r\n <option name=\"INTERPRETER_OPTIONS\" value=\"\" />\r\n <option name=\"PARENT_ENVS\" value=\"true\" />\r\n <envs>\r\n <env name=\"PYTHONUNBUFFERED\" value=\"1\" />\r\n </envs>\r\n <option name=\"SDK_HOME\" value=\"\" />\r\n <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$/预定系统/安卓信息模块\" />\r\n <option name=\"IS_MODULE_SDK\" value=\"true\" />\r\n <option name=\"ADD_CONTENT_ROOTS\" value=\"true\" />\r\n <option name=\"ADD_SOURCE_ROOTS\" value=\"true\" />\r\n <EXTENSION ID=\"PythonCoverageRunConfigurationExtension\" runner=\"coverage.py\" />\r\n <option name=\"SCRIPT_NAME\" value=\"$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py\" />\r\n <option name=\"PARAMETERS\" value=\"\" />\r\n <option name=\"SHOW_COMMAND_LINE\" value=\"false\" />\r\n <option name=\"EMULATE_TERMINAL\" value=\"false\" />\r\n <option name=\"MODULE_MODE\" value=\"false\" />\r\n <option name=\"REDIRECT_INPUT\" value=\"false\" />\r\n <option name=\"INPUT_FILE\" value=\"\" />\r\n <method v=\"2\" />\r\n </configuration>\r\n <configuration name=\"毫米波雷达上报\" type=\"PythonConfigurationType\" factoryName=\"Python\" temporary=\"true\" nameIsGenerated=\"true\">\r\n <module name=\"ubains-module-test\" />\r\n <option name=\"ENV_FILES\" value=\"\" />\r\n <option name=\"INTERPRETER_OPTIONS\" value=\"\" />\r\n <option name=\"PARENT_ENVS\" value=\"true\" />\r\n <envs>\r\n <env name=\"PYTHONUNBUFFERED\" value=\"1\" />\r\n </envs>\r\n <option name=\"SDK_HOME\" value=\"\" />\r\n <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$/预定系统/毫米波雷达模块\" />\r\n <option name=\"IS_MODULE_SDK\" value=\"true\" />\r\n <option name=\"ADD_CONTENT_ROOTS\" value=\"true\" />\r\n <option name=\"ADD_SOURCE_ROOTS\" value=\"true\" />\r\n <EXTENSION ID=\"PythonCoverageRunConfigurationExtension\" runner=\"coverage.py\" />\r\n <option name=\"SCRIPT_NAME\" value=\"$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py\" />\r\n <option name=\"PARAMETERS\" value=\"\" />\r\n <option name=\"SHOW_COMMAND_LINE\" value=\"false\" />\r\n <option name=\"EMULATE_TERMINAL\" value=\"false\" />\r\n <option name=\"MODULE_MODE\" value=\"false\" />\r\n <option name=\"REDIRECT_INPUT\" value=\"false\" />\r\n <option name=\"INPUT_FILE\" value=\"\" />\r\n <method v=\"2\" />\r\n </configuration>\r\n <recent_temporary>\r\n <list>\r\n <item itemvalue=\"Python.毫米波雷达上报\" />\r\n <item itemvalue=\"Python.安卓信息上报\" />\r\n </list>\r\n </recent_temporary>\r\n </component>\r\n <component name=\"SharedIndexes\">\r\n <attachedChunks>\r\n <set>\r\n <option value=\"bundled-js-predefined-d6986cc7102b-7c0b70fcd90d-JavaScript-PY-242.21829.153\" />\r\n <option value=\"bundled-python-sdk-464836ebc622-b74155a9e76b-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-242.21829.153\" />\r\n </set>\r\n </attachedChunks>\r\n </component>\r\n <component name=\"SpellCheckerSettings\" RuntimeDictionaries=\"0\" Folders=\"0\" CustomDictionaries=\"0\" DefaultDictionary=\"应用程序级\" UseSingleDictionary=\"true\" transferred=\"true\" />\r\n <component name=\"TaskManager\">\r\n <task active=\"true\" id=\"Default\" summary=\"默认任务\">\r\n <changelist id=\"1b298f03-b3a2-4f3f-9fa2-7f833ec35924\" name=\"更改\" comment=\"\" />\r\n <created>1728379882087</created>\r\n <option name=\"number\" value=\"Default\" />\r\n <option name=\"presentableId\" value=\"Default\" />\r\n <updated>1728379882087</updated>\r\n <workItem from=\"1728379883141\" duration=\"132000\" />\r\n <workItem from=\"1728380017193\" duration=\"171000\" />\r\n <workItem from=\"1729481397357\" duration=\"2465000\" />\r\n <workItem from=\"1729519480013\" duration=\"13278000\" />\r\n <workItem from=\"1729685636638\" duration=\"4482000\" />\r\n<<<<<<< HEAD\r\n <workItem from=\"1729690521898\" duration=\"8355000\" />\r\n=======\r\n <workItem from=\"1729690521898\" duration=\"1942000\" />\r\n>>>>>>> 949209b52f0b2ea4a02345aefb25f4daee4ec4bd\r\n </task>\r\n <servers />\r\n </component>\r\n <component name=\"TypeScriptGeneratedFilesManager\">\r\n <option name=\"version\" value=\"3\" />\r\n </component>\r\n <component name=\"XDebuggerManager\">\r\n <breakpoint-manager>\r\n <breakpoints>\r\n <line-breakpoint enabled=\"true\" suspend=\"THREAD\" type=\"python-line\">\r\n <url>file://$PROJECT_DIR$/Meeting2.0/登录模块/Base/Base.py</url>\r\n <option name=\"timeStamp\" value=\"1\" />\r\n </line-breakpoint>\r\n </breakpoints>\r\n </breakpoint-manager>\r\n </component>\r\n <component name=\"com.intellij.coverage.CoverageDataManagerImpl\">\r\n<<<<<<< HEAD\r\n <SUITE FILE_PATH=\"coverage/ubains_module_test$.coverage\" NAME=\"毫米波雷达上报 覆盖结果\" MODIFIED=\"1729761958173\" SOURCE_PROVIDER=\"com.intellij.coverage.DefaultCoverageFileProvider\" RUNNER=\"coverage.py\" COVERAGE_BY_TEST_ENABLED=\"false\" COVERAGE_TRACING_ENABLED=\"false\" WORKING_DIRECTORY=\"$PROJECT_DIR$/预定系统/毫米波雷达模块\" />\r\n=======\r\n <SUITE FILE_PATH=\"coverage/ubains_module_test$.coverage\" NAME=\"安卓信息上报 覆盖结果\" MODIFIED=\"1729740841195\" SOURCE_PROVIDER=\"com.intellij.coverage.DefaultCoverageFileProvider\" RUNNER=\"coverage.py\" COVERAGE_BY_TEST_ENABLED=\"false\" COVERAGE_TRACING_ENABLED=\"false\" WORKING_DIRECTORY=\"$PROJECT_DIR$/预定系统/安卓信息模块\" />\r\n>>>>>>> 949209b52f0b2ea4a02345aefb25f4daee4ec4bd\r\n </component>\r\n</project>
===================================================================
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
--- a/.idea/workspace.xml (revision a88b23bb71d4bed8184904b5bdac0c94ab034b4a)
+++ b/.idea/workspace.xml (date 1735030740525)
@@ -4,117 +4,36 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
- <list default="true" id="1b298f03-b3a2-4f3f-9fa2-7f833ec35924" name="更改" comment="">
- <change afterPath="$PROJECT_DIR$/预定系统/测试数据/MQTT心跳上报.csv" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/预定系统/base/Mqtt_Send.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/base/Mqtt_Send.py" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/预定系统/测试数据/MQTT安卓上报数据.csv" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/测试数据/MQTT安卓上报数据.csv" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/预定系统/测试数据/MQTT毫米波上报数据.csv" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/测试数据/MQTT毫米波上报数据.csv" afterDir="false" />
- </list>
+ <list default="true" id="4f117322-925a-4b78-92ec-ebfd85c967ac" name="更改" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
- </component>
- <component name="FileTemplateManagerImpl">
- <option name="RECENT_TEMPLATES">
- <list>
- <option value="Python Script" />
- </list>
- </option>
</component>
<component name="Git.Settings">
+ <option name="RECENT_BRANCH_BY_REPOSITORY">
+ <map>
+ <entry key="$PROJECT_DIR$" value="develop" />
+ </map>
+ </option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+ <option name="UPDATE_TYPE" value="REBASE" />
</component>
- <component name="ProjectColorInfo">{
- &quot;associatedIndex&quot;: 0
-}</component>
- <component name="ProjectId" id="2n9KWIVUMNmvuX8Wm4qR3JVKzMd" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
- "Python 测试.Python 测试 (LoginBy_ActAndPwd_PyTest.py 内).executor": "Run",
- "Python.安卓信息上报.executor": "Run",
- "Python.毫米波雷达上报.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
- "git-widget-placeholder": "develop",
- "last_opened_file_path": "D:/GithubData/ubains-module-test/ubains-module-test",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
- "settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
"vue.rearranger.settings.migration": "true"
}
}]]></component>
- <component name="RecentsManager">
- <key name="MoveFile.RECENT_KEYS">
- <recent name="D:\GithubData\ubains-module-test\ubains-module-test\预定系统\登录模块" />
- <recent name="D:\GithubData\ubains-module-test\ubains-module-test\预定系统\测试数据" />
- <recent name="D:\GithubData\ubains-module-test\ubains-module-test\预定系统" />
- <recent name="D:\GithubData\ubains-module-test\预定系统" />
- </key>
- </component>
- <component name="RunManager" selected="Python.毫米波雷达上报">
- <configuration name="安卓信息上报" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
- <module name="ubains-module-test" />
- <option name="ENV_FILES" value="" />
- <option name="INTERPRETER_OPTIONS" value="" />
- <option name="PARENT_ENVS" value="true" />
- <envs>
- <env name="PYTHONUNBUFFERED" value="1" />
- </envs>
- <option name="SDK_HOME" value="" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/预定系统/安卓信息模块" />
- <option name="IS_MODULE_SDK" value="true" />
- <option name="ADD_CONTENT_ROOTS" value="true" />
- <option name="ADD_SOURCE_ROOTS" value="true" />
- <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
- <option name="SCRIPT_NAME" value="$PROJECT_DIR$/预定系统/安卓信息模块/安卓信息上报.py" />
- <option name="PARAMETERS" value="" />
- <option name="SHOW_COMMAND_LINE" value="false" />
- <option name="EMULATE_TERMINAL" value="false" />
- <option name="MODULE_MODE" value="false" />
- <option name="REDIRECT_INPUT" value="false" />
- <option name="INPUT_FILE" value="" />
- <method v="2" />
- </configuration>
- <configuration name="毫米波雷达上报" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
- <module name="ubains-module-test" />
- <option name="ENV_FILES" value="" />
- <option name="INTERPRETER_OPTIONS" value="" />
- <option name="PARENT_ENVS" value="true" />
- <envs>
- <env name="PYTHONUNBUFFERED" value="1" />
- </envs>
- <option name="SDK_HOME" value="" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/预定系统/毫米波雷达模块" />
- <option name="IS_MODULE_SDK" value="true" />
- <option name="ADD_CONTENT_ROOTS" value="true" />
- <option name="ADD_SOURCE_ROOTS" value="true" />
- <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
- <option name="SCRIPT_NAME" value="$PROJECT_DIR$/预定系统/毫米波雷达模块/毫米波雷达上报.py" />
- <option name="PARAMETERS" value="" />
- <option name="SHOW_COMMAND_LINE" value="false" />
- <option name="EMULATE_TERMINAL" value="false" />
- <option name="MODULE_MODE" value="false" />
- <option name="REDIRECT_INPUT" value="false" />
- <option name="INPUT_FILE" value="" />
- <method v="2" />
- </configuration>
- <recent_temporary>
- <list>
- <item itemvalue="Python.毫米波雷达上报" />
- <item itemvalue="Python.安卓信息上报" />
- </list>
- </recent_temporary>
- </component>
<component name="SharedIndexes">
<attachedChunks>
<set>
@@ -126,42 +45,27 @@
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
- <changelist id="1b298f03-b3a2-4f3f-9fa2-7f833ec35924" name="更改" comment="" />
- <created>1728379882087</created>
+ <changelist id="4f117322-925a-4b78-92ec-ebfd85c967ac" name="更改" comment="" />
+ <created>1735028684107</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
- <updated>1728379882087</updated>
- <workItem from="1728379883141" duration="132000" />
- <workItem from="1728380017193" duration="171000" />
- <workItem from="1729481397357" duration="2465000" />
- <workItem from="1729519480013" duration="13278000" />
- <workItem from="1729685636638" duration="4482000" />
-<<<<<<< HEAD
- <workItem from="1729690521898" duration="8355000" />
-=======
- <workItem from="1729690521898" duration="1942000" />
->>>>>>> 949209b52f0b2ea4a02345aefb25f4daee4ec4bd
+ <updated>1735028684107</updated>
+ <workItem from="1735028687217" duration="2051000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
- <component name="XDebuggerManager">
- <breakpoint-manager>
- <breakpoints>
- <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
- <url>file://$PROJECT_DIR$/Meeting2.0/登录模块/Base/Base.py</url>
- <option name="timeStamp" value="1" />
- </line-breakpoint>
- </breakpoints>
- </breakpoint-manager>
- </component>
- <component name="com.intellij.coverage.CoverageDataManagerImpl">
-<<<<<<< HEAD
- <SUITE FILE_PATH="coverage/ubains_module_test$.coverage" NAME="毫米波雷达上报 覆盖结果" MODIFIED="1729761958173" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/预定系统/毫米波雷达模块" />
-=======
- <SUITE FILE_PATH="coverage/ubains_module_test$.coverage" NAME="安卓信息上报 覆盖结果" MODIFIED="1729740841195" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/预定系统/安卓信息模块" />
->>>>>>> 949209b52f0b2ea4a02345aefb25f4daee4ec4bd
+ <component name="Vcs.Log.Tabs.Properties">
+ <option name="TAB_STATES">
+ <map>
+ <entry key="MAIN">
+ <value>
+ <State />
+ </value>
+ </entry>
+ </map>
+ </option>
</component>
</project>
\ No newline at end of file
......@@ -8,6 +8,14 @@
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/运维集控/项目测试/运维标准版/cases/05区域功能/01新增区域功能.py" beforeDir="false" afterPath="$PROJECT_DIR$/运维集控/项目测试/运维标准版/cases/05区域功能/01新增区域功能.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/.idea/workspace.xml" afterDir="false" />
<list default="true" id="923e4366-b26b-44a4-9a8e-7655702750f8" name="更改" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/cases/会议历史记录/01历史记录筛选.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/cases/会议历史记录/01历史记录筛选.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/cases/会议历史记录/02历史记录再次预定.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/cases/会议历史记录/02历史记录再次预定.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/cases/会议审批/01审批会议创建.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/cases/会议审批/01审批会议创建.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/cases/会议模板/01会议模板查询.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/cases/会议模板/01会议模板查询.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/预定系统/cases/会议模板/02会议模板再次预定.py" beforeDir="false" afterPath="$PROJECT_DIR$/预定系统/cases/会议模板/02会议模板再次预定.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -41,6 +49,59 @@
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="ProjectColorInfo"><![CDATA[{
"customColor": "",
"associatedIndex": 0
}]]></component>
<component name="ProjectId" id="2qel6dw2JSIg22RV44sfGJ83Ng2" />
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Python.安卓信息-消息监听.executor": "Run",
"git-widget-placeholder": "develop",
"last_opened_file_path": "D:/GithubData/自动化/ubains-module-test/预定系统/cases/会议审批",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)"
}
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\GithubData\自动化\ubains-module-test\预定系统\cases\会议审批" />
<recent name="D:\GithubData\自动化\ubains-module-test\预定系统\测试数据\会议模板" />
<recent name="D:\GithubData\自动化\ubains-module-test\预定系统\测试数据\会议历史记录" />
</key>
</component>
<component name="RunManager">
<configuration name="安卓信息-消息监听" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="ubains-module-test" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/预定系统/cases/设备管理" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/预定系统/cases/设备管理/安卓信息-消息监听.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.安卓信息-消息监听" />
</list>
</recent_temporary>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="7af2ddda-4337-4bd9-adfd-87ab868c08f9" name="更改" comment="" />
......@@ -60,6 +121,8 @@
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/ubains_module_test$_.coverage" NAME="安卓信息-消息监听 覆盖结果" MODIFIED="1735034725544" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/预定系统/cases/设备管理" />
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
......
......@@ -192,17 +192,21 @@ def safe_click(element_locator, wd):
# Log a message if the element is not interactable
INFO(f"ElementNotInteractableException: Element {element_locator} is not interactable.")
def issue_send_and_upload(wd , issue_num, issue_name):
import os
from time import sleep
from selenium.webdriver.common.by import By
def issue_send_and_upload(wd, issue_num, issue_name):
"""
输入议题名称以及上传议题文件。
"""
issue_file_path = [
r"D:\GithubData\自动化测试\ubains-module-test\预定系统\reports\issue_file\5.164Scan 安全报告.pdf",
r"D:\GithubData\自动化测试\ubains-module-test\预定系统\reports\issue_file\展厅巡检排班记录241129.xlsx",
r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\issue_file\5.164Scan 安全报告.pdf",
r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\issue_file\IdeaTop软件配置&操作说明文档.docx",
r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\issue_file\ideaTop部署配置视频.mp4",
r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\issue_file\IdeaTop软件配置&操作说明文档.docx",
r"D:\GithubData\自动化测试\ubains-module-test\预定系统\reports\issue_file\议题图片.png"
r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\issue_file\议题图片.png"
]
INFO(f"输入议题名称:{issue_name}")
......@@ -211,9 +215,14 @@ def issue_send_and_upload(wd , issue_num, issue_name):
# 选择议题文件进行上传
INFO("点击【上传文件】按钮")
safe_click((By.XPATH, f"(//div[@class='topicsHandleButton uploadFile'][contains(text(),'上传文件(0)')])[1]"),wd)
safe_click((By.XPATH, f"(//div[@class='topicsHandleButton uploadFile'][contains(text(),'上传文件(0)')])[1]"), wd)
sleep(2)
for i in range(issue_num):
if not os.path.exists(issue_file_path[i]):
INFO(f"文件 {issue_file_path[i]} 不存在,跳出函数")
return
INFO("定位【选择文件】按钮")
upload_button = wd.find_element(By.XPATH, '//*[@id="global-uploader-btn"]/input')
......@@ -225,7 +234,7 @@ def issue_send_and_upload(wd , issue_num, issue_name):
SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Meeting_Message", "添加议题文件")
# 点击【确定】按钮
safe_click((By.XPATH, "//div[@aria-label='会议文件上传']//div[@class='el-dialog__footer']//div//span[contains(text(),'确定')]"),wd)
safe_click((By.XPATH, "//div[@aria-label='会议文件上传']//div[@class='el-dialog__footer']//div//span[contains(text(),'确定')]"), wd)
sleep(2)
def input_clear(element_locator, wd):
......
......@@ -129,3 +129,7 @@
- 根据实际使用时巡检人员的反馈进行调整,定位会控按钮时增加判断,如定位不到即会控创建失败。
- 调整巡检的执行时间。
- 拆分出MQTT通用工具目录,用于后续开发测试人员进行模拟设备调试以及MQTT相关的程序验证。
- 补充历史会议再次预定、会议模板查询以及再次预定功能的代码处理。
27. 2024-12-25
- 根据展厅巡检使用时遇到的问题进行调整,在议题文件上传前做文件是否存在的校验,若不存在则跳出函数。补充讯飞流程的切换窗口句柄代码。
- 补充会议审批预约以及取消审批功能的自动化处理。调整会议模板以及历史会议的自动化处理顺序,无需重复初始化浏览器。
\ No newline at end of file
......@@ -20,6 +20,7 @@ csv_file_path = os.path.join(current_dir, '../../测试数据/会议主流程/
time_format = "%H:%M"
class Message_Book_000x:
"""
执行指令:
1.cd 预定系统
......
......@@ -20,6 +20,7 @@ csv_file_path = os.path.join(current_dir, '../../测试数据/会议主流程/
time_format = "%H:%M"
class Message_Update_000x:
"""
执行指令:
1.cd 预定系统
......
......@@ -20,6 +20,7 @@ csv_file_path = os.path.join(current_dir, '../../测试数据/会议主流程/
time_format = "%H:%M"
class Message_Update_000x:
"""
执行指令:
1.cd 预定系统
......
......@@ -22,7 +22,8 @@ csv_file_path = os.path.join(current_dir, '../../测试数据/会议历史记录
# 定义时间格式
time_format = "%H:%M"
class History_Book_000x:
class History_Query_000x:
tags = ['历史会议功能','预定系统功能']
"""
执行指令:
1.cd 预定系统
......@@ -47,9 +48,10 @@ class History_Book_000x:
query_message_name, query_type, check_text = self.para
# 输入会议名称进行筛选
STEP(1, "输入查询文本:{}".format(query_message_name))
STEP(2, "输入查询文本:{}".format(query_message_name))
safe_send_keys((By.XPATH,"//input[@placeholder='输入关键字搜索']"), query_message_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_History", "Message_Query", f"{name}_查询结果")
sleep(2)
# 判断查询方式
......
from datetime import datetime, timedelta
from time import sleep
import sys
import os
from selenium.webdriver.support.expected_conditions import element_to_be_clickable
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
# 获取当前脚本所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建CSV文件的绝对路径
csv_file_path = os.path.join(current_dir, '../../测试数据/会议历史记录/历史会议再次预定.csv')
# 定义时间格式
time_format = "%H:%M"
class History_Book_000x:
tags = ['历史会议功能','预定系统功能']
"""
执行指令:
1.cd 预定系统
2.hytest --report_title 会议预约测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --test 历史会议再次预定_0**
"""
ddt_cases = read_csv_data(csv_file_path)
def teststeps(self):
"""
执行测试步骤以会议室删除功能。
本函数根据参数输入会议室名称进行搜索并删除会议室,并检查删除后的提示信息是否与预期相符。
字段含义:
name:用例名称
query_message_name:查询的会议名称
check_text:检查提示文本
"""
# 初始化通知文本为空字符串
notify_text = ""
# 从全局存储中获取webdriver实例
wd = GSTORE['wd']
name = self.name
query_message_name, book_start_time, book_end_time, check_text = self.para
# 输入会议名称进行筛选
STEP(2, "输入查询文本:{}".format(query_message_name))
safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), query_message_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_History", "Message_Book", f"{name}_查询结果")
sleep(2)
STEP(3, "检查提示文本")
# 检查查询结果
notify_text = elment_get_text((By.CSS_SELECTOR,
"body > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(3) > div:nth-child(1) > div:nth-child(3) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(2) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1)"),
wd)
INFO(f"查询结果为:{notify_text}")
CHECK_POINT("查询结果是否正确", query_message_name in notify_text)
sleep(1)
STEP(4, "点击【再次预定】按钮")
# 点击【再次预定】按钮
safe_click((By.XPATH, "//tbody/tr[1]/td[8]/div[1]/div[1]/button[1]/span[1]"), wd)
sleep(3)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_History", "Message_Book", f"{name}_再次预定")
# 输入会议名称
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议名称']"), "历史记录会议", wd)
# 选择会议时间
# 将字符串转换为时间对象
start_time = datetime.strptime(book_start_time, time_format)
end_time = datetime.strptime(book_end_time, time_format)
# 如果需要将时间差转换为分钟数
time_diff_minutes = (end_time - start_time).total_seconds() / 60
INFO(f"时间差为:time_diff_minutes")
# 判断如果开始时间与结束时间相等,则不重复点击
if book_start_time == book_end_time:
INFO(f"开始时间与结束时间相等,选择时间块:{book_start_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
elif book_start_time != book_end_time:
INFO(f"开始时间与结束时间不相等,选择时间块:{book_start_time},{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
# 判断时间差是否大于最大预约时长1小时,即60分钟
if time_diff_minutes > 60:
INFO(f"时间差大于最大预约时长1小时,选择【超出预约时长】")
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_Manage", "Message_Book", f"{name}_超出预约时长")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("超出预约时长提示是否正确", "最大预定时间 1 小时" in notify_text)
sleep(2)
# 不选时间点击【下一步】查看提示信息
INFO("不选时间点击【下一步】查看提示信息")
safe_click((By.XPATH, "//div[contains(text(),'下一步')]"), wd)
sleep(1)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_Manage", "Message_Book", f"{name}请选择会议时间提示信息")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("未选时间提示是否正确", "请选择会议时间" in notify_text)
sleep(1)
# 重新选择时间,将字符串转换为时间对象
time_obj = datetime.strptime(book_end_time, time_format)
time_obj_minus_5_minutes = time_obj - timedelta(minutes=30)
# 将时间对象转换回字符串
book_end_time = time_obj_minus_5_minutes.strftime(time_format)
INFO(f"重新选择结束时间为:{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
STEP(5, "点击【快速预约】按钮")
safe_click((By.XPATH, "//div[@class='header_Quick']"),wd)
sleep(4)
safe_click((By.XPATH, "//button[@type='button']//span[contains(text(),'预定')]"),wd)
sleep(2)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_History", "Message_Book", f"{name}预定成功提示信息")
SELENIUM_LOG_SCREEN(wd, "50%", "Message_History", "Message_Book", f"{name}_再次预定提示信息")
INFO(f"预定成功提示信息为:{notify_text}")
CHECK_POINT("预定成功提示是否正确", notify_text == check_text)
# 清除数据
safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), "历史记录会议", wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
sleep(2)
safe_click((By.XPATH, "//span[contains(text(),'删除会议')]"), wd)
sleep(2)
safe_click((By.XPATH,
"//button[contains(@class,'el-button el-button--default el-button--small el-button--primary')]//span[contains(text(),'确定')]"),
wd)
sleep(2)
\ No newline at end of file
from datetime import datetime, timedelta
from time import sleep
import sys
import os
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
# 获取当前脚本所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建CSV文件的绝对路径
csv_file_path = os.path.join(current_dir, '../../测试数据/会议审批/会议审批预约.csv')
# 定义时间格式
time_format = "%H:%M"
class MeetingApproval_Book_000x:
tag = ['会议审批功能']
"""
执行指令:
1.cd 预定系统
2.hytest --report_title 审批会议预约测试报告 --test 审批会议预约_0**
"""
ddt_cases = read_csv_data(csv_file_path)
def teststeps(self):
"""
执行测试步骤以会议室删除功能。
本函数根据参数输入会议室名称进行搜索并删除会议室,并检查删除后的提示信息是否与预期相符。
字段含义:
name:用例名称
conference_name:会议室名称
message_name:会议名称
book_start_time:会议开始时间
book_end_time:会议结束时间
check_text:检查提示文本
"""
# 初始化通知文本为空字符串
notify_text = ""
# 从全局存储中获取webdriver实例
wd = GSTORE['wd']
name = self.name
conference_name, message_name, book_start_time, book_end_time, check_text = self.para
# 在会议室列表搜索会议室
STEP(1, f"在会议室列表搜索:{conference_name}")
# 展开筛选下拉框
safe_click((By.XPATH, "//i[@class='el-collapse-item__arrow el-icon-arrow-right']"), wd)
sleep(1)
# 输入会议室名称,并点击【查询】按钮
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议室名称']"), conference_name, wd)
safe_click((By.XPATH, "//button[@type='button']//span[contains(text(),'查询')]"), wd)
sleep(1)
INFO("检查搜索结果")
# 获取搜索出的会议室名称
notify_text = elment_get_text((By.XPATH, "//span[@class='MeetingCityList_name']"), wd)
INFO(f"搜索结果为:{notify_text}")
CHECK_POINT("搜索结果是否正确", conference_name in notify_text)
# 点击【会议预定】按钮,进入会议预定界面
STEP(2, "点击【会议预定】按钮")
safe_click((By.XPATH, "//span[@class='MeetingCityList_t_btn']"), wd)
sleep(1)
INFO("检查页面标题是否正确")
# 获取页面标题
notify_text = elment_get_text((By.XPATH, "//div[@class='reserve_Title']"), wd)
INFO(f"页面标题为:{notify_text}")
CHECK_POINT("页面标题是否正确", "会议预定" in notify_text)
sleep(1)
# 在会议预定第一步界面进行数据填入
STEP(3, "会议第一步数据填写")
INFO(
f"输入会议名称:{message_name},选择会议开始时间:{book_start_time},选择会议结束时间:{book_end_time}")
# 输入会议名称
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议名称']"), message_name, wd)
# 将字符串转换为时间对象
start_time = datetime.strptime(book_start_time, time_format)
end_time = datetime.strptime(book_end_time, time_format)
# 如果需要将时间差转换为分钟数
time_diff_minutes = (end_time - start_time).total_seconds() / 60
INFO(f"时间差为:time_diff_minutes")
# 判断如果开始时间与结束时间相等,则不重复点击
if book_start_time == book_end_time:
INFO(f"开始时间与结束时间相等,选择时间块:{book_start_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
elif book_start_time != book_end_time:
INFO(f"开始时间与结束时间不相等,选择时间块:{book_start_time},{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
# 判断时间差是否大于最大预约时长1小时,即60分钟
if time_diff_minutes > 60:
INFO(f"时间差大于最大预约时长1小时,选择【超出预约时长】")
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Meeting_Approval", "Message_Book", f"{name}_超出预约时长")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("超出预约时长提示是否正确", "最大预定时间 1 小时" in notify_text)
sleep(2)
# 不选时间点击【下一步】查看提示信息
INFO("不选时间点击【下一步】查看提示信息")
safe_click((By.XPATH, "//div[contains(text(),'下一步')]"), wd)
sleep(1)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Meeting_Approval", "Message_Book", f"{name}请选择会议时间提示信息")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("未选时间提示是否正确", "请选择会议时间" in notify_text)
sleep(1)
# 重新选择时间,将字符串转换为时间对象
time_obj = datetime.strptime(book_end_time, time_format)
time_obj_minus_5_minutes = time_obj - timedelta(minutes=30)
# 将时间对象转换回字符串
book_end_time = time_obj_minus_5_minutes.strftime(time_format)
INFO(f"重新选择结束时间为:{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
STEP(4, "点击【快速预约】按钮")
safe_click((By.XPATH, "//div[@class='header_Quick']"), wd)
sleep(4)
safe_click((By.XPATH, "//button[@type='button']//span[contains(text(),'预定')]"), wd)
sleep(2)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Meeting_Approval", "Message_Book", f"{name}预定成功提示信息")
INFO(f"预定成功提示信息为:{notify_text}")
CHECK_POINT("预定成功提示是否正确", notify_text == check_text)
STEP(5,"检查审批会议是否创建成功")
# 进入会议审批模块
safe_click((By.XPATH, "//span[contains(text(),'会议审批')]"), wd)
sleep(2)
# 查询会议
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议名称搜索']"), message_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='请输入会议名称搜索']"), wd)
sleep(2)
# 获取审批会议名称
notify_text = elment_get_text((By.CSS_SELECTOR, "body > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(3) > div:nth-child(1) > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(2) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1)"), wd)
INFO(f"审批会议名称为:{notify_text}")
SELENIUM_LOG_SCREEN(wd, "50%", "Meeting_Approval", "Message_Book", f"{name}_审批会议名称")
CHECK_POINT("审批会议名称是否正确", notify_text == message_name)
STEP(6, "点击【取消审批】按钮")
# 查询会议
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议名称搜索']"), message_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='请输入会议名称搜索']"), wd)
sleep(2)
safe_click((By.XPATH, "//span[contains(text(),'取消审批')]"), wd)
sleep(2)
# 点击【取消】按钮
safe_click((By.XPATH, "//button[@class='el-button el-button--default el-button--small btn-custom-cancel']//span[contains(text(),'取消')]"), wd)
# 再次点击【取消审批】按钮,并点击【确定】按钮
sleep(1)
safe_click((By.XPATH, "//span[contains(text(),'取消审批')]"), wd)
sleep(2)
safe_click((By.XPATH, "//button[contains(@class,'el-button el-button--default el-button--small el-button--primary')]//span[contains(text(),'确定')]"), wd)
sleep(2)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Meeting_Approval", "Message_Book", f"{name}取消审批成功提示信息")
INFO(f"取消审批成功提示信息为:{notify_text}")
CHECK_POINT("取消审批成功提示是否正确", notify_text == "取消成功")
\ No newline at end of file
import sys
import os
from time import sleep
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
def suite_setup():
STEP(1, "初始化浏览器")
# login_url = 'https://192.168.5.218/#/login/logindf'
# login_ngrok_url = "https://nat.ubainsyun.com:11046"
login_url = 'http://192.168.5.200:8080/#/login/logindf'
browser_init(login_url)
wd = GSTORE['wd']
admin_login("admin@user", "Ubains@4321")
sleep(2)
\ No newline at end of file
from datetime import datetime, timedelta
from time import sleep
import sys
import os
from selenium.webdriver.support.expected_conditions import element_to_be_clickable
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
# 获取当前脚本所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建CSV文件的绝对路径
csv_file_path = os.path.join(current_dir, '../../测试数据/会议模板/会议模板查询.csv')
# 定义时间格式
time_format = "%H:%M"
class MessageTemplate_Query_000x:
tags = ['会议模板功能','预定系统功能']
"""
执行指令:
1.cd 预定系统
2.hytest --report_title 会议预约测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --test 会议模板查询_0**
"""
ddt_cases = read_csv_data(csv_file_path)
def teststeps(self):
"""
执行测试步骤以会议室删除功能。
本函数根据参数输入会议室名称进行搜索并删除会议室,并检查删除后的提示信息是否与预期相符。
字段含义:
name:用例名称
query_message_name:查询的会议名称
check_text:检查提示文本
"""
# 初始化通知文本为空字符串
notify_text = ""
# 从全局存储中获取webdriver实例
wd = GSTORE['wd']
name = self.name
query_template_name, query_type = self.para
STEP(2, f'输入会议模板名称进行搜索:{query_template_name}')
# 输入会议模板名称并进行搜索
safe_send_keys((By.XPATH,"//input[@placeholder='输入关键字搜索']"), query_template_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_Template", "Template_Query", f"{name}_查询结果")
sleep(2)
STEP(3, f'检查查询结果')
if query_type == "错误查询":
notify_text = elment_get_text((By.XPATH, "//span[contains(@class,'el-table__empty-text')]"), wd)
INFO(f"查询结果为:{notify_text}")
CHECK_POINT("查询结果是否正确", "暂无数据" in notify_text)
else:
notify_text = elment_get_text(
(By.CSS_SELECTOR, "tbody tr[class='el-table__row'] td:nth-child(1) div:nth-child(1)"), wd)
INFO(f"查询结果为:{notify_text}")
CHECK_POINT("查询结果是否正确", query_template_name in notify_text)
\ No newline at end of file
from datetime import datetime, timedelta
from time import sleep
import sys
import os
from selenium.webdriver.support.expected_conditions import element_to_be_clickable
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
# 获取当前脚本所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建CSV文件的绝对路径
csv_file_path = os.path.join(current_dir, '../../测试数据/会议模板/会议模板再次预定.csv')
# 定义时间格式
time_format = "%H:%M"
class MessageTemplate_Book_000x:
tags = ['会议模板功能','预定系统功能']
"""
执行指令:
1.cd 预定系统
2.hytest --report_title 会议预约测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --test 会议模板再次预定_0**
"""
ddt_cases = read_csv_data(csv_file_path)
def teststeps(self):
"""
执行测试步骤以会议室删除功能。
本函数根据参数输入会议室名称进行搜索并删除会议室,并检查删除后的提示信息是否与预期相符。
字段含义:
name:用例名称
query_message_name:查询的会议名称
check_text:检查提示文本
"""
# 初始化通知文本为空字符串
notify_text = ""
# 从全局存储中获取webdriver实例
wd = GSTORE['wd']
name = self.name
query_template_name, book_start_time, book_end_time, check_text = self.para
STEP(2, f'输入会议模板名称进行搜索:{query_template_name}')
# 输入会议模板名称并进行搜索
safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), query_template_name, wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_Template", "Template_Book", f"{name}_查询结果")
sleep(2)
notify_text = elment_get_text(
(By.CSS_SELECTOR, "tbody tr[class='el-table__row'] td:nth-child(1) div:nth-child(1)"), wd)
INFO(f"查询结果为:{notify_text}")
CHECK_POINT("查询结果是否正确", query_template_name in notify_text)
STEP(3, f'选择模板点击【再次预定】按钮')
safe_click((By.XPATH, "//span[contains(text(),'再次预定')]"), wd)
sleep(2)
SELENIUM_LOG_SCREEN(wd, "50%", "Message_Template", "Template_Book", f"{name}_再次预定")
# 输入会议名称
safe_send_keys((By.XPATH, "//input[@placeholder='请输入会议名称']"), "模板会议", wd)
# 选择会议时间
# 将字符串转换为时间对象
start_time = datetime.strptime(book_start_time, time_format)
end_time = datetime.strptime(book_end_time, time_format)
# 如果需要将时间差转换为分钟数
time_diff_minutes = (end_time - start_time).total_seconds() / 60
INFO(f"时间差为:time_diff_minutes")
# 判断如果开始时间与结束时间相等,则不重复点击
if book_start_time == book_end_time:
INFO(f"开始时间与结束时间相等,选择时间块:{book_start_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
elif book_start_time != book_end_time:
INFO(f"开始时间与结束时间不相等,选择时间块:{book_start_time},{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
# 判断时间差是否大于最大预约时长1小时,即60分钟
if time_diff_minutes > 60:
INFO(f"时间差大于最大预约时长1小时,选择【超出预约时长】")
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_Manage", "Message_Book", f"{name}_超出预约时长")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("超出预约时长提示是否正确", "最大预定时间 1 小时" in notify_text)
sleep(2)
# 不选时间点击【下一步】查看提示信息
INFO("不选时间点击【下一步】查看提示信息")
safe_click((By.XPATH, "//div[contains(text(),'下一步')]"), wd)
sleep(1)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_Manage", "Message_Book", f"{name}请选择会议时间提示信息")
INFO(f"提示信息为:{notify_text}")
CHECK_POINT("未选时间提示是否正确", "请选择会议时间" in notify_text)
sleep(1)
# 重新选择时间,将字符串转换为时间对象
time_obj = datetime.strptime(book_end_time, time_format)
time_obj_minus_5_minutes = time_obj - timedelta(minutes=30)
# 将时间对象转换回字符串
book_end_time = time_obj_minus_5_minutes.strftime(time_format)
INFO(f"重新选择结束时间为:{book_end_time}")
# 根据开始时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_start_time}'])[1]"), wd)
# 根据结束时间选择对应时间块,时间格式为:**:**
safe_click((By.XPATH, f"(//div[normalize-space()='{book_end_time}'])[1]"), wd)
sleep(2)
STEP(5, "点击【快速预约】按钮")
safe_click((By.XPATH, "//div[@class='header_Quick']"), wd)
sleep(4)
safe_click((By.XPATH, "//button[@type='button']//span[contains(text(),'预定')]"), wd)
sleep(2)
notify_text = get_notify_text(wd, (By.XPATH, "//p[contains(@class,'el-message__content')]"),
"Message_History", "Message_Book", f"{name}预定成功提示信息")
SELENIUM_LOG_SCREEN(wd, "50%", "Message_History", "Message_Book", f"{name}_再次预定提示信息")
INFO(f"预定成功提示信息为:{notify_text}")
CHECK_POINT("预定成功提示是否正确", notify_text == check_text)
# 清除数据
safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), "模板会议", wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
sleep(2)
safe_click((By.XPATH, "//span[contains(text(),'删除会议')]"), wd)
sleep(2)
safe_click((By.XPATH, "//button[contains(@class,'el-button el-button--default el-button--small el-button--primary')]//span[contains(text(),'确定')]"), wd)
sleep(2)
\ No newline at end of file
import sys
import os
from time import sleep
# 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建预定系统的绝对路径
预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..'))
# 添加路径
sys.path.append(预定系统_path)
# 导入模块
from 预定系统.Base.base import *
def suite_setup():
STEP(1, "初始化浏览器")
# login_url = 'https://192.168.5.218/#/login/logindf'
# login_ngrok_url = "https://nat.ubainsyun.com:11046"
login_url = 'http://192.168.5.200:8080/#/login/logindf'
browser_init(login_url)
wd = GSTORE['wd']
admin_login("admin@ZDH", "Ubains@4321")
sleep(2)
# 进入历史记录界面
safe_click((By.XPATH,"//span[contains(text(),'会议模板')]"), wd)
\ No newline at end of file
......@@ -11,21 +11,23 @@ sys.path.append(预定系统_path)
from 预定系统.Base.base import *
class XF_Meeting_0001:
tags = ['展厅巡检']
tags = ['展厅巡检','讯飞测试']
def teststeps(self):
wd = GSTORE['wd']
safe_click((By.XPATH, "//span[contains(text(),'已预订会议')]"), wd)
sleep(1)
safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), "展厅巡检测试", wd)
send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)
sleep(2)
safe_click((By.XPATH, "//span[contains(text(),'更多操作')]"),wd)
sleep(1)
safe_click((By.XPATH, "//li[contains(text(),'会议纪要')]"), wd)
sleep(1)
safe_click((By.XPATH, "//i[@title='跳转至语音转录']"), wd)
safe_click((By.XPATH, "//li[contains(text(),'讯飞纪要')]"), wd)
sleep(3)
wd.switch_to.window(wd.window_handles[1])
INFO("请检查讯飞系统是否正确单点登录")
SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "XF_meeting", "讯飞系统截屏")
SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "XF_meeting", "讯飞纪要界面截屏")
# 结束这场会议
wd.switch_to.window(wd.window_handles[0])
......
......@@ -18,8 +18,8 @@ def on_message(client, userdata, msg):
if __name__ == "__main__":
# 5.218测试环境 192.168.5.218 1883
broker_address = "nat.ubainsyun.com"
port = 18685
broker_address = "192.168.5.218"
port = 1883
# 创建 MQTT 客户端实例
mqtt_client = mqtt.Client()
......
执行 checkFirewalld:
防火墙状态:未启动
=============================================================================================
执行 checkService:
[m]ysql 服务正常
[r]edis 服务正常
[f]dfs_storaged 服务正常
[f]dfs_tracker 服务正常
[e]mqx 服务正常
ubains-meeting-api-1.0-SNAPSHOT.jar 服务正常
[u]bains-meeting-inner-api-1.0-SNAPSHOT.jar 服务正常
[u]wsgi 服务正常
=============================================================================================
执行 checkDockerPort:
upython :::8000->8000/tcp,
upython :::8002->8002/tcp,
upython :::8081->8081/tcp,
upython :::8443->8443/tcp,
upython :::9009->9009/tcp
uplayer :::18000->8000/tcp,
uplayer :::18002->8002/tcp,
uplayer :::18081->8081/tcp,
uplayer :::18082->8082/tcp
umysql2 :::8306->3306/tcp
ujava2 :::443->443/tcp,
ujava2 :::554->554/tcp,
ujava2 :::1935->1935/tcp,
ujava2 :::2333-2334->2333-2334/tcp,
ujava2 :::8079-8080->8079-8080/tcp,
ujava2 :::8085-8088->8085-8088/tcp,
ujava2 :::8889->8889/tcp,
ujava2 :::8996-8999->8996-8999/tcp,
ujava2 :::10000->10000/tcp,
uredis :::6379->6379/tcp
uemqx :::1883->1883/tcp,
uemqx :::8083-8084->8083-8084/tcp,
uemqx :::8883->8883/tcp,
uemqx :::18083->18083/tcp,
=============================================================================================
执行 serverDataRecorder:
2024-12-20 09:59:03 [INFO] docker服务正常
2024-12-20 09:59:03 [INFO] [m]ysql 服务正常
2024-12-20 09:59:03 [INFO] [r]edis 服务正常
2024-12-20 09:59:03 [INFO] [f]dfs_storaged 服务正常
2024-12-20 09:59:03 [INFO] [f]dfs_tracker 服务正常
2024-12-20 09:59:03 [INFO] [e]pmd 服务正常
2024-12-20 09:59:03 [INFO] [u]wsgi 服务正常
2024-12-20 09:59:03 [INFO] ubains-meeting-api-1.0-SNAPSHOT.jar 服务正常
2024-12-20 09:59:03 [INFO] [u]bains-meeting-inner-api-1.0-SNAPSHOT.jar 服务正常
=============================================================================================
执行 network_check:
Called network_check with parameters: network_check route
网络流量和连接信息 - 2024-12-20 09:59:03
路由配置表信息:
default via 192.168.5.1 dev enp4s1 proto static metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.5.0/24 dev enp4s1 proto kernel scope link src 192.168.5.218 metric 100
=============================================================================================
执行 network_check:
Called network_check with parameters: network_check interface
网络流量和连接信息 - 2024-12-20 09:59:03
网络接口状态、MAC 和 IPv4 地址:
RTNETLINK answers: No such device
Cannot send link get request: No such device
lo:
状态: UNKNOWN
MAC地址:
IPv4地址: 127.0.0.1/8
RTNETLINK answers: No such device
Cannot send link get request: No such device
enp4s1:
状态: UP
MAC地址:
IPv4地址: 192.168.5.218/24
RTNETLINK answers: No such device
Cannot send link get request: No such device
docker0:
状态: UP
MAC地址:
IPv4地址: 172.17.0.1/16
=============================================================================================
执行 network_check:
Called network_check with parameters: network_check connections
网络流量和连接信息 - 2024-12-20 09:59:03
网络连接和端口统计:
Netid State Local
tcp LISTEN 0.0.0.0:8085
tcp LISTEN 0.0.0.0:8086
tcp LISTEN 0.0.0.0:22
tcp LISTEN 0.0.0.0:8087
tcp LISTEN 0.0.0.0:8088
tcp LISTEN 0.0.0.0:23000
tcp LISTEN 0.0.0.0:8888
tcp LISTEN 0.0.0.0:8889
tcp LISTEN 0.0.0.0:8443
tcp LISTEN 0.0.0.0:443
tcp LISTEN 0.0.0.0:1883
tcp LISTEN 0.0.0.0:2333
tcp LISTEN 0.0.0.0:2334
tcp LISTEN 0.0.0.0:8000
tcp LISTEN 0.0.0.0:18081
tcp LISTEN 0.0.0.0:8002
tcp LISTEN 0.0.0.0:18082
tcp LISTEN 0.0.0.0:18083
tcp LISTEN 0.0.0.0:8996
tcp LISTEN 0.0.0.0:8997
tcp LISTEN 0.0.0.0:8998
tcp LISTEN 0.0.0.0:8999
tcp LISTEN 0.0.0.0:554
tcp LISTEN 0.0.0.0:22122
tcp LISTEN 0.0.0.0:6379
tcp LISTEN 0.0.0.0:1935
tcp LISTEN 0.0.0.0:8079
tcp LISTEN 0.0.0.0:111
tcp LISTEN 0.0.0.0:80
tcp LISTEN 0.0.0.0:8080
tcp LISTEN 0.0.0.0:10000
tcp LISTEN 0.0.0.0:18000
tcp LISTEN 0.0.0.0:8081
tcp LISTEN 0.0.0.0:9009
tcp LISTEN 0.0.0.0:8306
tcp LISTEN 0.0.0.0:18002
tcp LISTEN 0.0.0.0:8083
tcp LISTEN 0.0.0.0:8883
tcp LISTEN 0.0.0.0:8084
tcp LISTEN *:4443
tcp LISTEN *:8866
tcp LISTEN *:9090
tcp LISTEN *:8040
tcp LISTEN *:12371
tcp LISTEN *:11443
=============================================================================================
执行 network_check:
Called network_check with parameters: network_check firewall
网络流量和连接信息 - 2024-12-20 09:59:03
防火墙规则:
Chain INPUT (policy ACCEPT 1878K packets, 952M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
22M 19G DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
22M 19G DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
11M 5221M ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
137K 7342K DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
11M 14G ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 1834K packets, 947M bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
85 4420 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.4 tcp dpt:6379
82 4264 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.6 tcp dpt:8082
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.6 tcp dpt:8081
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.6 tcp dpt:8002
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.6 tcp dpt:8000
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:18083
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:8883
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:8084
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:8083
105 5740 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:1883
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:10000
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8999
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8998
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8997
85 5100 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8996
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8889
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8088
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8087
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8086
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8085
7 364 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8080
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8079
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:2334
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:2333
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:1935
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:554
584 37534 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:443
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:9009
1593 82836 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:8443
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:8081
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:8002
2036 106K ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:8000
0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.3 tcp dpt:3306
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
11M 14G DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
22M 19G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
11M 14G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
22M 19G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
=============================================================================================
执行 network_check:
Called network_check with parameters: network_check docker
网络流量和连接信息 - 2024-12-20 09:59:03
docker网络规则与MAC地址:
[
{
"Name": "bridge",
"Id": "8a099c24b4ce2392ffc682dd9ac9335abb6b70662798a35743fbcc3fb7d79982",
"Created": "2024-11-04T18:00:09.914749565+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"0349f1053421e48b415b0f4a6758df194a47616a309481fdfdae664c5e7bf1f3": {
"Name": "upython",
"EndpointID": "ea30a5f6b1bf305a3c10ac3a3d6c44503bb5c840c3aa1dbf49f30dc438125847",
"MacAddress": "02:42:ac:11:00:06",
"IPv4Address": "172.17.0.7/16",
"IPv6Address": ""
},
"23fbc1ed599f77c7562756d38d4e655d31a96a9a47978888629c50e556cc60ee": {
"Name": "umysql2",
"EndpointID": "4bb52b2d978dc90c57e0b5a89c623f6df8e4e844ac4bea45d385a9005386e72f",
"MacAddress": "02:42:ac:11:00:05",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"8f87e78e4e9b419744799f32be396ebd55d0da21a7845d6854f3152cdd7e70da": {
"Name": "uemqx",
"EndpointID": "41cd86845237b7c2117b19b3cc28c9660fc5be6086e33562b2ce0c3d5de95793",
"MacAddress": "02:42:ac:12:00:06",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"9672005cfb3ceb4b26f8b58c317e2068e4f8b5508d7980873de3e6c1d71eda58": {
"Name": "uplayer",
"EndpointID": "43f4647ffd479f2460af5e63780695d1646e30a4b171aaab4056a29c931345ee",
"MacAddress": "02:42:ac:11:00:06",
"IPv4Address": "172.17.0.6/16",
"IPv6Address": ""
},
"b67149b24bb5d2ad2bc0c74dde784958c98ae1f10b5c3dee4eadd00787951b50": {
"Name": "uredis",
"EndpointID": "c978bb8d32e421565522bd85d16834c774aa49409588cb58df9aaba91d70fd3a",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
"e960786c759c953ab039a7dd72c72e789f7dc479cd42fed0ba9e5b5e1016d0bd": {
"Name": "ujava2",
"EndpointID": "5a4d8667c5fe60eeebe2966731029c0d77e998cceba972c353e38884613dbde5",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.5/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
=============================================================================================
执行 analyzePosition:
服务器状态分析 - getMysqlStatus
参数2: Ubains@123
Error response from daemon: Container 09e2052db0540c47415193204c94fa2c71c0676375476b349de862936bbe1901 is not running
执行SQL语句时发生错误:
创建表失败
Error response from daemon: Container 09e2052db0540c47415193204c94fa2c71c0676375476b349de862936bbe1901 is not running
执行SQL语句时发生错误:
插入记录失败
Error response from daemon: Container 09e2052db0540c47415193204c94fa2c71c0676375476b349de862936bbe1901 is not running
执行SQL语句时发生错误:
查询记录失败
Error response from daemon: Container 09e2052db0540c47415193204c94fa2c71c0676375476b349de862936bbe1901 is not running
执行SQL语句时发生错误:
更新记录失败
Error response from daemon: Container 09e2052db0540c47415193204c94fa2c71c0676375476b349de862936bbe1901 is not running
执行SQL语句时发生错误:
删除记录失败
=============================================================================================
执行 analyzePosition:
服务器状态分析 - getRedisStatus
参数2: Ubains@123
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
response 为: PONG
Redis 服务器连接成功
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
set_response 为: OK
Redis 服务器设置成功
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
get_response 为: test_value
Redis 服务器获取成功
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
del_response 为: 1
Redis 服务器删除成功
=============================================================================================
执行 analyzePosition:
服务器状态分析 - getFastdfsStatus
参数2: analyzePosition getFastdfsStatus
fastdfs文件上传成功
=============================================================================================
执行 analyzePosition:
服务器状态分析 - getNginxStatus
参数2: analyzePosition getNginxStatus
Nginx配置文件正确
HTTP 响应代码: 200
HTTP请求正常
=============================================================================================
......@@ -70,11 +70,11 @@ start_workers(3)
# 每天早上07:50执行后台系统设置功能测试
schedule.every().saturday.at("12:00").do(run_task, run_automation_test, report_title="预定系统_后台管理功能_测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="后台管理功能", ding_type="标准版巡检")
schedule.every().monday.at("07:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().tuesday.at("07:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().wednesday.at("07:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().thursday.at("07:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().friday.at("07:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().monday.at("08:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().tuesday.at("08:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().wednesday.at("08:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().thursday.at("08:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
schedule.every().friday.at("08:05").do(run_task, run_automation_test, report_title="展厅巡检测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检", ding_type="展厅巡检")
# schedule.every().day.at("08:25").do(run_task, run_automation_test, report_title="展厅巡检_腾讯终端入会测试报告", report_url_prefix="http://nat.ubainsyun.com:31133", test_case="展厅巡检_腾讯会议")
......
name,query_message_name,book_start_time,book_end_time,check_text
历史会议再次预定_001,哈哈哈哈会议,17:30,17:45,预定成功
\ No newline at end of file
name,conference_name,message_name,book_start_time,book_end_time,check_text
审批会议预约_001,产研中心会议室,这是审批会议,15:00,15:15,会议正在审批中
\ No newline at end of file
name,query_message_name,book_start_time,book_end_time,check_text
会议模板再次预定_001,自动化会议模板,18:00,18:15,预定成功
\ No newline at end of file
name,query_template_name,query_type
会议模板查询_001,预定会议,模糊查询
会议模板查询_002,自动化会议模板,精确查询
会议模板查询_003,错误的会议,错误查询
\ No newline at end of file
name,conference_name,message_name,book_type,issue_name,book_start_time,book_end_time,message_notification,check_text
展厅巡检_001,展厅会议室,展厅巡检测试,普通会议,议题1,08:15,08:30,开会前一天提醒,预定成功
\ No newline at end of file
展厅巡检_001,展厅会议室,展厅巡检测试,普通会议,议题1,08:45,09:00,开会前一天提醒,预定成功
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论