提交 b0055b18ca49895ae6458867d42ec7be5280556e

作者 Shishutong
1 个父辈 9cadee9a

版本:1.0.4

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.2&#10;1.新增的专业与新增的院系id做关联&#10;2。新增教师用例&#10;3。已知bug优化">  
5 - <change afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_course.xlsx" afterDir="false" />  
6 - <change afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_student.xlsx" afterDir="false" /> 4 + <list default="true" id="129454fc-5415-4c7e-9855-d0293355ede5" name="Default Changelist" comment="版本:1.0.3&#10;1.新增班级逻辑判断&#10;2.新增实践课程逻辑判断&#10;3.补充Excel-班级&#10;4.补充Excel-实践课程&#10;4.补充Excel-教师">
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" />
8 - <change beforePath="$PROJECT_DIR$/conf/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/conf/config.ini" 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" /> 6 <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" /> 7 <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" /> 8 <change beforePath="$PROJECT_DIR$/data/system/test_02_term.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_term.xlsx" afterDir="false" />
12 <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_class.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_class.xlsx" afterDir="false" /> 9 <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_class.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_class.xlsx" afterDir="false" />
  10 + <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_course.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_course.xlsx" afterDir="false" />
  11 + <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_student.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_student.xlsx" afterDir="false" />
13 <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_teacher.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_teacher.xlsx" afterDir="false" /> 12 <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_teacher.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_teacher.xlsx" afterDir="false" />
14 <change beforePath="$PROJECT_DIR$/data/test_01_login.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/test_01_login.xlsx" afterDir="false" /> 13 <change beforePath="$PROJECT_DIR$/data/test_01_login.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/test_01_login.xlsx" afterDir="false" />
15 - <change beforePath="$PROJECT_DIR$/instruction_book.md" beforeDir="false" afterPath="$PROJECT_DIR$/instruction_book.md" afterDir="false" />  
16 - <change beforePath="$PROJECT_DIR$/logs/log.log" beforeDir="false" />  
17 - <change beforePath="$PROJECT_DIR$/logs/log.log.2022-12-15" beforeDir="false" />  
18 <change beforePath="$PROJECT_DIR$/report/history.json" beforeDir="false" afterPath="$PROJECT_DIR$/report/history.json" afterDir="false" /> 14 <change beforePath="$PROJECT_DIR$/report/history.json" beforeDir="false" afterPath="$PROJECT_DIR$/report/history.json" afterDir="false" />
19 <change beforePath="$PROJECT_DIR$/report/report.html" beforeDir="false" afterPath="$PROJECT_DIR$/report/report.html" afterDir="false" /> 15 <change beforePath="$PROJECT_DIR$/report/report.html" beforeDir="false" afterPath="$PROJECT_DIR$/report/report.html" afterDir="false" />
20 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" /> 16 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" />
21 - <change beforePath="$PROJECT_DIR$/testcase/test_02_system_management.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_02_system_management.py" afterDir="false" />  
22 <change beforePath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" /> 17 <change beforePath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" />
23 - <change beforePath="$PROJECT_DIR$/tools/fixture.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/fixture.py" afterDir="false" />  
24 - <change beforePath="$PROJECT_DIR$/tools/handle_token.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/handle_token.py" afterDir="false" />  
25 </list> 18 </list>
26 <option name="SHOW_DIALOG" value="false" /> 19 <option name="SHOW_DIALOG" value="false" />
27 <option name="HIGHLIGHT_CONFLICTS" value="true" /> 20 <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -167,8 +160,8 @@ @@ -167,8 +160,8 @@
167 <item itemvalue="Python.run" /> 160 <item itemvalue="Python.run" />
168 <item itemvalue="Python.fixture (1)" /> 161 <item itemvalue="Python.fixture (1)" />
169 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" /> 162 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" />
170 - <item itemvalue="Python tests.Unittests in test_02_system_management.py" />  
171 <item itemvalue="Python tests.Unittests in test_01_login.py" /> 163 <item itemvalue="Python tests.Unittests in test_01_login.py" />
  164 + <item itemvalue="Python tests.Unittests in test_02_system_management.py" />
172 </list> 165 </list>
173 <recent_temporary> 166 <recent_temporary>
174 <list> 167 <list>
@@ -195,7 +188,8 @@ @@ -195,7 +188,8 @@
195 <workItem from="1671612709033" duration="18069000" /> 188 <workItem from="1671612709033" duration="18069000" />
196 <workItem from="1671637473856" duration="5050000" /> 189 <workItem from="1671637473856" duration="5050000" />
197 <workItem from="1671683905863" duration="32432000" /> 190 <workItem from="1671683905863" duration="32432000" />
198 - <workItem from="1671858161931" duration="13359000" /> 191 + <workItem from="1671858161931" duration="14040000" />
  192 + <workItem from="1672107155517" duration="11052000" />
199 </task> 193 </task>
200 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交"> 194 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交">
201 <created>1671544396986</created> 195 <created>1671544396986</created>
@@ -225,7 +219,14 @@ @@ -225,7 +219,14 @@
225 <option name="project" value="LOCAL" /> 219 <option name="project" value="LOCAL" />
226 <updated>1671721946433</updated> 220 <updated>1671721946433</updated>
227 </task> 221 </task>
228 - <option name="localTasksCounter" value="5" /> 222 + <task id="LOCAL-00005" summary="版本:1.0.3&#10;1.新增班级逻辑判断&#10;2.新增实践课程逻辑判断&#10;3.补充Excel-班级&#10;4.补充Excel-实践课程&#10;4.补充Excel-教师">
  223 + <created>1671885330125</created>
  224 + <option name="number" value="00005" />
  225 + <option name="presentableId" value="LOCAL-00005" />
  226 + <option name="project" value="LOCAL" />
  227 + <updated>1671885330125</updated>
  228 + </task>
  229 + <option name="localTasksCounter" value="6" />
229 <servers /> 230 <servers />
230 </component> 231 </component>
231 <component name="TypeScriptGeneratedFilesManager"> 232 <component name="TypeScriptGeneratedFilesManager">
@@ -260,7 +261,8 @@ @@ -260,7 +261,8 @@
260 <MESSAGE value="1.0.1&#10;&#10;1.新增fixture.py&#10;2.新增查看院系接口测试用例&#10;4.新增整理Excel表格数据入参问题&#10;3.代码优化" /> 261 <MESSAGE value="1.0.1&#10;&#10;1.新增fixture.py&#10;2.新增查看院系接口测试用例&#10;4.新增整理Excel表格数据入参问题&#10;3.代码优化" />
261 <MESSAGE value="1.0.1&#10;&#10;1.新增发送邮件" /> 262 <MESSAGE value="1.0.1&#10;&#10;1.新增发送邮件" />
262 <MESSAGE value="1.0.2&#10;1.新增的专业与新增的院系id做关联&#10;2。新增教师用例&#10;3。已知bug优化" /> 263 <MESSAGE value="1.0.2&#10;1.新增的专业与新增的院系id做关联&#10;2。新增教师用例&#10;3。已知bug优化" />
263 - <option name="LAST_COMMIT_MESSAGE" value="1.0.2&#10;1.新增的专业与新增的院系id做关联&#10;2。新增教师用例&#10;3。已知bug优化" /> 264 + <MESSAGE value="版本:1.0.3&#10;1.新增班级逻辑判断&#10;2.新增实践课程逻辑判断&#10;3.补充Excel-班级&#10;4.补充Excel-实践课程&#10;4.补充Excel-教师" />
  265 + <option name="LAST_COMMIT_MESSAGE" value="版本:1.0.3&#10;1.新增班级逻辑判断&#10;2.新增实践课程逻辑判断&#10;3.补充Excel-班级&#10;4.补充Excel-实践课程&#10;4.补充Excel-教师" />
264 </component> 266 </component>
265 <component name="XDebuggerManager"> 267 <component name="XDebuggerManager">
266 <breakpoint-manager> 268 <breakpoint-manager>
@@ -315,21 +317,36 @@ @@ -315,21 +317,36 @@
315 <line>258</line> 317 <line>258</line>
316 <option name="timeStamp" value="26" /> 318 <option name="timeStamp" value="26" />
317 </line-breakpoint> 319 </line-breakpoint>
318 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line">  
319 - <url>file://$PROJECT_DIR$/tools/fixture.py</url>  
320 - <line>36</line>  
321 - <option name="timeStamp" value="30" />  
322 - </line-breakpoint>  
323 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 320 + <line-breakpoint suspend="THREAD" type="python-line">
324 <url>file://$PROJECT_DIR$/tools/fixture.py</url> 321 <url>file://$PROJECT_DIR$/tools/fixture.py</url>
325 <line>28</line> 322 <line>28</line>
326 <option name="timeStamp" value="33" /> 323 <option name="timeStamp" value="33" />
327 </line-breakpoint> 324 </line-breakpoint>
328 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 325 + <line-breakpoint suspend="THREAD" type="python-line">
329 <url>file://$PROJECT_DIR$/tools/fixture.py</url> 326 <url>file://$PROJECT_DIR$/tools/fixture.py</url>
330 <line>35</line> 327 <line>35</line>
331 <option name="timeStamp" value="34" /> 328 <option name="timeStamp" value="34" />
332 </line-breakpoint> 329 </line-breakpoint>
  330 + <line-breakpoint suspend="THREAD" type="python-line">
  331 + <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
  332 + <line>296</line>
  333 + <option name="timeStamp" value="35" />
  334 + </line-breakpoint>
  335 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  336 + <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
  337 + <line>324</line>
  338 + <option name="timeStamp" value="37" />
  339 + </line-breakpoint>
  340 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  341 + <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
  342 + <line>368</line>
  343 + <option name="timeStamp" value="38" />
  344 + </line-breakpoint>
  345 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  346 + <url>file://$PROJECT_DIR$/tools/fixture.py</url>
  347 + <line>37</line>
  348 + <option name="timeStamp" value="39" />
  349 + </line-breakpoint>
333 </breakpoints> 350 </breakpoints>
334 <default-breakpoints> 351 <default-breakpoints>
335 <breakpoint type="python-exception"> 352 <breakpoint type="python-exception">
@@ -346,8 +363,8 @@ @@ -346,8 +363,8 @@
346 <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" /> 363 <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" />
347 <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" /> 364 <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" />
348 <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" /> 365 <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" />
349 - <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1671883540019" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 366 + <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1672110160877" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
350 <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" /> 367 <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" />
351 - <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1671885036096" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> 368 + <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1672125478242" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
352 </component> 369 </component>
353 </project> 370 </project>
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"}]  
  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"}]
此 diff 太大无法显示。
@@ -27,19 +27,19 @@ runner = TestRunner(suite=suite, @@ -27,19 +27,19 @@ runner = TestRunner(suite=suite,
27 desc=conf.get("report", "desc"), 27 desc=conf.get("report", "desc"),
28 templates=conf.getint("report", "templates") 28 templates=conf.getint("report", "templates")
29 ) 29 )
30 -runner.run() 30 +# runner.run()
31 # 执行失败重新运行机制 31 # 执行失败重新运行机制
32 -# runner.rerun_run(count=2, interval=3) 32 +runner.rerun_run(count=2, interval=0.2)
33 """ 33 """
34 发送邮件 34 发送邮件
35 """ 35 """
36 # QQ邮箱SMTP服务器地址为“smtp.qq.com” 36 # QQ邮箱SMTP服务器地址为“smtp.qq.com”
37 # 163邮箱smtp.163.com 465 37 # 163邮箱smtp.163.com 465
38 # 阿里云smtp.qiye.aliyun.com 465 38 # 阿里云smtp.qiye.aliyun.com 465
39 -# runner.send_email(host="smtp.qiye.aliyun.com",  
40 -# port=465,  
41 -# user="shishut@workai.com.cn",  
42 -# password="mKh50p89DqvqJ7pd",  
43 -# to_addrs=["shishut@workai.com.cn"]  
44 -# # to_addrs=["shishut@workai.com.cn", "wangf@workai.com.cn"]  
45 -# ) 39 +runner.send_email(host="smtp.qq.com",
  40 + port=465,
  41 + user="sst_0@foxmail.com",
  42 + password="mKh50p87pd",
  43 + to_addrs=["shishut@workai.com.cn"]
  44 + # to_addrs=["shishut@workai.com.cn", "wangf@workai.com.cn"]
  45 + )
@@ -82,7 +82,7 @@ class Test01CTeacher(unittest.TestCase): @@ -82,7 +82,7 @@ class Test01CTeacher(unittest.TestCase):
82 # ------判断教师身份证号 82 # ------判断教师身份证号
83 if "#idNumber#" in case["data"]: 83 if "#idNumber#" in case["data"]:
84 case["data"] = case["data"].replace("#idNumber#", RandomIdentification().ran_end()) 84 case["data"] = case["data"].replace("#idNumber#", RandomIdentification().ran_end())
85 - # ------判断教师身份证号 85 + # ------判断教师邮箱
86 if "#email#" in case["data"]: 86 if "#email#" in case["data"]:
87 case["data"] = case["data"].replace("#email#", RandomEmail.rand_email()) 87 case["data"] = case["data"].replace("#email#", RandomEmail.rand_email())
88 data = json.loads(case["data"]) 88 data = json.loads(case["data"])
@@ -204,7 +204,7 @@ class Test02Class(unittest.TestCase): @@ -204,7 +204,7 @@ class Test02Class(unittest.TestCase):
204 # ==================实践课程相关的用例================== 204 # ==================实践课程相关的用例==================
205 @ddt 205 @ddt
206 class Test03Course(unittest.TestCase): 206 class Test03Course(unittest.TestCase):
207 - """班级相关""" 207 + """时间课程相关"""
208 add_course = Excel(os.path.join(TeachingAffairs_path, "test_03_course.xlsx"), "add_course") 208 add_course = Excel(os.path.join(TeachingAffairs_path, "test_03_course.xlsx"), "add_course")
209 add_course_case = add_course.read_excel() 209 add_course_case = add_course.read_excel()
210 210
@@ -290,13 +290,12 @@ class Test03Course(unittest.TestCase): @@ -290,13 +290,12 @@ class Test03Course(unittest.TestCase):
290 HandleLog.log.info("用例{},执行通过".format(case["title"])) 290 HandleLog.log.info("用例{},执行通过".format(case["title"]))
291 291
292 292
293 -'''  
294 -# ==================实践学生相关的用例================== 293 +# ==================学生相关的用例==================
295 @ddt 294 @ddt
296 -class Test03Student(unittest.TestCase): 295 +class Test04Student(unittest.TestCase):
297 """班级相关""" 296 """班级相关"""
298 - add_course = Excel(os.path.join(TeachingAffairs_path, "test_03_student.xlsx"), "add_course")  
299 - add_course_case = add_course.read_excel() 297 + add_student = Excel(os.path.join(TeachingAffairs_path, "test_03_student.xlsx"), "add_student")
  298 + add_student_case = add_student.read_excel()
300 299
301 # ==================================================================== 300 # ====================================================================
302 # 新增学生 301 # 新增学生
@@ -310,7 +309,7 @@ class Test03Student(unittest.TestCase): @@ -310,7 +309,7 @@ class Test03Student(unittest.TestCase):
310 # 获取token 309 # 获取token
311 cls.token = LoginToken.login_token() 310 cls.token = LoginToken.login_token()
312 311
313 - # ---获取添加院系Excel表格 312 + # ---获取添加学生Excel表格
314 select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"), 313 select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
315 "select_department") 314 "select_department")
316 read_department_excel = select_department_excel.read_excel_location("C2") 315 read_department_excel = select_department_excel.read_excel_location("C2")
@@ -324,6 +323,13 @@ class Test03Student(unittest.TestCase): @@ -324,6 +323,13 @@ class Test03Student(unittest.TestCase):
324 specialty_list = SelectData(str(read_specialty_excel)) 323 specialty_list = SelectData(str(read_specialty_excel))
325 specialty_json = specialty_list.select_list() 324 specialty_json = specialty_list.select_list()
326 cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id 325 cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
  326 + # 获取查看班级id
  327 + select_class_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_class.xlsx"),
  328 + "select_class")
  329 + read_class_excel = select_class_excel.read_excel_location("C2")
  330 + class_list = SelectData(str(read_class_excel))
  331 + class_json = class_list.select_list()
  332 + cls.classId = jsonpath(class_json, "$..id")[0] # 获取班级id
327 # 获取查看学期id 333 # 获取查看学期id
328 select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"), 334 select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"),
329 "select_term") 335 "select_term")
@@ -335,22 +341,32 @@ class Test03Student(unittest.TestCase): @@ -335,22 +341,32 @@ class Test03Student(unittest.TestCase):
335 def setUp(self): 341 def setUp(self):
336 """单条用例执行前执行的函数""" 342 """单条用例执行前执行的函数"""
337 new_time = time.strftime("%Y%m%d_%H:%M:%S") 343 new_time = time.strftime("%Y%m%d_%H:%M:%S")
338 - # 随机班级名称  
339 - self.course_name = "py自动化课程" + new_time 344 + # 随机学生名称
  345 + self.student_name = "py自动化学生" + new_time
  346 + # 随机学号
  347 + self.student_number = new_time
340 348
341 - @data(*add_course_case)  
342 - def test_add_course_info(self, case): 349 + @data(*add_student_case)
  350 + def test_add_student_info(self, case):
343 """新增课程用例""" 351 """新增课程用例"""
344 url = conf.get("url", "url_ip") + case["url"] 352 url = conf.get("url", "url_ip") + case["url"]
345 # 准备数据 353 # 准备数据
346 if "#name#" in case["data"]: 354 if "#name#" in case["data"]:
347 - case["data"] = case["data"].replace("#name#", str(self.course_name + "_" + str(case["id"]))) 355 + case["data"] = case["data"].replace("#name#", str(self.student_name + "_" + str(case["id"]))) # 名称
  356 + if "#number#" in case["data"]:
  357 + case["data"] = case["data"].replace("#number#", str(self.student_number + "_" + str(case["id"]))) # 学号
  358 + if "#phone#" in case["data"]:
  359 + case["data"] = case["data"].replace("#phone#", RandomPhone.random_phone()) # 手机号
  360 + if "#classInfoId#" in case["data"]:
  361 + case["data"] = case["data"].replace("#classInfoId#", str(self.classId)) # 班级id
  362 + if "#IDNumber#" in case["data"]:
  363 + case["data"] = case["data"].replace("#IDNumber#", RandomIdentification().ran_end()) # 学生身份证号
  364 + if "#other#" in case["data"]:
  365 + case["data"] = case["data"].replace("#other#", RandomPhone.random_phone()) # 其他(备注)
348 if "#departmentId#" in case["data"]: 366 if "#departmentId#" in case["data"]:
349 - case["data"] = case["data"].replace("#departmentId#", str(self.department_id)) 367 + case["data"] = case["data"].replace("#departmentId#", str(self.department_id)) # 院系id
350 if "#professionalId#" in case["data"]: 368 if "#professionalId#" in case["data"]:
351 - case["data"] = case["data"].replace("#professionalId#", str(self.professionalId))  
352 - if "#termIds#" in case["data"]:  
353 - case["data"] = case["data"].replace("#termIds#", str(self.terms_id)) 369 + case["data"] = case["data"].replace("#professionalId#", str(self.professionalId)) # 专业id
354 370
355 data = json.loads(case["data"]) 371 data = json.loads(case["data"])
356 expected = json.loads(case["expected"]) 372 expected = json.loads(case["expected"])
@@ -368,14 +384,13 @@ class Test03Student(unittest.TestCase): @@ -368,14 +384,13 @@ class Test03Student(unittest.TestCase):
368 self.assertEqual(expected['code'], res['code']) 384 self.assertEqual(expected['code'], res['code'])
369 except AssertionError as e: 385 except AssertionError as e:
370 # 写入Excel 386 # 写入Excel
371 - self.add_course.write_excel(row=case["id"] + 1, column=7, value="不通过") 387 + self.add_student.write_excel(row=case["id"] + 1, column=7, value="不通过")
372 HandleLog.log.error("用例标题{},不通过".format(case['title'])) 388 HandleLog.log.error("用例标题{},不通过".format(case['title']))
373 HandleLog.log.exception(e) 389 HandleLog.log.exception(e)
374 raise e 390 raise e
375 else: 391 else:
376 - self.add_course.write_excel(row=case["id"] + 1, column=7, value="通过") 392 + self.add_student.write_excel(row=case["id"] + 1, column=7, value="通过")
377 # 将创建使用的数据写入到excel表格中 393 # 将创建使用的数据写入到excel表格中
378 - self.add_course.write_excel(row=case["id"] + 1, column=9,  
379 - value=case["data"]) 394 + self.add_student.write_excel(row=case["id"] + 1, column=9,
  395 + value=case["data"])
380 HandleLog.log.info("用例{},执行通过".format(case["title"])) 396 HandleLog.log.info("用例{},执行通过".format(case["title"]))
381 -'''  
注册登录 后发表评论