提交 8e4885485bcae078a39e99690b6fa0244f9660fc

作者 Shishutong
1 个父辈 da305456

版本:1.0.7

1.新增实习计划用例
2.优化教师用例
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="ChangeListManager"> 3 <component name="ChangeListManager">
4 - <list default="true" id="129454fc-5415-4c7e-9855-d0293355ede5" name="Default Changelist" comment="版本:1.0.6&#10;1.支持单独模块用例的执行">  
5 - <change afterPath="$PROJECT_DIR$/data/Internship_preparation/test_04_internship_plan.xlsx" afterDir="false" />  
6 - <change afterPath="$PROJECT_DIR$/testcase/test_04_Internship_preparation.py" afterDir="false" /> 4 + <list default="true" id="129454fc-5415-4c7e-9855-d0293355ede5" name="Default Changelist" comment="版本:1.0.6&#10;1.需求院系名称由倒序改成正序排列,代码优化">
7 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> 5 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
  6 + <change beforePath="$PROJECT_DIR$/common/handle_path.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/handle_path.py" afterDir="false" />
8 <change beforePath="$PROJECT_DIR$/conf/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/conf/config.ini" afterDir="false" /> 7 <change beforePath="$PROJECT_DIR$/conf/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/conf/config.ini" afterDir="false" />
  8 + <change beforePath="$PROJECT_DIR$/data/Internship_preparation/test_04_internship_plan.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/Internship_preparation/test_04_internship_plan.xlsx" afterDir="false" />
9 <change beforePath="$PROJECT_DIR$/data/system/test_02_department.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_department.xlsx" afterDir="false" /> 9 <change beforePath="$PROJECT_DIR$/data/system/test_02_department.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_department.xlsx" afterDir="false" />
10 <change beforePath="$PROJECT_DIR$/data/system/test_02_specialty.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_specialty.xlsx" afterDir="false" /> 10 <change beforePath="$PROJECT_DIR$/data/system/test_02_specialty.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_specialty.xlsx" afterDir="false" />
11 <change beforePath="$PROJECT_DIR$/data/system/test_02_term.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_term.xlsx" afterDir="false" /> 11 <change beforePath="$PROJECT_DIR$/data/system/test_02_term.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_term.xlsx" afterDir="false" />
@@ -19,8 +19,7 @@ @@ -19,8 +19,7 @@
19 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" /> 19 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" />
20 <change beforePath="$PROJECT_DIR$/testcase/test_02_system_management.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_02_system_management.py" afterDir="false" /> 20 <change beforePath="$PROJECT_DIR$/testcase/test_02_system_management.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_02_system_management.py" afterDir="false" />
21 <change beforePath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" /> 21 <change beforePath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" />
22 - <change beforePath="$PROJECT_DIR$/tools/fixture.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/fixture.py" afterDir="false" />  
23 - <change beforePath="$PROJECT_DIR$/tools/handle_token.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/handle_token.py" afterDir="false" /> 22 + <change beforePath="$PROJECT_DIR$/testcase/test_04_Internship_preparation.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_04_Internship_preparation.py" afterDir="false" />
24 </list> 23 </list>
25 <option name="SHOW_DIALOG" value="false" /> 24 <option name="SHOW_DIALOG" value="false" />
26 <option name="HIGHLIGHT_CONFLICTS" value="true" /> 25 <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -118,7 +117,7 @@ @@ -118,7 +117,7 @@
118 <option name="INPUT_FILE" value="" /> 117 <option name="INPUT_FILE" value="" />
119 <method v="2" /> 118 <method v="2" />
120 </configuration> 119 </configuration>
121 - <configuration name="Unittests in test_01_login.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true"> 120 + <configuration name="Unittests in test_02_system_management.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
122 <module name="yxly2" /> 121 <module name="yxly2" />
123 <option name="INTERPRETER_OPTIONS" value="" /> 122 <option name="INTERPRETER_OPTIONS" value="" />
124 <option name="PARENT_ENVS" value="true" /> 123 <option name="PARENT_ENVS" value="true" />
@@ -129,11 +128,11 @@ @@ -129,11 +128,11 @@
129 <option name="ADD_SOURCE_ROOTS" value="true" /> 128 <option name="ADD_SOURCE_ROOTS" value="true" />
130 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> 129 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
131 <option name="_new_additionalArguments" value="&quot;&quot;" /> 130 <option name="_new_additionalArguments" value="&quot;&quot;" />
132 - <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_01_login.py&quot;" /> 131 + <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_02_system_management.py&quot;" />
133 <option name="_new_targetType" value="&quot;PATH&quot;" /> 132 <option name="_new_targetType" value="&quot;PATH&quot;" />
134 <method v="2" /> 133 <method v="2" />
135 </configuration> 134 </configuration>
136 - <configuration name="Unittests in test_02_system_management.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true"> 135 + <configuration name="Unittests in test_03_teaching_affairs.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
137 <module name="yxly2" /> 136 <module name="yxly2" />
138 <option name="INTERPRETER_OPTIONS" value="" /> 137 <option name="INTERPRETER_OPTIONS" value="" />
139 <option name="PARENT_ENVS" value="true" /> 138 <option name="PARENT_ENVS" value="true" />
@@ -144,11 +143,11 @@ @@ -144,11 +143,11 @@
144 <option name="ADD_SOURCE_ROOTS" value="true" /> 143 <option name="ADD_SOURCE_ROOTS" value="true" />
145 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> 144 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
146 <option name="_new_additionalArguments" value="&quot;&quot;" /> 145 <option name="_new_additionalArguments" value="&quot;&quot;" />
147 - <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_02_system_management.py&quot;" /> 146 + <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_03_teaching_affairs.py&quot;" />
148 <option name="_new_targetType" value="&quot;PATH&quot;" /> 147 <option name="_new_targetType" value="&quot;PATH&quot;" />
149 <method v="2" /> 148 <method v="2" />
150 </configuration> 149 </configuration>
151 - <configuration name="Unittests in test_03_teaching_affairs.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true"> 150 + <configuration name="Unittests in test_04_Internship_preparation.py" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
152 <module name="yxly2" /> 151 <module name="yxly2" />
153 <option name="INTERPRETER_OPTIONS" value="" /> 152 <option name="INTERPRETER_OPTIONS" value="" />
154 <option name="PARENT_ENVS" value="true" /> 153 <option name="PARENT_ENVS" value="true" />
@@ -159,7 +158,7 @@ @@ -159,7 +158,7 @@
159 <option name="ADD_SOURCE_ROOTS" value="true" /> 158 <option name="ADD_SOURCE_ROOTS" value="true" />
160 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> 159 <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
161 <option name="_new_additionalArguments" value="&quot;&quot;" /> 160 <option name="_new_additionalArguments" value="&quot;&quot;" />
162 - <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_03_teaching_affairs.py&quot;" /> 161 + <option name="_new_target" value="&quot;$PROJECT_DIR$/testcase/test_04_Internship_preparation.py&quot;" />
163 <option name="_new_targetType" value="&quot;PATH&quot;" /> 162 <option name="_new_targetType" value="&quot;PATH&quot;" />
164 <method v="2" /> 163 <method v="2" />
165 </configuration> 164 </configuration>
@@ -167,16 +166,16 @@ @@ -167,16 +166,16 @@
167 <item itemvalue="Python.run" /> 166 <item itemvalue="Python.run" />
168 <item itemvalue="Python.fixture (1)" /> 167 <item itemvalue="Python.fixture (1)" />
169 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" /> 168 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" />
170 - <item itemvalue="Python tests.Unittests in test_01_login.py" />  
171 <item itemvalue="Python tests.Unittests in test_02_system_management.py" /> 169 <item itemvalue="Python tests.Unittests in test_02_system_management.py" />
  170 + <item itemvalue="Python tests.Unittests in test_04_Internship_preparation.py" />
172 </list> 171 </list>
173 <recent_temporary> 172 <recent_temporary>
174 <list> 173 <list>
175 <item itemvalue="Python.run" /> 174 <item itemvalue="Python.run" />
  175 + <item itemvalue="Python tests.Unittests in test_04_Internship_preparation.py" />
176 <item itemvalue="Python tests.Unittests in test_02_system_management.py" /> 176 <item itemvalue="Python tests.Unittests in test_02_system_management.py" />
177 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" /> 177 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" />
178 <item itemvalue="Python.fixture (1)" /> 178 <item itemvalue="Python.fixture (1)" />
179 - <item itemvalue="Python tests.Unittests in test_01_login.py" />  
180 </list> 179 </list>
181 </recent_temporary> 180 </recent_temporary>
182 </component> 181 </component>
@@ -200,7 +199,8 @@ @@ -200,7 +199,8 @@
200 <workItem from="1672129396493" duration="4038000" /> 199 <workItem from="1672129396493" duration="4038000" />
201 <workItem from="1672191767788" duration="18977000" /> 200 <workItem from="1672191767788" duration="18977000" />
202 <workItem from="1672235367588" duration="1605000" /> 201 <workItem from="1672235367588" duration="1605000" />
203 - <workItem from="1672280816359" duration="13561000" /> 202 + <workItem from="1672280816359" duration="17752000" />
  203 + <workItem from="1672364796746" duration="19951000" />
204 </task> 204 </task>
205 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交"> 205 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交">
206 <created>1671544396986</created> 206 <created>1671544396986</created>
@@ -279,7 +279,14 @@ @@ -279,7 +279,14 @@
279 <option name="project" value="LOCAL" /> 279 <option name="project" value="LOCAL" />
280 <updated>1672236669681</updated> 280 <updated>1672236669681</updated>
281 </task> 281 </task>
282 - <option name="localTasksCounter" value="12" /> 282 + <task id="LOCAL-00012" summary="版本:1.0.6&#10;1.需求院系名称由倒序改成正序排列,代码优化">
  283 + <created>1672305081053</created>
  284 + <option name="number" value="00012" />
  285 + <option name="presentableId" value="LOCAL-00012" />
  286 + <option name="project" value="LOCAL" />
  287 + <updated>1672305081053</updated>
  288 + </task>
  289 + <option name="localTasksCounter" value="13" />
283 <servers /> 290 <servers />
284 </component> 291 </component>
285 <component name="TypeScriptGeneratedFilesManager"> 292 <component name="TypeScriptGeneratedFilesManager">
@@ -321,24 +328,25 @@ @@ -321,24 +328,25 @@
321 <MESSAGE value="版本:1.0.5&#10;1.md文档更新" /> 328 <MESSAGE value="版本:1.0.5&#10;1.md文档更新" />
322 <MESSAGE value="版本:1.0.5&#10;1.优化" /> 329 <MESSAGE value="版本:1.0.5&#10;1.优化" />
323 <MESSAGE value="版本:1.0.6&#10;1.支持单独模块用例的执行" /> 330 <MESSAGE value="版本:1.0.6&#10;1.支持单独模块用例的执行" />
324 - <option name="LAST_COMMIT_MESSAGE" value="版本:1.0.6&#10;1.支持单独模块用例的执行" /> 331 + <MESSAGE value="版本:1.0.6&#10;1.需求院系名称由倒序改成正序排列,代码优化" />
  332 + <option name="LAST_COMMIT_MESSAGE" value="版本:1.0.6&#10;1.需求院系名称由倒序改成正序排列,代码优化" />
325 </component> 333 </component>
326 <component name="XDebuggerManager"> 334 <component name="XDebuggerManager">
327 <breakpoint-manager> 335 <breakpoint-manager>
328 <breakpoints> 336 <breakpoints>
329 <line-breakpoint suspend="THREAD" type="python-line"> 337 <line-breakpoint suspend="THREAD" type="python-line">
330 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 338 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
331 - <line>147</line> 339 + <line>144</line>
332 <option name="timeStamp" value="5" /> 340 <option name="timeStamp" value="5" />
333 </line-breakpoint> 341 </line-breakpoint>
334 <line-breakpoint suspend="THREAD" type="python-line"> 342 <line-breakpoint suspend="THREAD" type="python-line">
335 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 343 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
336 - <line>183</line> 344 + <line>180</line>
337 <option name="timeStamp" value="10" /> 345 <option name="timeStamp" value="10" />
338 </line-breakpoint> 346 </line-breakpoint>
339 <line-breakpoint suspend="THREAD" type="python-line"> 347 <line-breakpoint suspend="THREAD" type="python-line">
340 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 348 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
341 - <line>88</line> 349 + <line>85</line>
342 <option name="timeStamp" value="11" /> 350 <option name="timeStamp" value="11" />
343 </line-breakpoint> 351 </line-breakpoint>
344 <line-breakpoint suspend="THREAD" type="python-line"> 352 <line-breakpoint suspend="THREAD" type="python-line">
@@ -358,17 +366,17 @@ @@ -358,17 +366,17 @@
358 </line-breakpoint> 366 </line-breakpoint>
359 <line-breakpoint suspend="THREAD" type="python-line"> 367 <line-breakpoint suspend="THREAD" type="python-line">
360 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 368 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
361 - <line>108</line> 369 + <line>103</line>
362 <option name="timeStamp" value="23" /> 370 <option name="timeStamp" value="23" />
363 </line-breakpoint> 371 </line-breakpoint>
364 <line-breakpoint suspend="THREAD" type="python-line"> 372 <line-breakpoint suspend="THREAD" type="python-line">
365 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 373 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
366 - <line>175</line> 374 + <line>172</line>
367 <option name="timeStamp" value="25" /> 375 <option name="timeStamp" value="25" />
368 </line-breakpoint> 376 </line-breakpoint>
369 <line-breakpoint suspend="THREAD" type="python-line"> 377 <line-breakpoint suspend="THREAD" type="python-line">
370 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 378 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
371 - <line>258</line> 379 + <line>255</line>
372 <option name="timeStamp" value="26" /> 380 <option name="timeStamp" value="26" />
373 </line-breakpoint> 381 </line-breakpoint>
374 <line-breakpoint suspend="THREAD" type="python-line"> 382 <line-breakpoint suspend="THREAD" type="python-line">
@@ -378,17 +386,17 @@ @@ -378,17 +386,17 @@
378 </line-breakpoint> 386 </line-breakpoint>
379 <line-breakpoint suspend="THREAD" type="python-line"> 387 <line-breakpoint suspend="THREAD" type="python-line">
380 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 388 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
381 - <line>297</line> 389 + <line>291</line>
382 <option name="timeStamp" value="35" /> 390 <option name="timeStamp" value="35" />
383 </line-breakpoint> 391 </line-breakpoint>
384 <line-breakpoint suspend="THREAD" type="python-line"> 392 <line-breakpoint suspend="THREAD" type="python-line">
385 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 393 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
386 - <line>325</line> 394 + <line>319</line>
387 <option name="timeStamp" value="37" /> 395 <option name="timeStamp" value="37" />
388 </line-breakpoint> 396 </line-breakpoint>
389 <line-breakpoint suspend="THREAD" type="python-line"> 397 <line-breakpoint suspend="THREAD" type="python-line">
390 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 398 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
391 - <line>369</line> 399 + <line>363</line>
392 <option name="timeStamp" value="38" /> 400 <option name="timeStamp" value="38" />
393 </line-breakpoint> 401 </line-breakpoint>
394 <line-breakpoint suspend="THREAD" type="python-line"> 402 <line-breakpoint suspend="THREAD" type="python-line">
@@ -398,12 +406,7 @@ @@ -398,12 +406,7 @@
398 </line-breakpoint> 406 </line-breakpoint>
399 <line-breakpoint suspend="THREAD" type="python-line"> 407 <line-breakpoint suspend="THREAD" type="python-line">
400 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 408 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
401 - <line>243</line>  
402 - <option name="timeStamp" value="43" />  
403 - </line-breakpoint>  
404 - <line-breakpoint suspend="THREAD" type="python-line">  
405 - <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>  
406 - <line>242</line> 409 + <line>237</line>
407 <option name="timeStamp" value="44" /> 410 <option name="timeStamp" value="44" />
408 </line-breakpoint> 411 </line-breakpoint>
409 <line-breakpoint suspend="THREAD" type="python-line"> 412 <line-breakpoint suspend="THREAD" type="python-line">
@@ -413,9 +416,24 @@ @@ -413,9 +416,24 @@
413 </line-breakpoint> 416 </line-breakpoint>
414 <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 417 <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
415 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 418 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
416 - <line>177</line> 419 + <line>174</line>
417 <option name="timeStamp" value="49" /> 420 <option name="timeStamp" value="49" />
418 </line-breakpoint> 421 </line-breakpoint>
  422 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  423 + <url>file://$PROJECT_DIR$/testcase/test_04_Internship_preparation.py</url>
  424 + <line>114</line>
  425 + <option name="timeStamp" value="50" />
  426 + </line-breakpoint>
  427 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  428 + <url>file://$PROJECT_DIR$/testcase/test_04_Internship_preparation.py</url>
  429 + <line>62</line>
  430 + <option name="timeStamp" value="51" />
  431 + </line-breakpoint>
  432 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  433 + <url>file://$PROJECT_DIR$/testcase/test_04_Internship_preparation.py</url>
  434 + <line>76</line>
  435 + <option name="timeStamp" value="52" />
  436 + </line-breakpoint>
419 </breakpoints> 437 </breakpoints>
420 <default-breakpoints> 438 <default-breakpoints>
421 <breakpoint type="python-exception"> 439 <breakpoint type="python-exception">
@@ -432,8 +450,9 @@ @@ -432,8 +450,9 @@
432 <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_01_login_py.coverage" NAME="Unittests in test_01_login.py Coverage Results" MODIFIED="1671641941612" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 450 <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_01_login_py.coverage" NAME="Unittests in test_01_login.py Coverage Results" MODIFIED="1671641941612" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
433 <SUITE FILE_PATH="coverage/yxly$fixture.coverage" NAME="fixture Coverage Results" MODIFIED="1671628017395" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 451 <SUITE FILE_PATH="coverage/yxly$fixture.coverage" NAME="fixture Coverage Results" MODIFIED="1671628017395" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
434 <SUITE FILE_PATH="coverage/yxly$Unittests_in_fixture_py.coverage" NAME="Unittests in fixture.py Coverage Results" MODIFIED="1671625806027" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 452 <SUITE FILE_PATH="coverage/yxly$Unittests_in_fixture_py.coverage" NAME="Unittests in fixture.py Coverage Results" MODIFIED="1671625806027" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
  453 + <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_04_Internship_preparation_py.coverage" NAME="Unittests in test_04_Internship_preparation.py Coverage Results" MODIFIED="1672390869984" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
435 <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1672198781295" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 454 <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1672198781295" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
436 <SUITE FILE_PATH="coverage/yxly$pytest_in_test_02_system_management_py.coverage" NAME="pytest in test_02_system_management.py Coverage Results" MODIFIED="1671617451891" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 455 <SUITE FILE_PATH="coverage/yxly$pytest_in_test_02_system_management_py.coverage" NAME="pytest in test_02_system_management.py Coverage Results" MODIFIED="1671617451891" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
437 - <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1672304771099" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> 456 + <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1672393153208" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
438 </component> 457 </component>
439 </project> 458 </project>
@@ -19,5 +19,10 @@ Report_Path = os.path.join(Base_Path, "report") @@ -19,5 +19,10 @@ Report_Path = os.path.join(Base_Path, "report")
19 Log_Path = os.path.join(Base_Path, "logs") 19 Log_Path = os.path.join(Base_Path, "logs")
20 # 测试数据的Excel 20 # 测试数据的Excel
21 DataExcel_Path = os.path.join(Base_Path, "data") 21 DataExcel_Path = os.path.join(Base_Path, "data")
  22 +# --------------------------------------------
  23 +TeachingAffairs_path = os.path.join(DataExcel_Path, "teaching_affairs") # 教务系统管理列表
  24 +System_path = os.path.join(DataExcel_Path, "system") # 系统管理列表
  25 +Internship_path = os.path.join(DataExcel_Path, "Internship_preparation") # 实习准备目录
  26 +# --------------------------------------------
22 # 配置文件的路径 27 # 配置文件的路径
23 Config_Path = os.path.join(Base_Path, "conf") 28 Config_Path = os.path.join(Base_Path, "conf")
@@ -49,8 +49,7 @@ tester = 石头 @@ -49,8 +49,7 @@ tester = 石头
49 ;报告描述 49 ;报告描述
50 desc = 优学乐业测试报告 50 desc = 优学乐业测试报告
51 ;报告样式 51 ;报告样式
52 -templates = 2  
53 - 52 +templates = 1
54 53
55 54
56 55
1 -[{"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "12.67 S", "begin_time": "2022-12-19 17:56:09", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.87 S", "begin_time": "2022-12-19 17:58:06", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.24 S", "begin_time": "2022-12-19 18:17:28", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.45 S", "begin_time": "2022-12-19 18:19:47", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.72 S", "begin_time": "2022-12-19 19:32:22", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "103.32 S", "begin_time": "2022-12-19 20:35:55", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.95 S", "begin_time": "2022-12-20 12:06:06", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.92 S", "begin_time": "2022-12-20 21:34:11", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.77 S", "begin_time": "2022-12-20 21:35:13", "pass_rate": "37.50"}, {"success": 8, "all": 25, "fail": 12, "skip": 0, "error": 5, "runtime": "14.41 S", "begin_time": "2022-12-21 22:40:23", "pass_rate": "32.00"}, {"success": 8, "all": 25, "fail": 12, "skip": 0, "error": 5, "runtime": "14.73 S", "begin_time": "2022-12-21 22:52:34", "pass_rate": "32.00"}, {"success": 9, "all": 25, "fail": 12, "skip": 0, "error": 4, "runtime": "14.49 S", "begin_time": "2022-12-21 22:55:57", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 12, "skip": 0, "error": 4, "runtime": "14.04 S", "begin_time": "2022-12-21 22:57:36", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.09 S", "begin_time": "2022-12-21 23:02:18", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.30 S", "begin_time": "2022-12-21 23:10:55", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.19 S", "begin_time": "2022-12-22 00:05:50", "pass_rate": "36.00"}, {"success": 5, "all": 25, "fail": 16, "skip": 0, "error": 4, "runtime": "13.92 S", "begin_time": "2022-12-22 00:26:21", "pass_rate": "20.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "15.25 S", "begin_time": "2022-12-22 00:32:39", "pass_rate": "36.00"}, {"success": 0, "all": 8, "fail": 0, "skip": 0, "error": 8, "runtime": "0.71 S", "begin_time": "2022-12-22 00:47:52", "pass_rate": "0.00"}, {"success": 8, "all": 25, "fail": 17, "skip": 0, "error": 0, "runtime": "12.65 S", "begin_time": "2022-12-22 00:54:19", "pass_rate": "32.00"}, {"success": 4, "all": 15, "fail": 11, "skip": 0, "error": 0, "runtime": "10.52 S", "begin_time": "2022-12-22 15:54:09", "pass_rate": "26.67"}, {"success": 4, "all": 15, "fail": 11, "skip": 0, "error": 0, "runtime": "10.60 S", "begin_time": "2022-12-22 15:59:15", "pass_rate": "26.67"}, {"success": 7, "all": 26, "fail": 9, "skip": 0, "error": 10, "runtime": "13.48 S", "begin_time": "2022-12-22 23:03:40", "pass_rate": "26.92"}, {"success": 6, "all": 16, "fail": 10, "skip": 0, "error": 0, "runtime": "11.90 S", "begin_time": "2022-12-22 23:08:12", "pass_rate": "37.50"}, {"success": 10, "all": 26, "fail": 16, "skip": 0, "error": 0, "runtime": "15.15 S", "begin_time": "2022-12-22 23:09:09", "pass_rate": "38.46"}, {"success": 11, "all": 26, "fail": 15, "skip": 0, "error": 0, "runtime": "17.06 S", "begin_time": "2022-12-23 11:04:53", "pass_rate": "42.31"}, {"success": 15, "all": 26, "fail": 11, "skip": 0, "error": 0, "runtime": "16.82 S", "begin_time": "2022-12-23 11:10:29", "pass_rate": "57.69"}, {"success": 14, "all": 31, "fail": 14, "skip": 0, "error": 3, "runtime": "16.68 S", "begin_time": "2022-12-23 11:24:23", "pass_rate": "45.16"}, {"success": 14, "all": 31, "fail": 14, "skip": 0, "error": 3, "runtime": "15.31 S", "begin_time": "2022-12-23 11:50:26", "pass_rate": "45.16"}, {"success": 14, "all": 31, "fail": 17, "skip": 0, "error": 0, "runtime": "19.41 S", "begin_time": "2022-12-23 11:53:02", "pass_rate": "45.16"}, {"success": 19, "all": 32, "fail": 13, "skip": 0, "error": 0, "runtime": "18.26 S", "begin_time": "2022-12-23 13:56:17", "pass_rate": "59.38"}, {"success": 21, "all": 32, "fail": 11, "skip": 0, "error": 0, "runtime": "19.63 S", "begin_time": "2022-12-23 14:54:12", "pass_rate": "65.62"}, {"success": 25, "all": 32, "fail": 7, "skip": 0, "error": 0, "runtime": "18.92 S", "begin_time": "2022-12-23 15:00:04", "pass_rate": "78.12"}, {"success": 26, "all": 32, "fail": 6, "skip": 0, "error": 0, "runtime": "18.33 S", "begin_time": "2022-12-23 15:01:19", "pass_rate": "81.25"}, {"success": 7, "all": 16, "fail": 0, "skip": 0, "error": 9, "runtime": "4.59 S", "begin_time": "2022-12-23 15:03:33", "pass_rate": "43.75"}, {"success": 4, "all": 9, "fail": 1, "skip": 0, "error": 4, "runtime": "2.53 S", "begin_time": "2022-12-23 15:04:12", "pass_rate": "44.44"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "19.26 S", "begin_time": "2022-12-23 15:06:22", "pass_rate": "84.38"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "18.92 S", "begin_time": "2022-12-23 15:07:58", "pass_rate": "84.38"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "18.01 S", "begin_time": "2022-12-23 15:10:26", "pass_rate": "84.38"}, {"success": 28, "all": 32, "fail": 4, "skip": 0, "error": 0, "runtime": "19.33 S", "begin_time": "2022-12-23 15:31:35", "pass_rate": "87.50"}, {"success": 28, "all": 32, "fail": 4, "skip": 0, "error": 0, "runtime": "18.24 S", "begin_time": "2022-12-23 15:36:47", "pass_rate": "87.50"}, {"success": 29, "all": 32, "fail": 3, "skip": 0, "error": 0, "runtime": "21.94 S", "begin_time": "2022-12-23 16:20:37", "pass_rate": "90.62"}, {"success": 29, "all": 32, "fail": 3, "skip": 0, "error": 0, "runtime": "20.53 S", "begin_time": "2022-12-23 16:21:09", "pass_rate": "90.62"}, {"success": 31, "all": 32, "fail": 1, "skip": 0, "error": 0, "runtime": "19.00 S", "begin_time": "2022-12-23 16:25:20", "pass_rate": "96.88"}, {"success": 32, "all": 32, "fail": 0, "skip": 0, "error": 0, "runtime": "18.70 S", "begin_time": "2022-12-23 16:26:19", "pass_rate": "100.00"}, {"success": 32, "all": 32, "fail": 0, "skip": 0, "error": 0, "runtime": "18.82 S", "begin_time": "2022-12-23 16:43:23", "pass_rate": "100.00"}, {"success": 30, "all": 31, "fail": 0, "skip": 0, "error": 1, "runtime": "53.09 S", "begin_time": "2022-12-23 19:05:51", "pass_rate": "96.77"}, {"success": 31, "all": 31, "fail": 0, "skip": 0, "error": 0, "runtime": "18.21 S", "begin_time": "2022-12-23 19:09:09", "pass_rate": "100.00"}, {"success": 30, "all": 31, "fail": 1, "skip": 0, "error": 0, "runtime": "15.82 S", "begin_time": "2022-12-23 19:09:46", "pass_rate": "96.77"}, {"success": 3, "all": 3, "fail": 0, "skip": 0, "error": 0, "runtime": "1.54 S", "begin_time": "2022-12-24 17:34:33", "pass_rate": "100.00"}, {"success": 3, "all": 3, "fail": 0, "skip": 0, "error": 0, "runtime": "2.35 S", "begin_time": "2022-12-24 17:36:32", "pass_rate": "100.00"}, {"success": 5, "all": 5, "fail": 0, "skip": 0, "error": 0, "runtime": "8.45 S", "begin_time": "2022-12-24 20:26:29", "pass_rate": "100.00"}, {"success": 32, "all": 33, "fail": 1, "skip": 0, "error": 0, "runtime": "24.90 S", "begin_time": "2022-12-24 20:29:36", "pass_rate": "96.97"}, {"success": 33, "all": 33, "fail": 0, "skip": 0, "error": 0, "runtime": "24.88 S", "begin_time": "2022-12-24 20:30:36", "pass_rate": "100.00"}, {"success": 33, "all": 33, "fail": 0, "skip": 0, "error": 0, "runtime": "23.42 S", "begin_time": "2022-12-27 10:13:10", "pass_rate": "100.00"}, {"success": 1, "all": 1, "fail": 0, "skip": 0, "error": 0, "runtime": "3.69 S", "begin_time": "2022-12-27 11:04:21", "pass_rate": "100.00"}, {"success": 1, "all": 15, "fail": 0, "skip": 0, "error": 14, "runtime": "6.81 S", "begin_time": "2022-12-27 11:24:50", "pass_rate": "6.67"}, {"success": 7, "all": 15, "fail": 4, "skip": 0, "error": 4, "runtime": "6.84 S", "begin_time": "2022-12-27 11:29:52", "pass_rate": "46.67"}, {"success": 8, "all": 15, "fail": 5, "skip": 0, "error": 2, "runtime": "7.09 S", "begin_time": "2022-12-27 11:30:59", "pass_rate": "53.33"}, {"success": 9, "all": 15, "fail": 5, "skip": 0, "error": 1, "runtime": "7.83 S", "begin_time": "2022-12-27 11:35:03", "pass_rate": "60.00"}, {"success": 10, "all": 15, "fail": 5, "skip": 0, "error": 0, "runtime": "7.92 S", "begin_time": "2022-12-27 11:36:43", "pass_rate": "66.67"}, {"success": 10, "all": 15, "fail": 5, "skip": 0, "error": 0, "runtime": "7.43 S", "begin_time": "2022-12-27 11:38:30", "pass_rate": "66.67"}, {"success": 15, "all": 20, "fail": 5, "skip": 0, "error": 0, "runtime": "17.49 S", "begin_time": "2022-12-27 13:13:59", "pass_rate": "75.00"}, {"success": 15, "all": 20, "fail": 5, "skip": 0, "error": 0, "runtime": "18.16 S", "begin_time": "2022-12-27 13:14:25", "pass_rate": "75.00"}, {"success": 48, "all": 77, "fail": 10, "skip": 0, "error": 19, "runtime": "164.06 S", "begin_time": "2022-12-27 14:17:07", "pass_rate": "62.34"}, {"success": 48, "all": 77, "fail": 10, "skip": 0, "error": 19, "runtime": "34.83 S", "begin_time": "2022-12-27 14:27:15", "pass_rate": "62.34"}, {"success": 16, "all": 45, "fail": 8, "skip": 0, "error": 21, "runtime": "16.68 S", "begin_time": "2022-12-27 14:37:20", "pass_rate": "35.56"}, {"success": 4, "all": 14, "fail": 3, "skip": 0, "error": 7, "runtime": "4.64 S", "begin_time": "2022-12-27 14:38:18", "pass_rate": "28.57"}, {"success": 4, "all": 14, "fail": 3, "skip": 0, "error": 7, "runtime": "4.41 S", "begin_time": "2022-12-27 14:38:36", "pass_rate": "28.57"}, {"success": 5, "all": 14, "fail": 3, "skip": 0, "error": 6, "runtime": "4.97 S", "begin_time": "2022-12-27 14:40:10", "pass_rate": "35.71"}, {"success": 5, "all": 14, "fail": 4, "skip": 0, "error": 5, "runtime": "5.20 S", "begin_time": "2022-12-27 14:41:31", "pass_rate": "35.71"}, {"success": 5, "all": 14, "fail": 9, "skip": 0, "error": 0, "runtime": "6.57 S", "begin_time": "2022-12-27 14:43:50", "pass_rate": "35.71"}, {"success": 20, "all": 45, "fail": 13, "skip": 0, "error": 12, "runtime": "19.22 S", "begin_time": "2022-12-27 14:45:55", "pass_rate": "44.44"}, {"success": 1, "all": 13, "fail": 1, "skip": 0, "error": 11, "runtime": "3.10 S", "begin_time": "2022-12-27 14:48:00", "pass_rate": "7.69"}, {"success": 1, "all": 13, "fail": 1, "skip": 0, "error": 11, "runtime": "3.07 S", "begin_time": "2022-12-27 14:48:31", "pass_rate": "7.69"}, {"success": 2, "all": 13, "fail": 11, "skip": 0, "error": 0, "runtime": "6.09 S", "begin_time": "2022-12-27 14:49:43", "pass_rate": "15.38"}, {"success": 21, "all": 45, "fail": 24, "skip": 0, "error": 0, "runtime": "25.36 S", "begin_time": "2022-12-27 14:51:21", "pass_rate": "46.67"}, {"success": 51, "all": 77, "fail": 26, "skip": 0, "error": 0, "runtime": "39.21 S", "begin_time": "2022-12-27 14:52:13", "pass_rate": "66.23"}, {"success": 50, "all": 77, "fail": 26, "skip": 0, "error": 1, "runtime": "38.96 S", "begin_time": "2022-12-27 15:07:27", "pass_rate": "64.94"}, {"success": 51, "all": 77, "fail": 26, "skip": 0, "error": 0, "runtime": "79.21 S", "begin_time": "2022-12-27 15:10:37", "pass_rate": "66.23"}, {"success": 53, "all": 77, "fail": 24, "skip": 0, "error": 0, "runtime": "76.66 S", "begin_time": "2022-12-27 15:15:12", "pass_rate": "68.83"}, {"success": 54, "all": 77, "fail": 23, "skip": 0, "error": 0, "runtime": "61.72 S", "begin_time": "2022-12-27 15:17:59", "pass_rate": "70.13"}, {"success": 53, "all": 77, "fail": 23, "skip": 0, "error": 1, "runtime": "39.40 S", "begin_time": "2022-12-27 15:38:19", "pass_rate": "68.83"}, {"success": 34, "all": 77, "fail": 42, "skip": 0, "error": 1, "runtime": "38.39 S", "begin_time": "2022-12-27 18:24:36", "pass_rate": "44.16"}, {"success": 35, "all": 77, "fail": 39, "skip": 0, "error": 3, "runtime": "36.32 S", "begin_time": "2022-12-27 18:30:32", "pass_rate": "45.45"}, {"success": 35, "all": 77, "fail": 42, "skip": 0, "error": 0, "runtime": "73.32 S", "begin_time": "2022-12-27 18:32:59", "pass_rate": "45.45"}, {"success": 63, "all": 77, "fail": 14, "skip": 0, "error": 0, "runtime": "66.47 S", "begin_time": "2022-12-28 09:43:06", "pass_rate": "81.82"}, {"success": 67, "all": 77, "fail": 10, "skip": 0, "error": 0, "runtime": "51.57 S", "begin_time": "2022-12-28 09:53:52", "pass_rate": "87.01"}, {"success": 4, "all": 5, "fail": 1, "skip": 0, "error": 0, "runtime": "7.77 S", "begin_time": "2022-12-28 10:21:49", "pass_rate": "80.00"}, {"success": 68, "all": 77, "fail": 9, "skip": 0, "error": 0, "runtime": "57.32 S", "begin_time": "2022-12-28 10:23:02", "pass_rate": "88.31"}, {"success": 0, "all": 5, "fail": 5, "skip": 0, "error": 0, "runtime": "8.49 S", "begin_time": "2022-12-28 11:00:34", "pass_rate": "0.00"}, {"success": 71, "all": 77, "fail": 6, "skip": 0, "error": 0, "runtime": "54.60 S", "begin_time": "2022-12-28 11:01:43", "pass_rate": "92.21"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "47.77 S", "begin_time": "2022-12-28 11:05:20", "pass_rate": "97.40"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "49.33 S", "begin_time": "2022-12-28 11:40:16", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "40.79 S", "begin_time": "2022-12-28 15:13:17", "pass_rate": "98.70"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.11 S", "begin_time": "2022-12-28 15:18:51", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "40.24 S", "begin_time": "2022-12-28 15:21:34", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "40.87 S", "begin_time": "2022-12-28 15:23:06", "pass_rate": "98.70"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.54 S", "begin_time": "2022-12-28 15:24:48", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.31 S", "begin_time": "2022-12-28 15:28:12", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.92 S", "begin_time": "2022-12-28 15:33:51", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.46 S", "begin_time": "2022-12-28 15:35:37", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.98 S", "begin_time": "2022-12-28 15:39:15", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.36 S", "begin_time": "2022-12-28 15:40:57", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.38 S", "begin_time": "2022-12-28 15:42:55", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.45 S", "begin_time": "2022-12-28 15:44:25", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.97 S", "begin_time": "2022-12-28 15:46:12", "pass_rate": "97.40"}, {"success": 73, "all": 77, "fail": 4, "skip": 0, "error": 0, "runtime": "42.81 S", "begin_time": "2022-12-28 15:47:07", "pass_rate": "94.81"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.53 S", "begin_time": "2022-12-28 15:50:11", "pass_rate": "100.00"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "43.91 S", "begin_time": "2022-12-28 16:12:34", "pass_rate": "96.10"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "42.36 S", "begin_time": "2022-12-28 16:13:35", "pass_rate": "96.10"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "42.94 S", "begin_time": "2022-12-28 16:14:59", "pass_rate": "96.10"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "46.91 S", "begin_time": "2022-12-28 16:25:35", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "40.87 S", "begin_time": "2022-12-28 16:33:19", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.74 S", "begin_time": "2022-12-28 16:39:59", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "47.71 S", "begin_time": "2022-12-28 16:41:45", "pass_rate": "100.00"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.14 S", "begin_time": "2022-12-28 16:46:12", "pass_rate": "97.40"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.60 S", "begin_time": "2022-12-28 17:10:55", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "44.19 S", "begin_time": "2022-12-28 17:37:41", "pass_rate": "98.70"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "42.35 S", "begin_time": "2022-12-28 17:38:44", "pass_rate": "100.00"}, {"success": 19, "all": 19, "fail": 0, "skip": 0, "error": 0, "runtime": "14.00 S", "begin_time": "2022-12-28 21:58:24", "pass_rate": "100.00"}, {"success": 11, "all": 11, "fail": 0, "skip": 0, "error": 0, "runtime": "11.19 S", "begin_time": "2022-12-28 22:00:20", "pass_rate": "100.00"}, {"success": 23, "all": 23, "fail": 0, "skip": 0, "error": 0, "runtime": "10.85 S", "begin_time": "2022-12-28 22:02:52", "pass_rate": "100.00"}, {"success": 15, "all": 15, "fail": 0, "skip": 0, "error": 0, "runtime": "7.90 S", "begin_time": "2022-12-28 22:05:34", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.16 S", "begin_time": "2022-12-29 10:31:09", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.76 S", "begin_time": "2022-12-29 11:06:47", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "43.37 S", "begin_time": "2022-12-29 11:36:25", "pass_rate": "100.00"}, {"success": 0, "all": 0, "fail": 0, "skip": 0, "error": 0, "runtime": "1.41 S", "begin_time": "2022-12-29 13:47:58", "pass_rate": 0}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.94 S", "begin_time": "2022-12-29 13:48:47", "pass_rate": "0.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.94 S", "begin_time": "2022-12-29 13:49:44", "pass_rate": "0.00"}, {"success": 8, "all": 10, "fail": 2, "skip": 0, "error": 0, "runtime": "4.75 S", "begin_time": "2022-12-29 13:51:43", "pass_rate": "80.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "4.52 S", "begin_time": "2022-12-29 13:53:28", "pass_rate": "90.00"}, {"success": 5, "all": 5, "fail": 0, "skip": 0, "error": 0, "runtime": "1.63 S", "begin_time": "2022-12-29 13:58:16", "pass_rate": "100.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "1.02 S", "begin_time": "2022-12-29 14:03:56", "pass_rate": "0.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "4.69 S", "begin_time": "2022-12-29 14:06:30", "pass_rate": "90.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.01 S", "begin_time": "2022-12-29 14:11:02", "pass_rate": "0.00"}, {"success": 8, "all": 10, "fail": 1, "skip": 0, "error": 1, "runtime": "4.29 S", "begin_time": "2022-12-29 14:11:56", "pass_rate": "80.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.62 S", "begin_time": "2022-12-29 14:13:24", "pass_rate": "90.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.26 S", "begin_time": "2022-12-29 14:15:09", "pass_rate": "90.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.22 S", "begin_time": "2022-12-29 14:19:08", "pass_rate": "90.00"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.59 S", "begin_time": "2022-12-29 14:20:20", "pass_rate": "98.81"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.76 S", "begin_time": "2022-12-29 14:35:17", "pass_rate": "98.81"}, {"success": 81, "all": 84, "fail": 3, "skip": 0, "error": 0, "runtime": "47.89 S", "begin_time": "2022-12-29 15:32:18", "pass_rate": "96.43"}, {"success": 82, "all": 84, "fail": 2, "skip": 0, "error": 0, "runtime": "50.49 S", "begin_time": "2022-12-29 17:06:12", "pass_rate": "97.62"}]  
  1 +[{"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "12.67 S", "begin_time": "2022-12-19 17:56:09", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.87 S", "begin_time": "2022-12-19 17:58:06", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.24 S", "begin_time": "2022-12-19 18:17:28", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.45 S", "begin_time": "2022-12-19 18:19:47", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "7.72 S", "begin_time": "2022-12-19 19:32:22", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "103.32 S", "begin_time": "2022-12-19 20:35:55", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.95 S", "begin_time": "2022-12-20 12:06:06", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.92 S", "begin_time": "2022-12-20 21:34:11", "pass_rate": "37.50"}, {"success": 9, "all": 24, "fail": 15, "skip": 0, "error": 0, "runtime": "6.77 S", "begin_time": "2022-12-20 21:35:13", "pass_rate": "37.50"}, {"success": 8, "all": 25, "fail": 12, "skip": 0, "error": 5, "runtime": "14.41 S", "begin_time": "2022-12-21 22:40:23", "pass_rate": "32.00"}, {"success": 8, "all": 25, "fail": 12, "skip": 0, "error": 5, "runtime": "14.73 S", "begin_time": "2022-12-21 22:52:34", "pass_rate": "32.00"}, {"success": 9, "all": 25, "fail": 12, "skip": 0, "error": 4, "runtime": "14.49 S", "begin_time": "2022-12-21 22:55:57", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 12, "skip": 0, "error": 4, "runtime": "14.04 S", "begin_time": "2022-12-21 22:57:36", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.09 S", "begin_time": "2022-12-21 23:02:18", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.30 S", "begin_time": "2022-12-21 23:10:55", "pass_rate": "36.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "14.19 S", "begin_time": "2022-12-22 00:05:50", "pass_rate": "36.00"}, {"success": 5, "all": 25, "fail": 16, "skip": 0, "error": 4, "runtime": "13.92 S", "begin_time": "2022-12-22 00:26:21", "pass_rate": "20.00"}, {"success": 9, "all": 25, "fail": 16, "skip": 0, "error": 0, "runtime": "15.25 S", "begin_time": "2022-12-22 00:32:39", "pass_rate": "36.00"}, {"success": 0, "all": 8, "fail": 0, "skip": 0, "error": 8, "runtime": "0.71 S", "begin_time": "2022-12-22 00:47:52", "pass_rate": "0.00"}, {"success": 8, "all": 25, "fail": 17, "skip": 0, "error": 0, "runtime": "12.65 S", "begin_time": "2022-12-22 00:54:19", "pass_rate": "32.00"}, {"success": 4, "all": 15, "fail": 11, "skip": 0, "error": 0, "runtime": "10.52 S", "begin_time": "2022-12-22 15:54:09", "pass_rate": "26.67"}, {"success": 4, "all": 15, "fail": 11, "skip": 0, "error": 0, "runtime": "10.60 S", "begin_time": "2022-12-22 15:59:15", "pass_rate": "26.67"}, {"success": 7, "all": 26, "fail": 9, "skip": 0, "error": 10, "runtime": "13.48 S", "begin_time": "2022-12-22 23:03:40", "pass_rate": "26.92"}, {"success": 6, "all": 16, "fail": 10, "skip": 0, "error": 0, "runtime": "11.90 S", "begin_time": "2022-12-22 23:08:12", "pass_rate": "37.50"}, {"success": 10, "all": 26, "fail": 16, "skip": 0, "error": 0, "runtime": "15.15 S", "begin_time": "2022-12-22 23:09:09", "pass_rate": "38.46"}, {"success": 11, "all": 26, "fail": 15, "skip": 0, "error": 0, "runtime": "17.06 S", "begin_time": "2022-12-23 11:04:53", "pass_rate": "42.31"}, {"success": 15, "all": 26, "fail": 11, "skip": 0, "error": 0, "runtime": "16.82 S", "begin_time": "2022-12-23 11:10:29", "pass_rate": "57.69"}, {"success": 14, "all": 31, "fail": 14, "skip": 0, "error": 3, "runtime": "16.68 S", "begin_time": "2022-12-23 11:24:23", "pass_rate": "45.16"}, {"success": 14, "all": 31, "fail": 14, "skip": 0, "error": 3, "runtime": "15.31 S", "begin_time": "2022-12-23 11:50:26", "pass_rate": "45.16"}, {"success": 14, "all": 31, "fail": 17, "skip": 0, "error": 0, "runtime": "19.41 S", "begin_time": "2022-12-23 11:53:02", "pass_rate": "45.16"}, {"success": 19, "all": 32, "fail": 13, "skip": 0, "error": 0, "runtime": "18.26 S", "begin_time": "2022-12-23 13:56:17", "pass_rate": "59.38"}, {"success": 21, "all": 32, "fail": 11, "skip": 0, "error": 0, "runtime": "19.63 S", "begin_time": "2022-12-23 14:54:12", "pass_rate": "65.62"}, {"success": 25, "all": 32, "fail": 7, "skip": 0, "error": 0, "runtime": "18.92 S", "begin_time": "2022-12-23 15:00:04", "pass_rate": "78.12"}, {"success": 26, "all": 32, "fail": 6, "skip": 0, "error": 0, "runtime": "18.33 S", "begin_time": "2022-12-23 15:01:19", "pass_rate": "81.25"}, {"success": 7, "all": 16, "fail": 0, "skip": 0, "error": 9, "runtime": "4.59 S", "begin_time": "2022-12-23 15:03:33", "pass_rate": "43.75"}, {"success": 4, "all": 9, "fail": 1, "skip": 0, "error": 4, "runtime": "2.53 S", "begin_time": "2022-12-23 15:04:12", "pass_rate": "44.44"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "19.26 S", "begin_time": "2022-12-23 15:06:22", "pass_rate": "84.38"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "18.92 S", "begin_time": "2022-12-23 15:07:58", "pass_rate": "84.38"}, {"success": 27, "all": 32, "fail": 5, "skip": 0, "error": 0, "runtime": "18.01 S", "begin_time": "2022-12-23 15:10:26", "pass_rate": "84.38"}, {"success": 28, "all": 32, "fail": 4, "skip": 0, "error": 0, "runtime": "19.33 S", "begin_time": "2022-12-23 15:31:35", "pass_rate": "87.50"}, {"success": 28, "all": 32, "fail": 4, "skip": 0, "error": 0, "runtime": "18.24 S", "begin_time": "2022-12-23 15:36:47", "pass_rate": "87.50"}, {"success": 29, "all": 32, "fail": 3, "skip": 0, "error": 0, "runtime": "21.94 S", "begin_time": "2022-12-23 16:20:37", "pass_rate": "90.62"}, {"success": 29, "all": 32, "fail": 3, "skip": 0, "error": 0, "runtime": "20.53 S", "begin_time": "2022-12-23 16:21:09", "pass_rate": "90.62"}, {"success": 31, "all": 32, "fail": 1, "skip": 0, "error": 0, "runtime": "19.00 S", "begin_time": "2022-12-23 16:25:20", "pass_rate": "96.88"}, {"success": 32, "all": 32, "fail": 0, "skip": 0, "error": 0, "runtime": "18.70 S", "begin_time": "2022-12-23 16:26:19", "pass_rate": "100.00"}, {"success": 32, "all": 32, "fail": 0, "skip": 0, "error": 0, "runtime": "18.82 S", "begin_time": "2022-12-23 16:43:23", "pass_rate": "100.00"}, {"success": 30, "all": 31, "fail": 0, "skip": 0, "error": 1, "runtime": "53.09 S", "begin_time": "2022-12-23 19:05:51", "pass_rate": "96.77"}, {"success": 31, "all": 31, "fail": 0, "skip": 0, "error": 0, "runtime": "18.21 S", "begin_time": "2022-12-23 19:09:09", "pass_rate": "100.00"}, {"success": 30, "all": 31, "fail": 1, "skip": 0, "error": 0, "runtime": "15.82 S", "begin_time": "2022-12-23 19:09:46", "pass_rate": "96.77"}, {"success": 3, "all": 3, "fail": 0, "skip": 0, "error": 0, "runtime": "1.54 S", "begin_time": "2022-12-24 17:34:33", "pass_rate": "100.00"}, {"success": 3, "all": 3, "fail": 0, "skip": 0, "error": 0, "runtime": "2.35 S", "begin_time": "2022-12-24 17:36:32", "pass_rate": "100.00"}, {"success": 5, "all": 5, "fail": 0, "skip": 0, "error": 0, "runtime": "8.45 S", "begin_time": "2022-12-24 20:26:29", "pass_rate": "100.00"}, {"success": 32, "all": 33, "fail": 1, "skip": 0, "error": 0, "runtime": "24.90 S", "begin_time": "2022-12-24 20:29:36", "pass_rate": "96.97"}, {"success": 33, "all": 33, "fail": 0, "skip": 0, "error": 0, "runtime": "24.88 S", "begin_time": "2022-12-24 20:30:36", "pass_rate": "100.00"}, {"success": 33, "all": 33, "fail": 0, "skip": 0, "error": 0, "runtime": "23.42 S", "begin_time": "2022-12-27 10:13:10", "pass_rate": "100.00"}, {"success": 1, "all": 1, "fail": 0, "skip": 0, "error": 0, "runtime": "3.69 S", "begin_time": "2022-12-27 11:04:21", "pass_rate": "100.00"}, {"success": 1, "all": 15, "fail": 0, "skip": 0, "error": 14, "runtime": "6.81 S", "begin_time": "2022-12-27 11:24:50", "pass_rate": "6.67"}, {"success": 7, "all": 15, "fail": 4, "skip": 0, "error": 4, "runtime": "6.84 S", "begin_time": "2022-12-27 11:29:52", "pass_rate": "46.67"}, {"success": 8, "all": 15, "fail": 5, "skip": 0, "error": 2, "runtime": "7.09 S", "begin_time": "2022-12-27 11:30:59", "pass_rate": "53.33"}, {"success": 9, "all": 15, "fail": 5, "skip": 0, "error": 1, "runtime": "7.83 S", "begin_time": "2022-12-27 11:35:03", "pass_rate": "60.00"}, {"success": 10, "all": 15, "fail": 5, "skip": 0, "error": 0, "runtime": "7.92 S", "begin_time": "2022-12-27 11:36:43", "pass_rate": "66.67"}, {"success": 10, "all": 15, "fail": 5, "skip": 0, "error": 0, "runtime": "7.43 S", "begin_time": "2022-12-27 11:38:30", "pass_rate": "66.67"}, {"success": 15, "all": 20, "fail": 5, "skip": 0, "error": 0, "runtime": "17.49 S", "begin_time": "2022-12-27 13:13:59", "pass_rate": "75.00"}, {"success": 15, "all": 20, "fail": 5, "skip": 0, "error": 0, "runtime": "18.16 S", "begin_time": "2022-12-27 13:14:25", "pass_rate": "75.00"}, {"success": 48, "all": 77, "fail": 10, "skip": 0, "error": 19, "runtime": "164.06 S", "begin_time": "2022-12-27 14:17:07", "pass_rate": "62.34"}, {"success": 48, "all": 77, "fail": 10, "skip": 0, "error": 19, "runtime": "34.83 S", "begin_time": "2022-12-27 14:27:15", "pass_rate": "62.34"}, {"success": 16, "all": 45, "fail": 8, "skip": 0, "error": 21, "runtime": "16.68 S", "begin_time": "2022-12-27 14:37:20", "pass_rate": "35.56"}, {"success": 4, "all": 14, "fail": 3, "skip": 0, "error": 7, "runtime": "4.64 S", "begin_time": "2022-12-27 14:38:18", "pass_rate": "28.57"}, {"success": 4, "all": 14, "fail": 3, "skip": 0, "error": 7, "runtime": "4.41 S", "begin_time": "2022-12-27 14:38:36", "pass_rate": "28.57"}, {"success": 5, "all": 14, "fail": 3, "skip": 0, "error": 6, "runtime": "4.97 S", "begin_time": "2022-12-27 14:40:10", "pass_rate": "35.71"}, {"success": 5, "all": 14, "fail": 4, "skip": 0, "error": 5, "runtime": "5.20 S", "begin_time": "2022-12-27 14:41:31", "pass_rate": "35.71"}, {"success": 5, "all": 14, "fail": 9, "skip": 0, "error": 0, "runtime": "6.57 S", "begin_time": "2022-12-27 14:43:50", "pass_rate": "35.71"}, {"success": 20, "all": 45, "fail": 13, "skip": 0, "error": 12, "runtime": "19.22 S", "begin_time": "2022-12-27 14:45:55", "pass_rate": "44.44"}, {"success": 1, "all": 13, "fail": 1, "skip": 0, "error": 11, "runtime": "3.10 S", "begin_time": "2022-12-27 14:48:00", "pass_rate": "7.69"}, {"success": 1, "all": 13, "fail": 1, "skip": 0, "error": 11, "runtime": "3.07 S", "begin_time": "2022-12-27 14:48:31", "pass_rate": "7.69"}, {"success": 2, "all": 13, "fail": 11, "skip": 0, "error": 0, "runtime": "6.09 S", "begin_time": "2022-12-27 14:49:43", "pass_rate": "15.38"}, {"success": 21, "all": 45, "fail": 24, "skip": 0, "error": 0, "runtime": "25.36 S", "begin_time": "2022-12-27 14:51:21", "pass_rate": "46.67"}, {"success": 51, "all": 77, "fail": 26, "skip": 0, "error": 0, "runtime": "39.21 S", "begin_time": "2022-12-27 14:52:13", "pass_rate": "66.23"}, {"success": 50, "all": 77, "fail": 26, "skip": 0, "error": 1, "runtime": "38.96 S", "begin_time": "2022-12-27 15:07:27", "pass_rate": "64.94"}, {"success": 51, "all": 77, "fail": 26, "skip": 0, "error": 0, "runtime": "79.21 S", "begin_time": "2022-12-27 15:10:37", "pass_rate": "66.23"}, {"success": 53, "all": 77, "fail": 24, "skip": 0, "error": 0, "runtime": "76.66 S", "begin_time": "2022-12-27 15:15:12", "pass_rate": "68.83"}, {"success": 54, "all": 77, "fail": 23, "skip": 0, "error": 0, "runtime": "61.72 S", "begin_time": "2022-12-27 15:17:59", "pass_rate": "70.13"}, {"success": 53, "all": 77, "fail": 23, "skip": 0, "error": 1, "runtime": "39.40 S", "begin_time": "2022-12-27 15:38:19", "pass_rate": "68.83"}, {"success": 34, "all": 77, "fail": 42, "skip": 0, "error": 1, "runtime": "38.39 S", "begin_time": "2022-12-27 18:24:36", "pass_rate": "44.16"}, {"success": 35, "all": 77, "fail": 39, "skip": 0, "error": 3, "runtime": "36.32 S", "begin_time": "2022-12-27 18:30:32", "pass_rate": "45.45"}, {"success": 35, "all": 77, "fail": 42, "skip": 0, "error": 0, "runtime": "73.32 S", "begin_time": "2022-12-27 18:32:59", "pass_rate": "45.45"}, {"success": 63, "all": 77, "fail": 14, "skip": 0, "error": 0, "runtime": "66.47 S", "begin_time": "2022-12-28 09:43:06", "pass_rate": "81.82"}, {"success": 67, "all": 77, "fail": 10, "skip": 0, "error": 0, "runtime": "51.57 S", "begin_time": "2022-12-28 09:53:52", "pass_rate": "87.01"}, {"success": 4, "all": 5, "fail": 1, "skip": 0, "error": 0, "runtime": "7.77 S", "begin_time": "2022-12-28 10:21:49", "pass_rate": "80.00"}, {"success": 68, "all": 77, "fail": 9, "skip": 0, "error": 0, "runtime": "57.32 S", "begin_time": "2022-12-28 10:23:02", "pass_rate": "88.31"}, {"success": 0, "all": 5, "fail": 5, "skip": 0, "error": 0, "runtime": "8.49 S", "begin_time": "2022-12-28 11:00:34", "pass_rate": "0.00"}, {"success": 71, "all": 77, "fail": 6, "skip": 0, "error": 0, "runtime": "54.60 S", "begin_time": "2022-12-28 11:01:43", "pass_rate": "92.21"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "47.77 S", "begin_time": "2022-12-28 11:05:20", "pass_rate": "97.40"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "49.33 S", "begin_time": "2022-12-28 11:40:16", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "40.79 S", "begin_time": "2022-12-28 15:13:17", "pass_rate": "98.70"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.11 S", "begin_time": "2022-12-28 15:18:51", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "40.24 S", "begin_time": "2022-12-28 15:21:34", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "40.87 S", "begin_time": "2022-12-28 15:23:06", "pass_rate": "98.70"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.54 S", "begin_time": "2022-12-28 15:24:48", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.31 S", "begin_time": "2022-12-28 15:28:12", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.92 S", "begin_time": "2022-12-28 15:33:51", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.46 S", "begin_time": "2022-12-28 15:35:37", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "42.98 S", "begin_time": "2022-12-28 15:39:15", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.36 S", "begin_time": "2022-12-28 15:40:57", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.38 S", "begin_time": "2022-12-28 15:42:55", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.45 S", "begin_time": "2022-12-28 15:44:25", "pass_rate": "97.40"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "40.97 S", "begin_time": "2022-12-28 15:46:12", "pass_rate": "97.40"}, {"success": 73, "all": 77, "fail": 4, "skip": 0, "error": 0, "runtime": "42.81 S", "begin_time": "2022-12-28 15:47:07", "pass_rate": "94.81"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.53 S", "begin_time": "2022-12-28 15:50:11", "pass_rate": "100.00"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "43.91 S", "begin_time": "2022-12-28 16:12:34", "pass_rate": "96.10"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "42.36 S", "begin_time": "2022-12-28 16:13:35", "pass_rate": "96.10"}, {"success": 74, "all": 77, "fail": 3, "skip": 0, "error": 0, "runtime": "42.94 S", "begin_time": "2022-12-28 16:14:59", "pass_rate": "96.10"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "46.91 S", "begin_time": "2022-12-28 16:25:35", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "40.87 S", "begin_time": "2022-12-28 16:33:19", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.74 S", "begin_time": "2022-12-28 16:39:59", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "47.71 S", "begin_time": "2022-12-28 16:41:45", "pass_rate": "100.00"}, {"success": 75, "all": 77, "fail": 2, "skip": 0, "error": 0, "runtime": "41.14 S", "begin_time": "2022-12-28 16:46:12", "pass_rate": "97.40"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "39.60 S", "begin_time": "2022-12-28 17:10:55", "pass_rate": "100.00"}, {"success": 76, "all": 77, "fail": 1, "skip": 0, "error": 0, "runtime": "44.19 S", "begin_time": "2022-12-28 17:37:41", "pass_rate": "98.70"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "42.35 S", "begin_time": "2022-12-28 17:38:44", "pass_rate": "100.00"}, {"success": 19, "all": 19, "fail": 0, "skip": 0, "error": 0, "runtime": "14.00 S", "begin_time": "2022-12-28 21:58:24", "pass_rate": "100.00"}, {"success": 11, "all": 11, "fail": 0, "skip": 0, "error": 0, "runtime": "11.19 S", "begin_time": "2022-12-28 22:00:20", "pass_rate": "100.00"}, {"success": 23, "all": 23, "fail": 0, "skip": 0, "error": 0, "runtime": "10.85 S", "begin_time": "2022-12-28 22:02:52", "pass_rate": "100.00"}, {"success": 15, "all": 15, "fail": 0, "skip": 0, "error": 0, "runtime": "7.90 S", "begin_time": "2022-12-28 22:05:34", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.16 S", "begin_time": "2022-12-29 10:31:09", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "41.76 S", "begin_time": "2022-12-29 11:06:47", "pass_rate": "100.00"}, {"success": 77, "all": 77, "fail": 0, "skip": 0, "error": 0, "runtime": "43.37 S", "begin_time": "2022-12-29 11:36:25", "pass_rate": "100.00"}, {"success": 0, "all": 0, "fail": 0, "skip": 0, "error": 0, "runtime": "1.41 S", "begin_time": "2022-12-29 13:47:58", "pass_rate": 0}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.94 S", "begin_time": "2022-12-29 13:48:47", "pass_rate": "0.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.94 S", "begin_time": "2022-12-29 13:49:44", "pass_rate": "0.00"}, {"success": 8, "all": 10, "fail": 2, "skip": 0, "error": 0, "runtime": "4.75 S", "begin_time": "2022-12-29 13:51:43", "pass_rate": "80.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "4.52 S", "begin_time": "2022-12-29 13:53:28", "pass_rate": "90.00"}, {"success": 5, "all": 5, "fail": 0, "skip": 0, "error": 0, "runtime": "1.63 S", "begin_time": "2022-12-29 13:58:16", "pass_rate": "100.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "1.02 S", "begin_time": "2022-12-29 14:03:56", "pass_rate": "0.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "4.69 S", "begin_time": "2022-12-29 14:06:30", "pass_rate": "90.00"}, {"success": 0, "all": 1, "fail": 0, "skip": 0, "error": 1, "runtime": "0.01 S", "begin_time": "2022-12-29 14:11:02", "pass_rate": "0.00"}, {"success": 8, "all": 10, "fail": 1, "skip": 0, "error": 1, "runtime": "4.29 S", "begin_time": "2022-12-29 14:11:56", "pass_rate": "80.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.62 S", "begin_time": "2022-12-29 14:13:24", "pass_rate": "90.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.26 S", "begin_time": "2022-12-29 14:15:09", "pass_rate": "90.00"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.22 S", "begin_time": "2022-12-29 14:19:08", "pass_rate": "90.00"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.59 S", "begin_time": "2022-12-29 14:20:20", "pass_rate": "98.81"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.76 S", "begin_time": "2022-12-29 14:35:17", "pass_rate": "98.81"}, {"success": 81, "all": 84, "fail": 3, "skip": 0, "error": 0, "runtime": "47.89 S", "begin_time": "2022-12-29 15:32:18", "pass_rate": "96.43"}, {"success": 82, "all": 84, "fail": 2, "skip": 0, "error": 0, "runtime": "50.49 S", "begin_time": "2022-12-29 17:06:12", "pass_rate": "97.62"}, {"success": 82, "all": 84, "fail": 2, "skip": 0, "error": 0, "runtime": "54.94 S", "begin_time": "2022-12-29 17:43:04", "pass_rate": "97.62"}, {"success": 9, "all": 10, "fail": 1, "skip": 0, "error": 0, "runtime": "6.58 S", "begin_time": "2022-12-29 17:51:39", "pass_rate": "90.00"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "48.80 S", "begin_time": "2022-12-29 17:52:42", "pass_rate": "98.81"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.63 S", "begin_time": "2022-12-29 17:54:56", "pass_rate": "98.81"}, {"success": 83, "all": 84, "fail": 1, "skip": 0, "error": 0, "runtime": "47.44 S", "begin_time": "2022-12-29 17:56:51", "pass_rate": "98.81"}, {"success": 90, "all": 91, "fail": 1, "skip": 0, "error": 0, "runtime": "50.78 S", "begin_time": "2022-12-29 18:06:22", "pass_rate": "98.90"}, {"success": 1, "all": 2, "fail": 1, "skip": 0, "error": 0, "runtime": "5.88 S", "begin_time": "2022-12-30 13:53:38", "pass_rate": "50.00"}, {"success": 1, "all": 2, "fail": 1, "skip": 0, "error": 0, "runtime": "5.85 S", "begin_time": "2022-12-30 13:53:54", "pass_rate": "50.00"}, {"success": 0, "all": 2, "fail": 0, "skip": 0, "error": 2, "runtime": "5.14 S", "begin_time": "2022-12-30 14:03:29", "pass_rate": "0.00"}, {"success": 1, "all": 2, "fail": 1, "skip": 0, "error": 0, "runtime": "6.51 S", "begin_time": "2022-12-30 14:05:52", "pass_rate": "50.00"}, {"success": 9, "all": 30, "fail": 14, "skip": 0, "error": 7, "runtime": "14.13 S", "begin_time": "2022-12-30 15:04:47", "pass_rate": "30.00"}, {"success": 9, "all": 30, "fail": 14, "skip": 0, "error": 7, "runtime": "13.47 S", "begin_time": "2022-12-30 15:10:08", "pass_rate": "30.00"}, {"success": 13, "all": 30, "fail": 10, "skip": 0, "error": 7, "runtime": "13.12 S", "begin_time": "2022-12-30 15:19:55", "pass_rate": "43.33"}, {"success": 13, "all": 30, "fail": 10, "skip": 0, "error": 7, "runtime": "13.59 S", "begin_time": "2022-12-30 15:23:43", "pass_rate": "43.33"}, {"success": 14, "all": 30, "fail": 16, "skip": 0, "error": 0, "runtime": "15.90 S", "begin_time": "2022-12-30 15:31:30", "pass_rate": "46.67"}, {"success": 4, "all": 30, "fail": 26, "skip": 0, "error": 0, "runtime": "13.36 S", "begin_time": "2022-12-30 15:53:15", "pass_rate": "13.33"}, {"success": 97, "all": 121, "fail": 24, "skip": 0, "error": 0, "runtime": "97.81 S", "begin_time": "2022-12-30 15:59:28", "pass_rate": "80.17"}, {"success": 9, "all": 30, "fail": 21, "skip": 0, "error": 0, "runtime": "19.76 S", "begin_time": "2022-12-30 16:21:24", "pass_rate": "30.00"}, {"success": 9, "all": 30, "fail": 21, "skip": 0, "error": 0, "runtime": "16.73 S", "begin_time": "2022-12-30 16:23:19", "pass_rate": "30.00"}, {"success": 9, "all": 30, "fail": 21, "skip": 0, "error": 0, "runtime": "12.78 S", "begin_time": "2022-12-30 16:25:42", "pass_rate": "30.00"}, {"success": 99, "all": 121, "fail": 22, "skip": 0, "error": 0, "runtime": "67.08 S", "begin_time": "2022-12-30 17:11:04", "pass_rate": "81.82"}, {"success": 9, "all": 30, "fail": 21, "skip": 0, "error": 0, "runtime": "12.29 S", "begin_time": "2022-12-30 17:21:00", "pass_rate": "30.00"}, {"success": 24, "all": 30, "fail": 6, "skip": 0, "error": 0, "runtime": "18.88 S", "begin_time": "2022-12-30 17:35:31", "pass_rate": "80.00"}, {"success": 27, "all": 30, "fail": 3, "skip": 0, "error": 0, "runtime": "15.16 S", "begin_time": "2022-12-30 17:39:14", "pass_rate": "90.00"}]
此 diff 太大无法显示。
@@ -12,26 +12,28 @@ from common.handle_config import conf @@ -12,26 +12,28 @@ from common.handle_config import conf
12 from testcase.test_01_login import TestLogin 12 from testcase.test_01_login import TestLogin
13 from testcase.test_02_system_management import Test01Department, Test02Specialty, Test03Year 13 from testcase.test_02_system_management import Test01Department, Test02Specialty, Test03Year
14 from testcase.test_03_teaching_affairs import Test01Teacher, Test02Class, Test03Course, Test04Student 14 from testcase.test_03_teaching_affairs import Test01Teacher, Test02Class, Test03Course, Test04Student
  15 +from testcase.test_04_Internship_preparation import Test01InternshipPlan
  16 +
15 17
16 18
17 """ 19 """
18 执行所有用例 20 执行所有用例
19 """ 21 """
20 -# 创建测试套件  
21 -suite = unittest.TestSuite()  
22 -# 加载用例  
23 -# ---创建加载器  
24 -load = unittest.TestLoader()  
25 -# ---用例放到加载器  
26 -suite.addTest(load.discover(TestCase_Path)) 22 +# # 创建测试套件
  23 +# suite = unittest.TestSuite()
  24 +# # 加载用例
  25 +# # ---创建加载器
  26 +# load = unittest.TestLoader()
  27 +# # ---用例放到加载器
  28 +# suite.addTest(load.discover(TestCase_Path))
27 """ 29 """
28 执行单独模块用例 30 执行单独模块用例
29 """ 31 """
30 -# a = unittest.TestLoader().loadTestsFromTestCase(Test01Teacher)  
31 -# # b = unittest.TestLoader().loadTestsFromTestCase(Test03Year)  
32 -# suite = unittest.TestSuite([a]) 32 +a = unittest.TestLoader().loadTestsFromTestCase(Test01InternshipPlan)
  33 +# b = unittest.TestLoader().loadTestsFromTestCase(Test03Year)
  34 +suite = unittest.TestSuite([a])
33 35
34 -# 运行 36 +# # 运行
35 runner = TestRunner(suite=suite, 37 runner = TestRunner(suite=suite,
36 filename=conf.get("report", "filename"), 38 filename=conf.get("report", "filename"),
37 report_dir=Report_Path, 39 report_dir=Report_Path,
@@ -40,9 +42,9 @@ runner = TestRunner(suite=suite, @@ -40,9 +42,9 @@ runner = TestRunner(suite=suite,
40 desc=conf.get("report", "desc"), 42 desc=conf.get("report", "desc"),
41 templates=conf.getint("report", "templates") 43 templates=conf.getint("report", "templates")
42 ) 44 )
43 -# runner.run() 45 +runner.run()
44 # 执行失败重新运行机制 46 # 执行失败重新运行机制
45 -runner.rerun_run(count=3, interval=0.2) 47 +# runner.rerun_run(count=3, interval=0.2)
46 48
47 """ 49 """
48 发送钉钉 50 发送钉钉
@@ -16,15 +16,12 @@ import time @@ -16,15 +16,12 @@ import time
16 from common import myddt 16 from common import myddt
17 from common.handle_excel import Excel 17 from common.handle_excel import Excel
18 from common.handle_log import HandleLog 18 from common.handle_log import HandleLog
19 -from common.handle_path import DataExcel_Path 19 +from common.handle_path import DataExcel_Path, System_path
20 from common.handle_config import conf 20 from common.handle_config import conf
21 from tools.handle_token import LoginToken 21 from tools.handle_token import LoginToken
22 from tools.fixture import SelectData 22 from tools.fixture import SelectData
23 from jsonpath import jsonpath 23 from jsonpath import jsonpath
24 24
25 -# 系统管理相关的用例目录  
26 -System_path = os.path.join(DataExcel_Path, "system")  
27 -  
28 25
29 # ==================院系相关的用例================== 26 # ==================院系相关的用例==================
30 @myddt.ddt 27 @myddt.ddt
@@ -15,7 +15,7 @@ import os @@ -15,7 +15,7 @@ import os
15 import requests 15 import requests
16 from jsonpath import jsonpath 16 from jsonpath import jsonpath
17 from common.handle_log import HandleLog 17 from common.handle_log import HandleLog
18 -from common.handle_path import DataExcel_Path 18 +from common.handle_path import DataExcel_Path, TeachingAffairs_path, System_path
19 from common.myddt import ddt, data 19 from common.myddt import ddt, data
20 from common.handle_excel import Excel 20 from common.handle_excel import Excel
21 from common.handle_config import conf 21 from common.handle_config import conf
@@ -23,9 +23,6 @@ from tools.fixture import SelectData @@ -23,9 +23,6 @@ from tools.fixture import SelectData
23 from tools.handle_token import LoginToken 23 from tools.handle_token import LoginToken
24 from tools.fixture import RandomPhone, RandomIdentification, RandomEmail 24 from tools.fixture import RandomPhone, RandomIdentification, RandomEmail
25 25
26 -TeachingAffairs_path = os.path.join(DataExcel_Path, "teaching_affairs") # 教务系统管理列表  
27 -System_path = os.path.join(DataExcel_Path, "system") # 系统管理列表  
28 -  
29 26
30 # ==================教师相关的用例================== 27 # ==================教师相关的用例==================
31 @ddt 28 @ddt
@@ -58,8 +55,6 @@ class Test01Teacher(unittest.TestCase): @@ -58,8 +55,6 @@ class Test01Teacher(unittest.TestCase):
58 new_time = time.strftime("%Y%m%d_%H:%M:%S") 55 new_time = time.strftime("%Y%m%d_%H:%M:%S")
59 # 随机教师名称 56 # 随机教师名称
60 self.teacher_name = "py自动化教师" + new_time 57 self.teacher_name = "py自动化教师" + new_time
61 - # # 随机院系代码  
62 - # self.department_code = "py_code" + new_time  
63 58
64 # ==================================================================== 59 # ====================================================================
65 # 新增教师 60 # 新增教师
@@ -240,8 +235,7 @@ class Test03Course(unittest.TestCase): @@ -240,8 +235,7 @@ class Test03Course(unittest.TestCase):
240 read_term_excel = select_term_excel.read_excel_location("C2") 235 read_term_excel = select_term_excel.read_excel_location("C2")
241 term_list = SelectData(str(read_term_excel)) 236 term_list = SelectData(str(read_term_excel))
242 term_json = term_list.select_list() 237 term_json = term_list.select_list()
243 - terms_id = term_json["data"]["records"][0]["terms"][0]["id"]  
244 - cls.terms_id = terms_id # 获取学年学期id 238 + cls.termsId = term_json["data"]["records"][0]["terms"][0]["id"] # 获取学年学期id
245 239
246 def setUp(self): 240 def setUp(self):
247 """单条用例执行前执行的函数""" 241 """单条用例执行前执行的函数"""
@@ -261,7 +255,7 @@ class Test03Course(unittest.TestCase): @@ -261,7 +255,7 @@ class Test03Course(unittest.TestCase):
261 if "#professionalId#" in case["data"]: 255 if "#professionalId#" in case["data"]:
262 case["data"] = case["data"].replace("#professionalId#", str(self.professionalId)) 256 case["data"] = case["data"].replace("#professionalId#", str(self.professionalId))
263 if "#termIds#" in case["data"]: 257 if "#termIds#" in case["data"]:
264 - case["data"] = case["data"].replace("#termIds#", str(self.terms_id)) 258 + case["data"] = case["data"].replace("#termIds#", str(self.termsId))
265 259
266 data = json.loads(case["data"]) 260 data = json.loads(case["data"])
267 expected = json.loads(case["expected"]) 261 expected = json.loads(case["expected"])
@@ -317,27 +311,27 @@ class Test04Student(unittest.TestCase): @@ -317,27 +311,27 @@ class Test04Student(unittest.TestCase):
317 department_list = SelectData(str(read_department_excel)) 311 department_list = SelectData(str(read_department_excel))
318 department_json = department_list.select_list_positive() 312 department_json = department_list.select_list_positive()
319 cls.department_id = jsonpath(department_json, "$..id")[-1] # 获取院系id 313 cls.department_id = jsonpath(department_json, "$..id")[-1] # 获取院系id
320 - # 获取查看专业id 314 + # ---获取查看专业id
321 select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"), 315 select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"),
322 "select_specialty") 316 "select_specialty")
323 read_specialty_excel = select_specialty_excel.read_excel_location("C2") 317 read_specialty_excel = select_specialty_excel.read_excel_location("C2")
324 specialty_list = SelectData(str(read_specialty_excel)) 318 specialty_list = SelectData(str(read_specialty_excel))
325 specialty_json = specialty_list.select_list() 319 specialty_json = specialty_list.select_list()
326 cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id 320 cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
327 - # 获取查看班级id 321 + # ---获取查看班级id
328 select_class_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_class.xlsx"), 322 select_class_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_class.xlsx"),
329 "select_class") 323 "select_class")
330 read_class_excel = select_class_excel.read_excel_location("C2") 324 read_class_excel = select_class_excel.read_excel_location("C2")
331 class_list = SelectData(str(read_class_excel)) 325 class_list = SelectData(str(read_class_excel))
332 class_json = class_list.select_list() 326 class_json = class_list.select_list()
333 cls.classId = jsonpath(class_json, "$..id")[0] # 获取班级id 327 cls.classId = jsonpath(class_json, "$..id")[0] # 获取班级id
334 - # 获取查看学期id 328 + # ---获取查看学期id
335 select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"), 329 select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"),
336 "select_term") 330 "select_term")
337 read_term_excel = select_term_excel.read_excel_location("C2") 331 read_term_excel = select_term_excel.read_excel_location("C2")
338 term_list = SelectData(str(read_term_excel)) 332 term_list = SelectData(str(read_term_excel))
339 term_json = term_list.select_list() 333 term_json = term_list.select_list()
340 - cls.terms_id = jsonpath(term_json, "$..id")[0] # 获取学年学期id 334 + cls.termsId = term_json["data"]["records"][0]["terms"][0]["id"] # 获取学年学期id
341 335
342 def setUp(self): 336 def setUp(self):
343 """单条用例执行前执行的函数""" 337 """单条用例执行前执行的函数"""
@@ -2,10 +2,133 @@ @@ -2,10 +2,133 @@
2 # ====================================== 2 # ======================================
3 # @Software: PyCharm 3 # @Software: PyCharm
4 # @Author : Shitou ✊ 4 # @Author : Shitou ✊
5 -# @Time : 2022/12/29 11:19 5 +# @Time : 2022/12/29 21:19
6 # @FileName: test_04_Internship_preparation.py 6 # @FileName: test_04_Internship_preparation.py
7 # ====================================== 7 # ======================================
8 """ 8 """
9 实习准备模块 9 实习准备模块
10 """ 10 """
11 -# 实习计划 11 +import json
  12 +import time
  13 +import unittest
  14 +import os
  15 +import requests
  16 +from jsonpath import jsonpath
  17 +from common.handle_config import conf
  18 +from common.handle_excel import Excel
  19 +from common.handle_log import HandleLog
  20 +from common.handle_path import DataExcel_Path, System_path, TeachingAffairs_path, Internship_path
  21 +from common.myddt import ddt, data
  22 +from tools.fixture import SelectData
  23 +from tools.handle_token import LoginToken
  24 +
  25 +
  26 +# ==================实习计划相关的用例==================
  27 +@ddt
  28 +class Test01InternshipPlan(unittest.TestCase):
  29 + add_plan = Excel(os.path.join(Internship_path, "test_04_internship_plan.xlsx"), "add_internship_plan")
  30 + add_plan_case = add_plan.read_excel()
  31 +
  32 + @classmethod
  33 + def setUpClass(cls):
  34 + # 获取登陆token
  35 + cls.token = LoginToken.login_token()
  36 + # ---获取添加院系id
  37 + select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
  38 + "select_department")
  39 + read_department_excel = select_department_excel.read_excel_location("C2")
  40 + department_list = SelectData(str(read_department_excel))
  41 + department_json = department_list.select_list_positive()
  42 + cls.department_id = jsonpath(department_json, "$..id")[-1] # 获取院系id
  43 + # ---获取查看专业id
  44 + select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"),
  45 + "select_specialty")
  46 + read_specialty_excel = select_specialty_excel.read_excel_location("C2")
  47 + specialty_list = SelectData(str(read_specialty_excel))
  48 + specialty_json = specialty_list.select_list()
  49 + cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
  50 + # ---获取查看班级id
  51 + select_class_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_class.xlsx"),
  52 + "select_class")
  53 + read_class_excel = select_class_excel.read_excel_location("C2")
  54 + class_list = SelectData(str(read_class_excel))
  55 + class_json = class_list.select_list()
  56 + cls.classId = jsonpath(class_json, "$..id")[0] # 获取班级id
  57 + # ---获取课程id
  58 + select_course_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_course.xlsx"),
  59 + "select_course")
  60 + read_course_excel = select_course_excel.read_excel_location("C2")
  61 + course_list = SelectData(str(read_course_excel))
  62 + course_json = course_list.select_list()
  63 + cls.courseId = jsonpath(course_json, "$..id")[0] # 获取课程id
  64 + # ---获取教师id
  65 + select_teacher_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_teacher.xlsx"),
  66 + "select_teacher")
  67 + read_teacher_excel = select_teacher_excel.read_excel_location("C2")
  68 + teacher_list = SelectData(str(read_teacher_excel))
  69 + teacher_json = teacher_list.select_list()
  70 + cls.teacherId = jsonpath(teacher_json, "$..id")[0] # 获取教师id
  71 + # ---获取查看学期id
  72 + select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"),
  73 + "select_term")
  74 + read_term_excel = select_term_excel.read_excel_location("C2")
  75 + term_list = SelectData(str(read_term_excel))
  76 + term_json = term_list.select_list()
  77 + cls.termsId = term_json["data"]["records"][0]["terms"][0]["id"] # 获取学年学期id
  78 +
  79 + def setUp(self):
  80 + """单条用例执行前执行的函数"""
  81 + new_time = time.strftime("%Y%m%d_%H:%M:%S")
  82 + # 随机计划名称
  83 + self.name = "py自动化计划" + new_time
  84 +
  85 + # ====================================================================
  86 + # 新增计划
  87 + # ====================================================================
  88 + @data(*add_plan_case)
  89 + def test_add_plan(self, case):
  90 + """新增计划用例"""
  91 + url = conf.get("url", "url_ip") + case["url"]
  92 + # 准备数据
  93 + if "#name#" in case["data"]:
  94 + case["data"] = case["data"].replace("#name#", str(self.name + "_" + str(case["id"]))) # 名称
  95 + if "#courseId#" in case["data"]:
  96 + case["data"] = case["data"].replace("#courseId#", str(self.courseId)) # 课程
  97 + if "#departmentId#" in case["data"]:
  98 + case["data"] = case["data"].replace("#departmentId#", str(self.department_id)) # 院系id
  99 + if "#professionalId#" in case["data"]:
  100 + case["data"] = case["data"].replace("#professionalId#", str(self.professionalId)) # 专业id
  101 + if "#classInfoId#" in case["data"]:
  102 + case["data"] = case["data"].replace("#classInfoId#", str(self.classId)) # 班级id
  103 + if "#teacherIds#" in case["data"]:
  104 + case["data"] = case["data"].replace("#teacherIds#", str(self.teacherId)) # 教师id
  105 + if "#termId#" in case["data"]:
  106 + case["data"] = case["data"].replace("#termId#", str(self.termsId)) # 学期id
  107 +
  108 + # 准备数据
  109 + data = json.loads(case["data"])
  110 + expected = json.loads(case["expected"])
  111 + # 调用接口
  112 + herders = {}
  113 + herders["Authorization"] = self.token
  114 + # 调用接口
  115 + response = requests.request(url=url, method=case["method"], json=data, headers=herders)
  116 + res = response.json()
  117 + print("用例入参:{}".format(data))
  118 + print("预期结果:", expected)
  119 + print("实际结果:", res)
  120 + # 断言
  121 + try:
  122 + self.assertEqual(expected['msg'], res['msg'])
  123 + self.assertEqual(expected['code'], res['code'])
  124 + except AssertionError as e:
  125 + # 写入Excel
  126 + self.add_plan.write_excel(row=case["id"] + 1, column=7, value="不通过")
  127 + HandleLog.log.error("用例标题{},不通过".format(case['title']))
  128 + HandleLog.log.exception(e)
  129 + raise e
  130 + else:
  131 + self.add_plan.write_excel(row=case["id"] + 1, column=7, value="通过")
  132 + # 将创建使用的数据写入到excel表格中
  133 + self.add_plan.write_excel(row=case["id"] + 1, column=9, value=case["data"])
  134 + HandleLog.log.info("用例{},执行通过".format(case["title"]))
注册登录 后发表评论