提交 9cadee9aebc7edfc1c3084a37d666fd04a21c8fb

作者 Shishutong
1 个父辈 676ef25a

版本:1.0.3

1.新增班级逻辑判断
2.新增实践课程逻辑判断
3.补充Excel-班级
4.补充Excel-实践课程
4.补充Excel-教师
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.1&#10;&#10;1.新增发送邮件">  
5 - <change afterPath="$PROJECT_DIR$/data/system/test_02_specialty.xlsx" afterDir="false" />  
6 - <change afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_class.xlsx" afterDir="false" />  
7 - <change afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_teacher.xlsx" afterDir="false" /> 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" />
8 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> 7 <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
9 - <change beforePath="$PROJECT_DIR$/common/handle_excel.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/handle_excel.py" afterDir="false" /> 8 + <change beforePath="$PROJECT_DIR$/conf/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/conf/config.ini" afterDir="false" />
10 <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" />
11 - <change beforePath="$PROJECT_DIR$/data/system/test_03_specialty.xlsx" beforeDir="false" />  
12 - <change beforePath="$PROJECT_DIR$/data/system/test_04_term.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/system/test_02_term.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" />
  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" />
  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" />
13 <change beforePath="$PROJECT_DIR$/data/test_01_login.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/test_01_login.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" />
14 - <change beforePath="$PROJECT_DIR$/logs/log.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/log.log" 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" />
15 <change beforePath="$PROJECT_DIR$/report/history.json" beforeDir="false" afterPath="$PROJECT_DIR$/report/history.json" afterDir="false" /> 18 <change beforePath="$PROJECT_DIR$/report/history.json" beforeDir="false" afterPath="$PROJECT_DIR$/report/history.json" afterDir="false" />
16 <change beforePath="$PROJECT_DIR$/report/report.html" beforeDir="false" afterPath="$PROJECT_DIR$/report/report.html" afterDir="false" /> 19 <change beforePath="$PROJECT_DIR$/report/report.html" beforeDir="false" afterPath="$PROJECT_DIR$/report/report.html" afterDir="false" />
17 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" /> 20 <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" />
18 - <change beforePath="$PROJECT_DIR$/testcase/test_01_login.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_01_login.py" afterDir="false" />  
19 <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_02_system_management.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_02_system_management.py" afterDir="false" />
20 <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$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" />
21 <change beforePath="$PROJECT_DIR$/tools/fixture.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/fixture.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" />
22 </list> 25 </list>
23 <option name="SHOW_DIALOG" value="false" /> 26 <option name="SHOW_DIALOG" value="false" />
24 <option name="HIGHLIGHT_CONFLICTS" value="true" /> 27 <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -44,12 +47,6 @@ @@ -44,12 +47,6 @@
44 </option> 47 </option>
45 </component> 48 </component>
46 <component name="Git.Settings"> 49 <component name="Git.Settings">
47 - <option name="PUSH_TAGS">  
48 - <GitPushTagMode>  
49 - <option name="argument" value="--tags" />  
50 - <option name="title" value="All" />  
51 - </GitPushTagMode>  
52 - </option>  
53 <option name="RECENT_BRANCH_BY_REPOSITORY"> 50 <option name="RECENT_BRANCH_BY_REPOSITORY">
54 <map> 51 <map>
55 <entry key="$PROJECT_DIR$" value="master" /> 52 <entry key="$PROJECT_DIR$" value="master" />
@@ -168,16 +165,16 @@ @@ -168,16 +165,16 @@
168 </configuration> 165 </configuration>
169 <list> 166 <list>
170 <item itemvalue="Python.run" /> 167 <item itemvalue="Python.run" />
171 - <item itemvalue="Python tests.Unittests in test_02_system_management.py" />  
172 - <item itemvalue="Python tests.Unittests in test_01_login.py" />  
173 <item itemvalue="Python.fixture (1)" /> 168 <item itemvalue="Python.fixture (1)" />
174 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" /> 169 <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" />
175 </list> 172 </list>
176 <recent_temporary> 173 <recent_temporary>
177 <list> 174 <list>
178 <item itemvalue="Python.run" /> 175 <item itemvalue="Python.run" />
179 - <item itemvalue="Python tests.Unittests in test_02_system_management.py" />  
180 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" /> 176 <item itemvalue="Python tests.Unittests in test_03_teaching_affairs.py" />
  177 + <item itemvalue="Python tests.Unittests in test_02_system_management.py" />
181 <item itemvalue="Python.fixture (1)" /> 178 <item itemvalue="Python.fixture (1)" />
182 <item itemvalue="Python tests.Unittests in test_01_login.py" /> 179 <item itemvalue="Python tests.Unittests in test_01_login.py" />
183 </list> 180 </list>
@@ -197,7 +194,8 @@ @@ -197,7 +194,8 @@
197 <workItem from="1671612580435" duration="100000" /> 194 <workItem from="1671612580435" duration="100000" />
198 <workItem from="1671612709033" duration="18069000" /> 195 <workItem from="1671612709033" duration="18069000" />
199 <workItem from="1671637473856" duration="5050000" /> 196 <workItem from="1671637473856" duration="5050000" />
200 - <workItem from="1671683905863" duration="21393000" /> 197 + <workItem from="1671683905863" duration="32432000" />
  198 + <workItem from="1671858161931" duration="13359000" />
201 </task> 199 </task>
202 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交"> 200 <task id="LOCAL-00001" summary="1.0.0&#10;首次提交">
203 <created>1671544396986</created> 201 <created>1671544396986</created>
@@ -220,7 +218,14 @@ @@ -220,7 +218,14 @@
220 <option name="project" value="LOCAL" /> 218 <option name="project" value="LOCAL" />
221 <updated>1671638407457</updated> 219 <updated>1671638407457</updated>
222 </task> 220 </task>
223 - <option name="localTasksCounter" value="4" /> 221 + <task id="LOCAL-00004" summary="1.0.2&#10;1.新增的专业与新增的院系id做关联&#10;2。新增教师用例&#10;3。已知bug优化">
  222 + <created>1671721946433</created>
  223 + <option name="number" value="00004" />
  224 + <option name="presentableId" value="LOCAL-00004" />
  225 + <option name="project" value="LOCAL" />
  226 + <updated>1671721946433</updated>
  227 + </task>
  228 + <option name="localTasksCounter" value="5" />
224 <servers /> 229 <servers />
225 </component> 230 </component>
226 <component name="TypeScriptGeneratedFilesManager"> 231 <component name="TypeScriptGeneratedFilesManager">
@@ -254,19 +259,20 @@ @@ -254,19 +259,20 @@
254 <MESSAGE value="1.0.0&#10;首次提交" /> 259 <MESSAGE value="1.0.0&#10;首次提交" />
255 <MESSAGE value="1.0.1&#10;&#10;1.新增fixture.py&#10;2.新增查看院系接口测试用例&#10;4.新增整理Excel表格数据入参问题&#10;3.代码优化" /> 260 <MESSAGE value="1.0.1&#10;&#10;1.新增fixture.py&#10;2.新增查看院系接口测试用例&#10;4.新增整理Excel表格数据入参问题&#10;3.代码优化" />
256 <MESSAGE value="1.0.1&#10;&#10;1.新增发送邮件" /> 261 <MESSAGE value="1.0.1&#10;&#10;1.新增发送邮件" />
257 - <option name="LAST_COMMIT_MESSAGE" value="1.0.1&#10;&#10;1.新增发送邮件" /> 262 + <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优化" />
258 </component> 264 </component>
259 <component name="XDebuggerManager"> 265 <component name="XDebuggerManager">
260 <breakpoint-manager> 266 <breakpoint-manager>
261 <breakpoints> 267 <breakpoints>
262 <line-breakpoint suspend="THREAD" type="python-line"> 268 <line-breakpoint suspend="THREAD" type="python-line">
263 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 269 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
264 - <line>148</line> 270 + <line>147</line>
265 <option name="timeStamp" value="5" /> 271 <option name="timeStamp" value="5" />
266 </line-breakpoint> 272 </line-breakpoint>
267 <line-breakpoint suspend="THREAD" type="python-line"> 273 <line-breakpoint suspend="THREAD" type="python-line">
268 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 274 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
269 - <line>184</line> 275 + <line>183</line>
270 <option name="timeStamp" value="10" /> 276 <option name="timeStamp" value="10" />
271 </line-breakpoint> 277 </line-breakpoint>
272 <line-breakpoint suspend="THREAD" type="python-line"> 278 <line-breakpoint suspend="THREAD" type="python-line">
@@ -289,31 +295,41 @@ @@ -289,31 +295,41 @@
289 <line>37</line> 295 <line>37</line>
290 <option name="timeStamp" value="14" /> 296 <option name="timeStamp" value="14" />
291 </line-breakpoint> 297 </line-breakpoint>
292 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line">  
293 - <url>file://$PROJECT_DIR$/tools/fixture.py</url>  
294 - <line>31</line>  
295 - <option name="timeStamp" value="16" />  
296 - </line-breakpoint>  
297 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line">  
298 - <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>  
299 - <line>90</line>  
300 - <option name="timeStamp" value="22" />  
301 - </line-breakpoint>  
302 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 298 + <line-breakpoint suspend="THREAD" type="python-line">
303 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> 299 <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url>
304 - <line>107</line> 300 + <line>108</line>
305 <option name="timeStamp" value="23" /> 301 <option name="timeStamp" value="23" />
306 </line-breakpoint> 302 </line-breakpoint>
307 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 303 + <line-breakpoint suspend="THREAD" type="python-line">
308 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 304 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
309 - <line>178</line> 305 + <line>177</line>
310 <option name="timeStamp" value="24" /> 306 <option name="timeStamp" value="24" />
311 </line-breakpoint> 307 </line-breakpoint>
312 - <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> 308 + <line-breakpoint suspend="THREAD" type="python-line">
313 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url> 309 <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
314 - <line>176</line> 310 + <line>175</line>
315 <option name="timeStamp" value="25" /> 311 <option name="timeStamp" value="25" />
316 </line-breakpoint> 312 </line-breakpoint>
  313 + <line-breakpoint suspend="THREAD" type="python-line">
  314 + <url>file://$PROJECT_DIR$/testcase/test_02_system_management.py</url>
  315 + <line>258</line>
  316 + <option name="timeStamp" value="26" />
  317 + </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">
  324 + <url>file://$PROJECT_DIR$/tools/fixture.py</url>
  325 + <line>28</line>
  326 + <option name="timeStamp" value="33" />
  327 + </line-breakpoint>
  328 + <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
  329 + <url>file://$PROJECT_DIR$/tools/fixture.py</url>
  330 + <line>35</line>
  331 + <option name="timeStamp" value="34" />
  332 + </line-breakpoint>
317 </breakpoints> 333 </breakpoints>
318 <default-breakpoints> 334 <default-breakpoints>
319 <breakpoint type="python-exception"> 335 <breakpoint type="python-exception">
@@ -326,12 +342,12 @@ @@ -326,12 +342,12 @@
326 </component> 342 </component>
327 <component name="com.intellij.coverage.CoverageDataManagerImpl"> 343 <component name="com.intellij.coverage.CoverageDataManagerImpl">
328 <SUITE FILE_PATH="coverage/yxly$fixture__1_.coverage" NAME="fixture (1) Coverage Results" MODIFIED="1671721079921" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" /> 344 <SUITE FILE_PATH="coverage/yxly$fixture__1_.coverage" NAME="fixture (1) Coverage Results" MODIFIED="1671721079921" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" />
329 - <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_02_system_management_py.coverage" NAME="Unittests in test_02_system_management.py Coverage Results" MODIFIED="1671721675550" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> 345 + <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_02_system_management_py.coverage" NAME="Unittests in test_02_system_management.py Coverage Results" MODIFIED="1671781789426" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
330 <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" /> 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" />
331 <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" /> 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" />
332 <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" /> 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" />
333 - <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1671721363914" 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" />
334 <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" /> 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" />
335 - <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1671721748026" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> 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$" />
336 </component> 352 </component>
337 </project> 353 </project>
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 [url] 4 [url]
5 ;测试环境 5 ;测试环境
6 url_ip = http://47.110.250.177:8000 6 url_ip = http://47.110.250.177:8000
  7 +;url_ip = https://api-isx.workai.com.cn
7 login_token = {"Authorization": "Basic"+" "+"d29ya2FpOjEyMzQ1Ng=="} 8 login_token = {"Authorization": "Basic"+" "+"d29ya2FpOjEyMzQ1Ng=="}
8 9
9 10
@@ -45,9 +45,20 @@ testcase:测试用例 @@ -45,9 +45,20 @@ testcase:测试用例
45 > 3.签章管理 45 > 3.签章管理
46 > 46 >
47 > 4.模版库 47 > 4.模版库
48 -> 48 +#### 三.test_03_teaching_affairs.py: 实习教务管理用例
  49 +>1.学生信息管理
  50 +>
  51 +> 2.教职员工管理
  52 +>
  53 +> 3.班级管理
  54 +>
  55 +> 4.实践课程管理
  56 +>
49 tools:工具 57 tools:工具
50 ---------- 58 ----------
  59 +>1.fixture: 获取json数据
  60 +>
  61 +>2.handle_token: 登陆获取token
51 62
52 run.py:运行文件 63 run.py:运行文件
53 ---------- 64 ----------
此 diff 太大无法显示。
此 diff 太大无法显示。
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"}]  
  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"}]
@@ -156,15 +156,15 @@ @@ -156,15 +156,15 @@
156 </li> 156 </li>
157 <li class="list-group-item"> 157 <li class="list-group-item">
158 <button type="button" class="btn btn-success">开始时间</button> 158 <button type="button" class="btn btn-success">开始时间</button>
159 - <span class="text-dark">2022-12-22 23:09:09</span> 159 + <span class="text-dark">2022-12-24 20:30:36</span>
160 </li> 160 </li>
161 <li class="list-group-item"> 161 <li class="list-group-item">
162 <button type="button" class="btn btn-success">执行时间</button> 162 <button type="button" class="btn btn-success">执行时间</button>
163 - <span class="text-dark">15.15 S</span> 163 + <span class="text-dark">24.88 S</span>
164 </li> 164 </li>
165 <li class="list-group-item"> 165 <li class="list-group-item">
166 <button type="button" class="btn btn-success">用例总数</button> 166 <button type="button" class="btn btn-success">用例总数</button>
167 - <span class="text-dark">26</span> 167 + <span class="text-dark">33</span>
168 </li> 168 </li>
169 169
170 170
@@ -175,11 +175,11 @@ @@ -175,11 +175,11 @@
175 175
176 <li class="list-group-item"> 176 <li class="list-group-item">
177 <button type="button" class="btn btn-success">成功用例</button> 177 <button type="button" class="btn btn-success">成功用例</button>
178 - <span class="text-success">10</span> 178 + <span class="text-success">33</span>
179 </li> 179 </li>
180 <li class="list-group-item"> 180 <li class="list-group-item">
181 <button type="button" class="btn btn-warning">失败用例</button> 181 <button type="button" class="btn btn-warning">失败用例</button>
182 - <span class="text-warning">16</span> 182 + <span class="text-warning">0</span>
183 </li> 183 </li>
184 <li class="list-group-item"> 184 <li class="list-group-item">
185 <button type="button" class="btn btn-danger">错误用例</button> 185 <button type="button" class="btn btn-danger">错误用例</button>
@@ -225,9 +225,11 @@ @@ -225,9 +225,11 @@
225 <select id="testClass"> 225 <select id="testClass">
226 <option>所有</option> 226 <option>所有</option>
227 227
  228 + <option>Test03Course</option>
  229 +
228 <option>TestLogin</option> 230 <option>TestLogin</option>
229 231
230 - <option>Test01CTeacher</option> 232 + <option>Test02Class</option>
231 233
232 <option>Test02Specialty</option> 234 <option>Test02Specialty</option>
233 235
@@ -235,6 +237,8 @@ @@ -235,6 +237,8 @@
235 237
236 <option>Test03Year</option> 238 <option>Test03Year</option>
237 239
  240 + <option>Test01CTeacher</option>
  241 +
238 </select> 242 </select>
239 243
240 </th> 244 </th>
@@ -264,7 +268,7 @@ @@ -264,7 +268,7 @@
264 <td class="TestLogin">TestLogin</td> 268 <td class="TestLogin">TestLogin</td>
265 <td>test_login_1</td> 269 <td>test_login_1</td>
266 <td>登陆成功</td> 270 <td>登陆成功</td>
267 - <td>0.522s</td> 271 + <td>0.411s</td>
268 272
269 <td class="text-success">成功</td> 273 <td class="text-success">成功</td>
270 274
@@ -280,7 +284,7 @@ @@ -280,7 +284,7 @@
280 284
281 <pre>用例入参:{'way': 'name', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher', 'username': '17301249975'} 285 <pre>用例入参:{'way': 'name', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher', 'username': '17301249975'}
282 预期结果:{'msg': 'success', 'code': 200} 286 预期结果:{'msg': 'success', 'code': 200}
283 -实际结果:{'msg': 'success', 'code': 200, 'data': {'access_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRUeXBlIjoiIiwiYnJva2VySWQiOiIiLCJocm9Vc2VyVG9rZW4iOm51bGwsInVzZXJfbmFtZSI6IjE3MzAxMjQ5OTc1IiwiYXV0aFN0YXR1cyI6IiIsImF1dGhlbnRpY2F0aW9uSWRlbnRpdHkiOiJsb2dpbiIsInR5cGUiOiJ0ZWFjaGVyIiwidXNlcklkIjoiMTUxOTk1OTIwODUyOTg2Njc1MyIsImNsaWVudF9pZCI6IndvcmthaSIsInN0dWRlbnRJZCI6IiIsInRlYWNoZXJJZCI6IjE1MTk5NTkyMDkyNzY0NTI4NjUiLCJ0ZW5hbnROYW1lIjoiIiwicGhvbmUiOiIxNzMwMTI0OTk3NSIsInNjb3BlIjpbImFsbCJdLCJzY2hvb2xJZCI6IjE1MTk5NTg1NjYxMzAyNTc5MjIiLCJ0ZW5hbnRJZCI6IiIsIm5hbWUiOiLmoKHplb8iLCJzdHVkZW50U3RhdHVzIjoiIiwiZXhwIjoxNjcxNzU3NzQ5LCJzY2hvb2xOYW1lIjoi5rWL6K-V5aSn5a2mIiwianRpIjoiMDliZGY3YmItMjQ1OS00MzFkLWJkMjctYzlkNDAzZDJmNWU5Iiwic3RhdHVzIjoiYWN0aXZlIn0.SL0fKv0hKIY0754w_Ms-mcQeTyWntEiDqsblj6HqGluYqdNO8gpGp2cuA-k0LqgtUNpYHoWzHtwkUyEJ8qJW8XZl0cTZQwJxnPcQYHyug-YcNn9lBumeKd-NnmgPDvAZYW81IYYugNRYxExn9pTmscFAe3z6sLLwg8XDnXYGOoGtMQ8bbcjc-CAmB0Ppb9Pmy_hF2rSvAfKgtqM59bxJT3yEKePY4LLXTSBWty-aGvuvnyGRN2yrQt4-N0hrGHtk9ZjsFCCOxaZuWQotJDOc8hMCh4YGhVvfuAvT-Z8uxIfiJj7vx4aR88zq3SDUae3zWsbPzQ4dUN5d7pBIK71Q7w', 'token_type': 'bearer', 'refresh_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRUeXBlIjoiIiwiYnJva2VySWQiOiIiLCJocm9Vc2VyVG9rZW4iOm51bGwsInVzZXJfbmFtZSI6IjE3MzAxMjQ5OTc1IiwiYXV0aFN0YXR1cyI6IiIsImF1dGhlbnRpY2F0aW9uSWRlbnRpdHkiOiJsb2dpbiIsInR5cGUiOiJ0ZWFjaGVyIiwidXNlcklkIjoiMTUxOTk1OTIwODUyOTg2Njc1MyIsImNsaWVudF9pZCI6IndvcmthaSIsInN0dWRlbnRJZCI6IiIsInRlYWNoZXJJZCI6IjE1MTk5NTkyMDkyNzY0NTI4NjUiLCJ0ZW5hbnROYW1lIjoiIiwicGhvbmUiOiIxNzMwMTI0OTk3NSIsInNjb3BlIjpbImFsbCJdLCJzY2hvb2xJZCI6IjE1MTk5NTg1NjYxMzAyNTc5MjIiLCJhdGkiOiIwOWJkZjdiYi0yNDU5LTQzMWQtYmQyNy1jOWQ0MDNkMmY1ZTkiLCJ0ZW5hbnRJZCI6IiIsIm5hbWUiOiLmoKHplb8iLCJzdHVkZW50U3RhdHVzIjoiIiwiZXhwIjoxNjcxNzkzNzQ5LCJzY2hvb2xOYW1lIjoi5rWL6K-V5aSn5a2mIiwianRpIjoiYzk5ZDRmOTktZmNmMS00YzkyLThmMmQtYTRmY2JjYjAyMjE2Iiwic3RhdHVzIjoiYWN0aXZlIn0.WAYJK0CJtF1lJZcU4APZMllGn7mL5UKWKAgQEHbmbleGw2vcC8_mG0l1UkYqa2FCJ20AjLuLwEeo2LctfXecSnkuEegTV4_uICr1Uay4EjSCfvQYc4co-ztGPczBiNvHbW3SqMJ8XSOEtDilJPTaHti28Fb9gYwUdhki11rpnqFZkrx900gkr57WqA20VB2yEtQc1OG8Eb64FLqsC-2YURzz4yoCmxlCIo3t6b49YyuLJOoHTgY7lwPKyVdH9IleICPeUYsHSF0rCh3sYKfKkmKOLODhXDZynRaf0nHUr9nC8y0fVhKpD3N_6-RI563UCc9KUFyX8qEE0e3CiwrW8Q', 'expires_in': 35999, 'scope': 'all', 'tenantType': '', 'brokerId': '', 'hroUserToken': None, 'authStatus': '', 'authenticationIdentity': 'login', 'type': 'teacher', 'userId': '1519959208529866753', 'studentId': '', 'teacherId': '1519959209276452865', 'tenantName': '', 'phone': '17301249975', 'schoolId': '1519958566130257922', 'tenantId': '', 'name': '校长', 'studentStatus': '', 'schoolName': '测试大学', 'status': 'active', 'jti': '09bdf7bb-2459-431d-bd27-c9d403d2f5e9'}} 287 +实际结果:{'msg': 'success', 'code': 200, 'data': {'access_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRUeXBlIjoiIiwiYnJva2VySWQiOiIiLCJocm9Vc2VyVG9rZW4iOm51bGwsInVzZXJfbmFtZSI6IjE3MzAxMjQ5OTc1IiwiYXV0aFN0YXR1cyI6IiIsImF1dGhlbnRpY2F0aW9uSWRlbnRpdHkiOiJsb2dpbiIsInR5cGUiOiJ0ZWFjaGVyIiwidXNlcklkIjoiMTUxOTk1OTIwODUyOTg2Njc1MyIsImNsaWVudF9pZCI6IndvcmthaSIsInN0dWRlbnRJZCI6IiIsInRlYWNoZXJJZCI6IjE1MTk5NTkyMDkyNzY0NTI4NjUiLCJ0ZW5hbnROYW1lIjoiIiwicGhvbmUiOiIxNzMwMTI0OTk3NSIsInNjb3BlIjpbImFsbCJdLCJzY2hvb2xJZCI6IjE1MTk5NTg1NjYxMzAyNTc5MjIiLCJ0ZW5hbnRJZCI6IiIsIm5hbWUiOiLmoKHplb8iLCJzdHVkZW50U3RhdHVzIjoiIiwiZXhwIjoxNjcxOTIxMDM3LCJzY2hvb2xOYW1lIjoi5rWL6K-V5aSn5a2mIiwianRpIjoiYmIxMjY3NWUtMWQ5NS00MzNjLThiY2UtNzI3Y2NiMjRiZGU5Iiwic3RhdHVzIjoiYWN0aXZlIn0.J68PkXm2fCncaIUm6bHn8vy5KS2F4NZVpqa3CV4enlJk_S7fcxlVykSDmWytmed_wO48cIPh25BCsRz3ZxrGebyYCUtTSQlywoMsOSJuu60MH0SKShu2FYxPHqfltGd09SRhQ53iXs7dS4FBB-eBqtvEatxUk3oCLTVmxvjGkvuf8mmdLodBarvi__5nGvZY10HV1AB5X30mZGQKKm2jSYdPVSrKzTXkq7dHqcnq9G3hT5t2JYpPxz9WRTuki47CL8mp8rT9cO8x1rNmn6ujRArUWJy9VevIzBrZx_ntz2alhWTHRUvKhVmTQ8PxxH-ci7bUe0qj46uI-GzeOsro2w', 'token_type': 'bearer', 'refresh_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRUeXBlIjoiIiwiYnJva2VySWQiOiIiLCJocm9Vc2VyVG9rZW4iOm51bGwsInVzZXJfbmFtZSI6IjE3MzAxMjQ5OTc1IiwiYXV0aFN0YXR1cyI6IiIsImF1dGhlbnRpY2F0aW9uSWRlbnRpdHkiOiJsb2dpbiIsInR5cGUiOiJ0ZWFjaGVyIiwidXNlcklkIjoiMTUxOTk1OTIwODUyOTg2Njc1MyIsImNsaWVudF9pZCI6IndvcmthaSIsInN0dWRlbnRJZCI6IiIsInRlYWNoZXJJZCI6IjE1MTk5NTkyMDkyNzY0NTI4NjUiLCJ0ZW5hbnROYW1lIjoiIiwicGhvbmUiOiIxNzMwMTI0OTk3NSIsInNjb3BlIjpbImFsbCJdLCJzY2hvb2xJZCI6IjE1MTk5NTg1NjYxMzAyNTc5MjIiLCJhdGkiOiJiYjEyNjc1ZS0xZDk1LTQzM2MtOGJjZS03MjdjY2IyNGJkZTkiLCJ0ZW5hbnRJZCI6IiIsIm5hbWUiOiLmoKHplb8iLCJzdHVkZW50U3RhdHVzIjoiIiwiZXhwIjoxNjcxOTU3MDM3LCJzY2hvb2xOYW1lIjoi5rWL6K-V5aSn5a2mIiwianRpIjoiYjZiYTlhN2ItZDA3NS00Njk1LTllMTItOWVhMWJjMTQwNTJhIiwic3RhdHVzIjoiYWN0aXZlIn0.UAdfMPkTUyNtAtPtPftd2Cyt27K0zdouMIq_OS84o4hsxPtlRRigakiSUcLqbzau6O70K4qaGdT5OlRlw1LtHsU_xlLMmz8rFDxE3BxElh89o5gAFZRsPTR4hmpLnjupuOZNTpcUaH51b2yEH9w9-yJZcJjy1lE9Sc8r0qIge1Dgw6J41pfqAmCiegeDgE2fgiqC1aWtjXpuHlHkIg2Wfvz30iGC7LZgivxhuOvWkK4dnSHxnzcO6gm3K1QGlMhB-8F4S92ZzF8Ngj294sKOohW133uV43m6x2LKI-n0ds9YknBxC-gLV0-oxZtRmSKK_yWbOFwKc24wnPltIwEi5w', 'expires_in': 35999, 'scope': 'all', 'tenantType': '', 'brokerId': '', 'hroUserToken': None, 'authStatus': '', 'authenticationIdentity': 'login', 'type': 'teacher', 'userId': '1519959208529866753', 'studentId': '', 'teacherId': '1519959209276452865', 'tenantName': '', 'phone': '17301249975', 'schoolId': '1519958566130257922', 'tenantId': '', 'name': '校长', 'studentStatus': '', 'schoolName': '测试大学', 'status': 'active', 'jti': 'bb12675e-1d95-433c-8bce-727ccb24bde9'}}
284 test_login_1 (test_01_login.TestLogin)执行——>【通过】 288 test_login_1 (test_01_login.TestLogin)执行——>【通过】
285 </pre> 289 </pre>
286 290
@@ -293,9 +297,9 @@ test_login_1 (test_01_login.TestLogin)銵> @@ -293,9 +297,9 @@ test_login_1 (test_01_login.TestLogin)銵>
293 <td class="TestLogin">TestLogin</td> 297 <td class="TestLogin">TestLogin</td>
294 <td>test_login_2</td> 298 <td>test_login_2</td>
295 <td>手机号填写错误的</td> 299 <td>手机号填写错误的</td>
296 - <td>0.22s</td> 300 + <td>0.267s</td>
297 301
298 - <td class="text-warning">失败</td> 302 + <td class="text-success">成功</td>
299 303
300 <td> 304 <td>
301 <button type="button" class="btn btn-success btn_info">查看详情</button> 305 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -307,61 +311,10 @@ test_login_1 (test_01_login.TestLogin)銵> @@ -307,61 +311,10 @@ test_login_1 (test_01_login.TestLogin)銵>
307 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 311 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
308 312
309 313
310 - <pre>用例入参:{'username': '17301149975', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher'} 314 + <pre>用例入参:{'way': 'name', 'username': '17301149975', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher'}
311 预期结果:{'code': 500, 'data': None, 'msg': '用户不存在'} 315 预期结果:{'code': 500, 'data': None, 'msg': '用户不存在'}
312 -实际结果:{'code': 500, 'data': None, 'msg': '参数不正确'}  
313 -test_login_2 (test_01_login.TestLogin)执行——>【失败】  
314 -</pre>  
315 -  
316 -  
317 - <pre>Traceback (most recent call last):  
318 -</pre>  
319 -  
320 -  
321 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
322 - yield  
323 -</pre>  
324 -  
325 -  
326 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
327 - testMethod()  
328 -</pre>  
329 -  
330 -  
331 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
332 - return func(self, *args, **kwargs)  
333 -</pre>  
334 -  
335 -  
336 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 57, in test_login  
337 - raise e  
338 -</pre>  
339 -  
340 -  
341 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 49, in test_login  
342 - self.assertEqual(expected['msg'], res['msg'])  
343 -</pre>  
344 -  
345 -  
346 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
347 - assertion_func(first, second, msg=msg)  
348 -</pre>  
349 -  
350 -  
351 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
352 - self.fail(self._formatMessage(msg, standardMsg))  
353 -</pre>  
354 -  
355 -  
356 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
357 - raise self.failureException(msg)  
358 -</pre>  
359 -  
360 -  
361 - <pre>AssertionError: '用户不存在' != '参数不正确'  
362 -- 用户不存在  
363 -+ 参数不正确  
364 - 316 +实际结果:{'code': 500, 'data': None, 'msg': '用户不存在'}
  317 +test_login_2 (test_01_login.TestLogin)执行——>【通过】
365 </pre> 318 </pre>
366 319
367 320
@@ -373,9 +326,9 @@ test_login_2 (test_01_login.TestLogin)銵>仃韐乓 @@ -373,9 +326,9 @@ test_login_2 (test_01_login.TestLogin)銵>仃韐乓
373 <td class="TestLogin">TestLogin</td> 326 <td class="TestLogin">TestLogin</td>
374 <td>test_login_3</td> 327 <td>test_login_3</td>
375 <td>手机号不进行填写</td> 328 <td>手机号不进行填写</td>
376 - <td>0.214s</td> 329 + <td>0.239s</td>
377 330
378 - <td class="text-warning">失败</td> 331 + <td class="text-success">成功</td>
379 332
380 <td> 333 <td>
381 <button type="button" class="btn btn-success btn_info">查看详情</button> 334 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -387,61 +340,10 @@ test_login_2 (test_01_login.TestLogin)銵>仃韐乓 @@ -387,61 +340,10 @@ test_login_2 (test_01_login.TestLogin)銵>仃韐乓
387 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 340 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
388 341
389 342
390 - <pre>用例入参:{'username': '', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher'} 343 + <pre>用例入参:{'way': 'name', 'username': '', 'password': 'f85eea0e15e424aba8675f8848e2cb83', 'type': 'teacher'}
391 预期结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'} 344 预期结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'}
392 -实际结果:{'code': 500, 'data': None, 'msg': '参数不正确'}  
393 -test_login_3 (test_01_login.TestLogin)执行——>【失败】  
394 -</pre>  
395 -  
396 -  
397 - <pre>Traceback (most recent call last):  
398 -</pre>  
399 -  
400 -  
401 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
402 - yield  
403 -</pre>  
404 -  
405 -  
406 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
407 - testMethod()  
408 -</pre>  
409 -  
410 -  
411 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
412 - return func(self, *args, **kwargs)  
413 -</pre>  
414 -  
415 -  
416 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 57, in test_login  
417 - raise e  
418 -</pre>  
419 -  
420 -  
421 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 49, in test_login  
422 - self.assertEqual(expected['msg'], res['msg'])  
423 -</pre>  
424 -  
425 -  
426 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
427 - assertion_func(first, second, msg=msg)  
428 -</pre>  
429 -  
430 -  
431 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
432 - self.fail(self._formatMessage(msg, standardMsg))  
433 -</pre>  
434 -  
435 -  
436 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
437 - raise self.failureException(msg)  
438 -</pre>  
439 -  
440 -  
441 - <pre>AssertionError: '用户名和密码不能为空' != '参数不正确'  
442 -- 用户名和密码不能为空  
443 -+ 参数不正确  
444 - 345 +实际结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'}
  346 +test_login_3 (test_01_login.TestLogin)执行——>【通过】
445 </pre> 347 </pre>
446 348
447 349
@@ -453,9 +355,9 @@ test_login_3 (test_01_login.TestLogin)銵>仃韐乓 @@ -453,9 +355,9 @@ test_login_3 (test_01_login.TestLogin)銵>仃韐乓
453 <td class="TestLogin">TestLogin</td> 355 <td class="TestLogin">TestLogin</td>
454 <td>test_login_4</td> 356 <td>test_login_4</td>
455 <td>密码填写错误</td> 357 <td>密码填写错误</td>
456 - <td>0.199s</td> 358 + <td>0.355s</td>
457 359
458 - <td class="text-warning">失败</td> 360 + <td class="text-success">成功</td>
459 361
460 <td> 362 <td>
461 <button type="button" class="btn btn-success btn_info">查看详情</button> 363 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -467,61 +369,10 @@ test_login_3 (test_01_login.TestLogin)銵>仃韐乓 @@ -467,61 +369,10 @@ test_login_3 (test_01_login.TestLogin)銵>仃韐乓
467 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 369 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
468 370
469 371
470 - <pre>用例入参:{'username': '17301249975', 'password': 'f85eea0e115e424aba8675f8848e2cb83', 'type': 'teacher'} 372 + <pre>用例入参:{'way': 'name', 'username': '17301249975', 'password': 'f85eea0e115e424aba8675f8848e2cb83', 'type': 'teacher'}
471 预期结果:{'code': 500, 'data': None, 'msg': '密码不正确'} 373 预期结果:{'code': 500, 'data': None, 'msg': '密码不正确'}
472 -实际结果:{'code': 500, 'data': None, 'msg': '参数不正确'}  
473 -test_login_4 (test_01_login.TestLogin)执行——>【失败】  
474 -</pre>  
475 -  
476 -  
477 - <pre>Traceback (most recent call last):  
478 -</pre>  
479 -  
480 -  
481 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
482 - yield  
483 -</pre>  
484 -  
485 -  
486 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
487 - testMethod()  
488 -</pre>  
489 -  
490 -  
491 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
492 - return func(self, *args, **kwargs)  
493 -</pre>  
494 -  
495 -  
496 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 57, in test_login  
497 - raise e  
498 -</pre>  
499 -  
500 -  
501 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 49, in test_login  
502 - self.assertEqual(expected['msg'], res['msg'])  
503 -</pre>  
504 -  
505 -  
506 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
507 - assertion_func(first, second, msg=msg)  
508 -</pre>  
509 -  
510 -  
511 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
512 - self.fail(self._formatMessage(msg, standardMsg))  
513 -</pre>  
514 -  
515 -  
516 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
517 - raise self.failureException(msg)  
518 -</pre>  
519 -  
520 -  
521 - <pre>AssertionError: '密码不正确' != '参数不正确'  
522 -- 密码不正确  
523 -+ 参数不正确  
524 - 374 +实际结果:{'code': 500, 'data': None, 'msg': '密码不正确'}
  375 +test_login_4 (test_01_login.TestLogin)执行——>【通过】
525 </pre> 376 </pre>
526 377
527 378
@@ -533,9 +384,9 @@ test_login_4 (test_01_login.TestLogin)銵>仃韐乓 @@ -533,9 +384,9 @@ test_login_4 (test_01_login.TestLogin)銵>仃韐乓
533 <td class="TestLogin">TestLogin</td> 384 <td class="TestLogin">TestLogin</td>
534 <td>test_login_5</td> 385 <td>test_login_5</td>
535 <td>密码不进行填写</td> 386 <td>密码不进行填写</td>
536 - <td>0.217s</td> 387 + <td>0.243s</td>
537 388
538 - <td class="text-warning">失败</td> 389 + <td class="text-success">成功</td>
539 390
540 <td> 391 <td>
541 <button type="button" class="btn btn-success btn_info">查看详情</button> 392 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -547,61 +398,10 @@ test_login_4 (test_01_login.TestLogin)銵>仃韐乓 @@ -547,61 +398,10 @@ test_login_4 (test_01_login.TestLogin)銵>仃韐乓
547 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 398 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
548 399
549 400
550 - <pre>用例入参:{'username': '17301249975', 'password': '', 'type': 'teacher'} 401 + <pre>用例入参:{'way': 'name', 'username': '17301249975', 'password': '', 'type': 'teacher'}
551 预期结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'} 402 预期结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'}
552 -实际结果:{'code': 500, 'data': None, 'msg': '参数不正确'}  
553 -test_login_5 (test_01_login.TestLogin)执行——>【失败】  
554 -</pre>  
555 -  
556 -  
557 - <pre>Traceback (most recent call last):  
558 -</pre>  
559 -  
560 -  
561 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
562 - yield  
563 -</pre>  
564 -  
565 -  
566 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
567 - testMethod()  
568 -</pre>  
569 -  
570 -  
571 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
572 - return func(self, *args, **kwargs)  
573 -</pre>  
574 -  
575 -  
576 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 57, in test_login  
577 - raise e  
578 -</pre>  
579 -  
580 -  
581 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_01_login.py", line 49, in test_login  
582 - self.assertEqual(expected['msg'], res['msg'])  
583 -</pre>  
584 -  
585 -  
586 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
587 - assertion_func(first, second, msg=msg)  
588 -</pre>  
589 -  
590 -  
591 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
592 - self.fail(self._formatMessage(msg, standardMsg))  
593 -</pre>  
594 -  
595 -  
596 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
597 - raise self.failureException(msg)  
598 -</pre>  
599 -  
600 -  
601 - <pre>AssertionError: '用户名和密码不能为空' != '参数不正确'  
602 -- 用户名和密码不能为空  
603 -+ 参数不正确  
604 - 403 +实际结果:{'code': 500, 'data': None, 'msg': '用户名和密码不能为空'}
  404 +test_login_5 (test_01_login.TestLogin)执行——>【通过】
605 </pre> 405 </pre>
606 406
607 407
@@ -613,7 +413,7 @@ test_login_5 (test_01_login.TestLogin)銵>仃韐乓 @@ -613,7 +413,7 @@ test_login_5 (test_01_login.TestLogin)銵>仃韐乓
613 <td class="Test01Department">Test01Department</td> 413 <td class="Test01Department">Test01Department</td>
614 <td>test_add_department_1</td> 414 <td>test_add_department_1</td>
615 <td>新增院系成功</td> 415 <td>新增院系成功</td>
616 - <td>0.275s</td> 416 + <td>0.306s</td>
617 417
618 <td class="text-success">成功</td> 418 <td class="text-success">成功</td>
619 419
@@ -627,7 +427,7 @@ test_login_5 (test_01_login.TestLogin)銵>仃韐乓 @@ -627,7 +427,7 @@ test_login_5 (test_01_login.TestLogin)銵>仃韐乓
627 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 427 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
628 428
629 429
630 - <pre>用例入参:{'name': 'py自动化院系20221222_23:09:11_1', 'code': 'py_code20221222_23:09:11_1'} 430 + <pre>用例入参:{'name': 'py自动化院系20221224_20:30:38_1', 'code': 'py_code20221224_20:30:38_1'}
631 预期结果: {'msg': 'success', 'code': 200, 'data': True} 431 预期结果: {'msg': 'success', 'code': 200, 'data': True}
632 实际结果: {'msg': 'success', 'code': 200, 'data': True} 432 实际结果: {'msg': 'success', 'code': 200, 'data': True}
633 test_add_department_1 (test_02_system_management.Test01Department)执行——>【通过】 433 test_add_department_1 (test_02_system_management.Test01Department)执行——>【通过】
@@ -642,9 +442,9 @@ test_add_department_1 (test_02_system_management.Test01Department)銵> @@ -642,9 +442,9 @@ test_add_department_1 (test_02_system_management.Test01Department)銵>
642 <td class="Test01Department">Test01Department</td> 442 <td class="Test01Department">Test01Department</td>
643 <td>test_add_department_2</td> 443 <td>test_add_department_2</td>
644 <td>院系名称未填写</td> 444 <td>院系名称未填写</td>
645 - <td>0.225s</td> 445 + <td>0.306s</td>
646 446
647 - <td class="text-warning">失败</td> 447 + <td class="text-success">成功</td>
648 448
649 <td> 449 <td>
650 <button type="button" class="btn btn-success btn_info">查看详情</button> 450 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -656,61 +456,10 @@ test_add_department_1 (test_02_system_management.Test01Department)銵> @@ -656,61 +456,10 @@ test_add_department_1 (test_02_system_management.Test01Department)銵>
656 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 456 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
657 457
658 458
659 - <pre>用例入参:{'name': '', 'code': 'py_code20221222_23:09:11_2'}  
660 -预期结果: {'msg': '院系名称未填写', 'code': 500, 'data': None}  
661 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
662 -test_add_department_2 (test_02_system_management.Test01Department)执行——>【失败】  
663 -</pre>  
664 -  
665 -  
666 - <pre>Traceback (most recent call last):  
667 -</pre>  
668 -  
669 -  
670 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
671 - yield  
672 -</pre>  
673 -  
674 -  
675 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
676 - testMethod()  
677 -</pre>  
678 -  
679 -  
680 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
681 - return func(self, *args, **kwargs)  
682 -</pre>  
683 -  
684 -  
685 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 92, in test_add_department  
686 - raise e  
687 -</pre>  
688 -  
689 -  
690 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 85, in test_add_department  
691 - self.assertEqual(expected['msg'], res['msg'])  
692 -</pre>  
693 -  
694 -  
695 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
696 - assertion_func(first, second, msg=msg)  
697 -</pre>  
698 -  
699 -  
700 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
701 - self.fail(self._formatMessage(msg, standardMsg))  
702 -</pre>  
703 -  
704 -  
705 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
706 - raise self.failureException(msg)  
707 -</pre>  
708 -  
709 -  
710 - <pre>AssertionError: '院系名称未填写' != 'size must be between 1 and 30'  
711 -- 院系名称未填写  
712 -+ size must be between 1 and 30  
713 - 459 + <pre>用例入参:{'name': '', 'code': 'py_code20221224_20:30:39_2'}
  460 +预期结果: {'msg': '院系名称不能为空', 'code': 500, 'data': None}
  461 +实际结果: {'msg': '院系名称不能为空', 'code': 500, 'data': None}
  462 +test_add_department_2 (test_02_system_management.Test01Department)执行——>【通过】
714 </pre> 463 </pre>
715 464
716 465
@@ -722,7 +471,7 @@ test_add_department_2 (test_02_system_management.Test01Department)銵> @@ -722,7 +471,7 @@ test_add_department_2 (test_02_system_management.Test01Department)銵>
722 <td class="Test01Department">Test01Department</td> 471 <td class="Test01Department">Test01Department</td>
723 <td>test_add_department_3</td> 472 <td>test_add_department_3</td>
724 <td>院系名称重复</td> 473 <td>院系名称重复</td>
725 - <td>0.282s</td> 474 + <td>0.275s</td>
726 475
727 <td class="text-success">成功</td> 476 <td class="text-success">成功</td>
728 477
@@ -736,7 +485,7 @@ test_add_department_2 (test_02_system_management.Test01Department)銵> @@ -736,7 +485,7 @@ test_add_department_2 (test_02_system_management.Test01Department)銵>
736 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 485 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
737 486
738 487
739 - <pre>用例入参:{'name': '院系1', 'code': 'py_code20221222_23:09:11_3'} 488 + <pre>用例入参:{'name': '院系1', 'code': 'py_code20221224_20:30:39_3'}
740 预期结果: {'msg': '院系名称已存在,请确认', 'code': 500, 'data': None} 489 预期结果: {'msg': '院系名称已存在,请确认', 'code': 500, 'data': None}
741 实际结果: {'msg': '院系名称已存在,请确认', 'code': 500, 'data': None} 490 实际结果: {'msg': '院系名称已存在,请确认', 'code': 500, 'data': None}
742 test_add_department_3 (test_02_system_management.Test01Department)执行——>【通过】 491 test_add_department_3 (test_02_system_management.Test01Department)执行——>【通过】
@@ -751,9 +500,9 @@ test_add_department_3 (test_02_system_management.Test01Department)銵> @@ -751,9 +500,9 @@ test_add_department_3 (test_02_system_management.Test01Department)銵>
751 <td class="Test01Department">Test01Department</td> 500 <td class="Test01Department">Test01Department</td>
752 <td>test_add_department_4</td> 501 <td>test_add_department_4</td>
753 <td>院系名称长度不可大于30位</td> 502 <td>院系名称长度不可大于30位</td>
754 - <td>0.222s</td> 503 + <td>0.297s</td>
755 504
756 - <td class="text-warning">失败</td> 505 + <td class="text-success">成功</td>
757 506
758 <td> 507 <td>
759 <button type="button" class="btn btn-success btn_info">查看详情</button> 508 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -765,61 +514,10 @@ test_add_department_3 (test_02_system_management.Test01Department)銵> @@ -765,61 +514,10 @@ test_add_department_3 (test_02_system_management.Test01Department)銵>
765 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 514 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
766 515
767 516
768 - <pre>用例入参:{'name': '院系名称长度大于30的测试院系名称长度大于30的测试院系名称长度大于30的测试院系名称长度大于30的测试', 'code': 'py_code20221222_23:09:11_4'}  
769 -预期结果: {'msg': '院系名称长度不可大于30', 'code': 500, 'data': None}  
770 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
771 -test_add_department_4 (test_02_system_management.Test01Department)执行——>【失败】  
772 -</pre>  
773 -  
774 -  
775 - <pre>Traceback (most recent call last):  
776 -</pre>  
777 -  
778 -  
779 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
780 - yield  
781 -</pre>  
782 -  
783 -  
784 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
785 - testMethod()  
786 -</pre>  
787 -  
788 -  
789 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
790 - return func(self, *args, **kwargs)  
791 -</pre>  
792 -  
793 -  
794 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 92, in test_add_department  
795 - raise e  
796 -</pre>  
797 -  
798 -  
799 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 85, in test_add_department  
800 - self.assertEqual(expected['msg'], res['msg'])  
801 -</pre>  
802 -  
803 -  
804 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
805 - assertion_func(first, second, msg=msg)  
806 -</pre>  
807 -  
808 -  
809 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
810 - self.fail(self._formatMessage(msg, standardMsg))  
811 -</pre>  
812 -  
813 -  
814 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
815 - raise self.failureException(msg)  
816 -</pre>  
817 -  
818 -  
819 - <pre>AssertionError: '院系名称长度不可大于30' != 'size must be between 1 and 30'  
820 -- 院系名称长度不可大于30  
821 -+ size must be between 1 and 30  
822 - 517 + <pre>用例入参:{'name': '院系名称长度大于30的测试院系名称长度大于30的测试院系名称长度大于30的测试院系名称长度大于30的测试', 'code': 'py_code20221224_20:30:39_4'}
  518 +预期结果: {'msg': '院系名称长度不可大于30位', 'code': 500, 'data': None}
  519 +实际结果: {'msg': '院系名称长度不可大于30位', 'code': 500, 'data': None}
  520 +test_add_department_4 (test_02_system_management.Test01Department)执行——>【通过】
823 </pre> 521 </pre>
824 522
825 523
@@ -831,9 +529,9 @@ test_add_department_4 (test_02_system_management.Test01Department)銵> @@ -831,9 +529,9 @@ test_add_department_4 (test_02_system_management.Test01Department)銵>
831 <td class="Test01Department">Test01Department</td> 529 <td class="Test01Department">Test01Department</td>
832 <td>test_add_department_5</td> 530 <td>test_add_department_5</td>
833 <td>院系代码不能为空</td> 531 <td>院系代码不能为空</td>
834 - <td>0.216s</td> 532 + <td>0.296s</td>
835 533
836 - <td class="text-warning">失败</td> 534 + <td class="text-success">成功</td>
837 535
838 <td> 536 <td>
839 <button type="button" class="btn btn-success btn_info">查看详情</button> 537 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -845,61 +543,10 @@ test_add_department_4 (test_02_system_management.Test01Department)銵> @@ -845,61 +543,10 @@ test_add_department_4 (test_02_system_management.Test01Department)銵>
845 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 543 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
846 544
847 545
848 - <pre>用例入参:{'name': 'py自动化院系20221222_23:09:12_5', 'code': ''} 546 + <pre>用例入参:{'name': 'py自动化院系20221224_20:30:39_5', 'code': ''}
849 预期结果: {'msg': '院系代码不能为空', 'code': 500, 'data': None} 547 预期结果: {'msg': '院系代码不能为空', 'code': 500, 'data': None}
850 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
851 -test_add_department_5 (test_02_system_management.Test01Department)执行——>【失败】  
852 -</pre>  
853 -  
854 -  
855 - <pre>Traceback (most recent call last):  
856 -</pre>  
857 -  
858 -  
859 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
860 - yield  
861 -</pre>  
862 -  
863 -  
864 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
865 - testMethod()  
866 -</pre>  
867 -  
868 -  
869 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
870 - return func(self, *args, **kwargs)  
871 -</pre>  
872 -  
873 -  
874 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 92, in test_add_department  
875 - raise e  
876 -</pre>  
877 -  
878 -  
879 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 85, in test_add_department  
880 - self.assertEqual(expected['msg'], res['msg'])  
881 -</pre>  
882 -  
883 -  
884 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
885 - assertion_func(first, second, msg=msg)  
886 -</pre>  
887 -  
888 -  
889 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
890 - self.fail(self._formatMessage(msg, standardMsg))  
891 -</pre>  
892 -  
893 -  
894 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
895 - raise self.failureException(msg)  
896 -</pre>  
897 -  
898 -  
899 - <pre>AssertionError: '院系代码不能为空' != 'size must be between 1 and 30'  
900 -- 院系代码不能为空  
901 -+ size must be between 1 and 30  
902 - 548 +实际结果: {'msg': '院系代码不能为空', 'code': 500, 'data': None}
  549 +test_add_department_5 (test_02_system_management.Test01Department)执行——>【通过】
903 </pre> 550 </pre>
904 551
905 552
@@ -911,9 +558,9 @@ test_add_department_5 (test_02_system_management.Test01Department)銵> @@ -911,9 +558,9 @@ test_add_department_5 (test_02_system_management.Test01Department)銵>
911 <td class="Test01Department">Test01Department</td> 558 <td class="Test01Department">Test01Department</td>
912 <td>test_add_department_6</td> 559 <td>test_add_department_6</td>
913 <td>院系代码长度不可大于30</td> 560 <td>院系代码长度不可大于30</td>
914 - <td>0.271s</td> 561 + <td>0.293s</td>
915 562
916 - <td class="text-warning">失败</td> 563 + <td class="text-success">成功</td>
917 564
918 <td> 565 <td>
919 <button type="button" class="btn btn-success btn_info">查看详情</button> 566 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -925,90 +572,39 @@ test_add_department_5 (test_02_system_management.Test01Department)銵> @@ -925,90 +572,39 @@ test_add_department_5 (test_02_system_management.Test01Department)銵>
925 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 572 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
926 573
927 574
928 - <pre>用例入参:{'name': 'py自动化院系20221222_23:09:12_6', 'code': '院系代码长度大于30的测试院系代码长度大于30的测试院系代码长度大于30的测试'}  
929 -预期结果: {'msg': '院系代码不可大于30', 'code': 500, 'data': None}  
930 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
931 -test_add_department_6 (test_02_system_management.Test01Department)执行——>【失败】 575 + <pre>用例入参:{'name': 'py自动化院系20221224_20:30:40_6', 'code': '院系代码长度大于30的测试院系代码长度大于30的测试院系代码长度大于30的测试'}
  576 +预期结果: {'msg': '院系代码长度不可大于30', 'code': 500, 'data': None}
  577 +实际结果: {'msg': '院系代码长度不可大于30', 'code': 500, 'data': None}
  578 +test_add_department_6 (test_02_system_management.Test01Department)执行——>【通过】
932 </pre> 579 </pre>
933 580
934 -  
935 - <pre>Traceback (most recent call last):  
936 -</pre>  
937 581
  582 + </td>
  583 + </tr>
  584 +
  585 + <tr>
  586 + <td>12</td>
  587 + <td class="Test01Department">Test01Department</td>
  588 + <td>test_select_department_1</td>
  589 + <td>查看院系列表</td>
  590 + <td>0.333s</td>
  591 +
  592 + <td class="text-success">成功</td>
  593 +
  594 + <td>
  595 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  596 + </td>
  597 + </tr>
938 598
939 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
940 - yield  
941 -</pre> 599 + <tr class="test_log">
  600 +
  601 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
942 602
943 603
944 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
945 - testMethod()  
946 -</pre>  
947 -  
948 -  
949 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
950 - return func(self, *args, **kwargs)  
951 -</pre>  
952 -  
953 -  
954 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 92, in test_add_department  
955 - raise e  
956 -</pre>  
957 -  
958 -  
959 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 85, in test_add_department  
960 - self.assertEqual(expected['msg'], res['msg'])  
961 -</pre>  
962 -  
963 -  
964 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
965 - assertion_func(first, second, msg=msg)  
966 -</pre>  
967 -  
968 -  
969 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
970 - self.fail(self._formatMessage(msg, standardMsg))  
971 -</pre>  
972 -  
973 -  
974 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
975 - raise self.failureException(msg)  
976 -</pre>  
977 -  
978 -  
979 - <pre>AssertionError: '院系代码不可大于30' != 'size must be between 1 and 30'  
980 -- 院系代码不可大于30  
981 -+ size must be between 1 and 30  
982 -  
983 -</pre>  
984 -  
985 -  
986 - </td>  
987 - </tr>  
988 -  
989 - <tr>  
990 - <td>12</td>  
991 - <td class="Test01Department">Test01Department</td>  
992 - <td>test_add_department_7</td>  
993 - <td>新增院系成功</td>  
994 - <td>0.301s</td>  
995 -  
996 - <td class="text-success">成功</td>  
997 -  
998 - <td>  
999 - <button type="button" class="btn btn-success btn_info">查看详情</button>  
1000 - </td>  
1001 - </tr>  
1002 -  
1003 - <tr class="test_log">  
1004 -  
1005 - <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">  
1006 -  
1007 -  
1008 - <pre>用例入参:{'name': 'py自动化院系20221222_23:09:12_7', 'code': 'py_code20221222_23:09:12_7'}  
1009 -预期结果: {'msg': 'success', 'code': 200, 'data': True}  
1010 -实际结果: {'msg': 'success', 'code': 200, 'data': True}  
1011 -test_add_department_7 (test_02_system_management.Test01Department)执行——>【通过】 604 + <pre>用例入参:{'pageNumber': '0', 'pageSize': '3'}
  605 +预期结果: {'msg': 'success', 'code': 200}
  606 +实际结果: {'msg': 'success', 'code': 200, 'data': {'records': [{'id': '1606628416684421122', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221224_20:30:38_1', 'code': 'py_code20221224_20:30:38_1', 'createdBy': '1519959209276452865', 'createdTime': 1671885039000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606628162723508226', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221224_20:29:38_1', 'code': 'py_code20221224_20:29:38_1', 'createdBy': '1519959209276452865', 'createdTime': 1671884978000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606245531808821249', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_19:09:11_1', 'code': 'py_code20221223_19:09:11_1', 'createdBy': '1519959209276452865', 'createdTime': 1671793752000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606208847079665666', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_16:43:25_1', 'code': 'py_code20221223_16:43:25_1', 'createdBy': '1519959209276452865', 'createdTime': 1671785006000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606204552531800066', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_16:26:21_1', 'code': 'py_code20221223_16:26:21_1', 'createdBy': '1519959209276452865', 'createdTime': 1671783982000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606204305550209026', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_16:25:22_1', 'code': 'py_code20221223_16:25:22_1', 'createdBy': '1519959209276452865', 'createdTime': 1671783923000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606203250993131521', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_16:21:11_1', 'code': 'py_code20221223_16:21:11_1', 'createdBy': '1519959209276452865', 'createdTime': 1671783672000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606203118486679554', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_16:20:39_1', 'code': 'py_code20221223_16:20:39_1', 'createdBy': '1519959209276452865', 'createdTime': 1671783640000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606192084417900546', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:36:49_1', 'code': 'py_code20221223_15:36:49_1', 'createdBy': '1519959209276452865', 'createdTime': 1671781009000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606190781226676225', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:31:38_1', 'code': 'py_code20221223_15:31:38_1', 'createdBy': '1519959209276452865', 'createdTime': 1671780698000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606185455395926018', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:10:28_1', 'code': 'py_code20221223_15:10:28_1', 'createdBy': '1519959209276452865', 'createdTime': 1671779429000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606184834047537153', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:08:00_1', 'code': 'py_code20221223_15:08:00_1', 'createdBy': '1519959209276452865', 'createdTime': 1671779281000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606184430383525890', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:06:24_1', 'code': 'py_code20221223_15:06:24_1', 'createdBy': '1519959209276452865', 'createdTime': 1671779184000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606183724666712065', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:03:35_1', 'code': 'py_code20221223_15:03:35_1', 'createdBy': '1519959209276452865', 'createdTime': 1671779016000, 'updatedBy': None, 'updatedTime': None}, {'id': '1606183161950498817', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221223_15:01:21_1', 'code': 'py_code20221223_15:01:21_1', 'createdBy': '1519959209276452865', 'createdTime': 1671778882000, 'updatedBy': None, 'updatedTime': None}], 'total': 417, 'size': 15, 'current': 1, 'orders': [], 'optimizeCountSql': True, 'searchCount': True, 'countId': '', 'maxLimit': None, 'pages': 28}}
  607 +test_select_department_1 (test_02_system_management.Test01Department)执行——>【通过】
1012 </pre> 608 </pre>
1013 609
1014 610
@@ -1017,39 +613,10 @@ test_add_department_7 (test_02_system_management.Test01Department)銵> @@ -1017,39 +613,10 @@ test_add_department_7 (test_02_system_management.Test01Department)銵>
1017 613
1018 <tr> 614 <tr>
1019 <td>13</td> 615 <td>13</td>
1020 - <td class="Test01Department">Test01Department</td>  
1021 - <td>test_select_department_1</td>  
1022 - <td>查看院系列表</td>  
1023 - <td>0.337s</td>  
1024 -  
1025 - <td class="text-success">成功</td>  
1026 -  
1027 - <td>  
1028 - <button type="button" class="btn btn-success btn_info">查看详情</button>  
1029 - </td>  
1030 - </tr>  
1031 -  
1032 - <tr class="test_log">  
1033 -  
1034 - <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">  
1035 -  
1036 -  
1037 - <pre>用例入参:{'pageNumber': '0', 'pageSize': '3'}  
1038 -预期结果: {'msg': 'success', 'code': 200}  
1039 -实际结果: {'msg': 'success', 'code': 200, 'data': {'records': [{'id': '1605943544424820738', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_23:09:12_7', 'code': 'py_code20221222_23:09:12_7', 'createdBy': '1519959209276452865', 'createdTime': 1671721753000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605943538108198913', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_23:09:11_1', 'code': 'py_code20221222_23:09:11_1', 'createdBy': '1519959209276452865', 'createdTime': 1671721751000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605942164523970561', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_23:03:43_7', 'code': 'py_code20221222_23:03:43_7', 'createdBy': '1519959209276452865', 'createdTime': 1671721424000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605942157955690498', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_23:03:41_1', 'code': 'py_code20221222_23:03:41_1', 'createdBy': '1519959209276452865', 'createdTime': 1671721422000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605840585850482690', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_16:20:05_7', 'code': 'py_code20221222_16:20:05_7', 'createdBy': '1519959209276452865', 'createdTime': 1671697205000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605840579781324801', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_16:20:03_1', 'code': 'py_code20221222_16:20:03_1', 'createdBy': '1519959209276452865', 'createdTime': 1671697204000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605839199377158145', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_16:14:34_7', 'code': 'py_code20221222_16:14:34_7', 'createdBy': '1519959209276452865', 'createdTime': 1671696875000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605839193396080641', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_16:14:33_1', 'code': 'py_code20221222_16:14:33_1', 'createdBy': '1519959209276452865', 'createdTime': 1671696873000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605602173553864706', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:32:43_7', 'code': 'py_code20221222_00:32:43_7', 'createdBy': '1519959209276452865', 'createdTime': 1671640363000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605602164590637057', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:32:41_1', 'code': 'py_code20221222_00:32:41_1', 'createdBy': '1519959209276452865', 'createdTime': 1671640361000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605600586030772226', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:26:24_7', 'code': 'py_code20221222_00:26:24_7', 'createdBy': '1519959209276452865', 'createdTime': 1671639985000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605600579462492161', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:26:23_1', 'code': 'py_code20221222_00:26:23_1', 'createdBy': '1519959209276452865', 'createdTime': 1671639983000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605595424071479298', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:05:54_7', 'code': 'py_code20221222_00:05:54_7', 'createdBy': '1519959209276452865', 'createdTime': 1671638754000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605595417662582785', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:05:52_1', 'code': 'py_code20221222_00:05:52_1', 'createdBy': '1519959209276452865', 'createdTime': 1671638753000, 'updatedBy': None, 'updatedTime': None}, {'id': '1605594240384364546', 'schoolId': '1519958566130257922', 'name': 'py自动化院系20221222_00:01:11_7', 'code': 'py_code20221222_00:01:11_7', 'createdBy': '1519959209276452865', 'createdTime': 1671638472000, 'updatedBy': None, 'updatedTime': None}], 'total': 392, 'size': 15, 'current': 1, 'orders': [], 'optimizeCountSql': True, 'searchCount': True, 'countId': '', 'maxLimit': None, 'pages': 27}}  
1040 -test_select_department_1 (test_02_system_management.Test01Department)执行——>【通过】  
1041 -</pre>  
1042 -  
1043 -  
1044 - </td>  
1045 - </tr>  
1046 -  
1047 - <tr>  
1048 - <td>14</td>  
1049 <td class="Test02Specialty">Test02Specialty</td> 616 <td class="Test02Specialty">Test02Specialty</td>
1050 <td>test_add_specialty_01</td> 617 <td>test_add_specialty_01</td>
1051 <td>新增专业成功</td> 618 <td>新增专业成功</td>
1052 - <td>0.971s</td> 619 + <td>1.04s</td>
1053 620
1054 <td class="text-success">成功</td> 621 <td class="text-success">成功</td>
1055 622
@@ -1063,7 +630,7 @@ test_select_department_1 (test_02_system_management.Test01Department)銵 @@ -1063,7 +630,7 @@ test_select_department_1 (test_02_system_management.Test01Department)銵
1063 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 630 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1064 631
1065 632
1066 - <pre>用例入参:{'name': 'py专业23:09:13_1', 'code': 'py_code23:09:13_1', 'departmentId': '1605943544424820738', 'category': 'science'} 633 + <pre>用例入参:{'name': 'py专业20:30:41_1', 'code': 'py_code20:30:41_1', 'departmentId': '1606628416684421122', 'category': 'science'}
1067 预期结果: {'msg': 'success', 'code': 200, 'data': True} 634 预期结果: {'msg': 'success', 'code': 200, 'data': True}
1068 实际结果: {'msg': 'success', 'code': 200, 'data': True} 635 实际结果: {'msg': 'success', 'code': 200, 'data': True}
1069 test_add_specialty_01 (test_02_system_management.Test02Specialty)执行——>【通过】 636 test_add_specialty_01 (test_02_system_management.Test02Specialty)执行——>【通过】
@@ -1074,11 +641,11 @@ test_add_specialty_01 (test_02_system_management.Test02Specialty)銵> @@ -1074,11 +641,11 @@ test_add_specialty_01 (test_02_system_management.Test02Specialty)銵>
1074 </tr> 641 </tr>
1075 642
1076 <tr> 643 <tr>
1077 - <td>15</td> 644 + <td>14</td>
1078 <td class="Test02Specialty">Test02Specialty</td> 645 <td class="Test02Specialty">Test02Specialty</td>
1079 <td>test_add_specialty_02</td> 646 <td>test_add_specialty_02</td>
1080 <td>新增专业失败,院系未填写</td> 647 <td>新增专业失败,院系未填写</td>
1081 - <td>0.867s</td> 648 + <td>0.939s</td>
1082 649
1083 <td class="text-success">成功</td> 650 <td class="text-success">成功</td>
1084 651
@@ -1092,7 +659,7 @@ test_add_specialty_01 (test_02_system_management.Test02Specialty)銵> @@ -1092,7 +659,7 @@ test_add_specialty_01 (test_02_system_management.Test02Specialty)銵>
1092 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 659 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1093 660
1094 661
1095 - <pre>用例入参:{'name': 'py专业23:09:14_2', 'code': 'py_code23:09:14_2', 'departmentId': '', 'category': 'science'} 662 + <pre>用例入参:{'name': 'py专业20:30:42_2', 'code': 'py_code20:30:42_2', 'departmentId': '', 'category': 'science'}
1096 预期结果: {'msg': '院系不能为空', 'code': 500, 'data': None} 663 预期结果: {'msg': '院系不能为空', 'code': 500, 'data': None}
1097 实际结果: {'msg': '院系不能为空', 'code': 500, 'data': None} 664 实际结果: {'msg': '院系不能为空', 'code': 500, 'data': None}
1098 test_add_specialty_02 (test_02_system_management.Test02Specialty)执行——>【通过】 665 test_add_specialty_02 (test_02_system_management.Test02Specialty)执行——>【通过】
@@ -1103,13 +670,13 @@ test_add_specialty_02 (test_02_system_management.Test02Specialty)銵> @@ -1103,13 +670,13 @@ test_add_specialty_02 (test_02_system_management.Test02Specialty)銵>
1103 </tr> 670 </tr>
1104 671
1105 <tr> 672 <tr>
1106 - <td>16</td> 673 + <td>15</td>
1107 <td class="Test02Specialty">Test02Specialty</td> 674 <td class="Test02Specialty">Test02Specialty</td>
1108 <td>test_add_specialty_03</td> 675 <td>test_add_specialty_03</td>
1109 <td>新增专业失败,院系不存在</td> 676 <td>新增专业失败,院系不存在</td>
1110 - <td>0.938s</td> 677 + <td>1.03s</td>
1111 678
1112 - <td class="text-warning">失败</td> 679 + <td class="text-success">成功</td>
1113 680
1114 <td> 681 <td>
1115 <button type="button" class="btn btn-success btn_info">查看详情</button> 682 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1121,61 +688,10 @@ test_add_specialty_02 (test_02_system_management.Test02Specialty)銵> @@ -1121,61 +688,10 @@ test_add_specialty_02 (test_02_system_management.Test02Specialty)銵>
1121 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 688 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1122 689
1123 690
1124 - <pre>用例入参:{'name': 'py专业23:09:15_3', 'code': 'py_code23:09:15_3', 'departmentId': '1605943544424820738', 'category': 'science'} 691 + <pre>用例入参:{'name': 'py专业20:30:43_3', 'code': 'py_code20:30:43_3', 'departmentId': '23232333333', 'category': 'science'}
1125 预期结果: {'msg': '院系不存在', 'code': 500, 'data': None} 692 预期结果: {'msg': '院系不存在', 'code': 500, 'data': None}
1126 -实际结果: {'msg': 'success', 'code': 200, 'data': True}  
1127 -test_add_specialty_03 (test_02_system_management.Test02Specialty)执行——>【失败】  
1128 -</pre>  
1129 -  
1130 -  
1131 - <pre>Traceback (most recent call last):  
1132 -</pre>  
1133 -  
1134 -  
1135 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1136 - yield  
1137 -</pre>  
1138 -  
1139 -  
1140 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1141 - testMethod()  
1142 -</pre>  
1143 -  
1144 -  
1145 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1146 - return func(self, *args, **kwargs)  
1147 -</pre>  
1148 -  
1149 -  
1150 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1151 - raise e  
1152 -</pre>  
1153 -  
1154 -  
1155 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1156 - self.assertEqual(expected["msg"], res["msg"])  
1157 -</pre>  
1158 -  
1159 -  
1160 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1161 - assertion_func(first, second, msg=msg)  
1162 -</pre>  
1163 -  
1164 -  
1165 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1166 - self.fail(self._formatMessage(msg, standardMsg))  
1167 -</pre>  
1168 -  
1169 -  
1170 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1171 - raise self.failureException(msg)  
1172 -</pre>  
1173 -  
1174 -  
1175 - <pre>AssertionError: '院系不存在' != 'success'  
1176 -- 院系不存在  
1177 -+ success  
1178 - 693 +实际结果: {'msg': '院系不存在', 'code': 500, 'data': None}
  694 +test_add_specialty_03 (test_02_system_management.Test02Specialty)执行——>【通过】
1179 </pre> 695 </pre>
1180 696
1181 697
@@ -1183,13 +699,13 @@ test_add_specialty_03 (test_02_system_management.Test02Specialty)銵> @@ -1183,13 +699,13 @@ test_add_specialty_03 (test_02_system_management.Test02Specialty)銵>
1183 </tr> 699 </tr>
1184 700
1185 <tr> 701 <tr>
1186 - <td>17</td> 702 + <td>16</td>
1187 <td class="Test02Specialty">Test02Specialty</td> 703 <td class="Test02Specialty">Test02Specialty</td>
1188 <td>test_add_specialty_04</td> 704 <td>test_add_specialty_04</td>
1189 <td>新增专业失败,专业名称未填写</td> 705 <td>新增专业失败,专业名称未填写</td>
1190 - <td>0.867s</td> 706 + <td>1.02s</td>
1191 707
1192 - <td class="text-warning">失败</td> 708 + <td class="text-success">成功</td>
1193 709
1194 <td> 710 <td>
1195 <button type="button" class="btn btn-success btn_info">查看详情</button> 711 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1201,61 +717,10 @@ test_add_specialty_03 (test_02_system_management.Test02Specialty)銵> @@ -1201,61 +717,10 @@ test_add_specialty_03 (test_02_system_management.Test02Specialty)銵>
1201 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 717 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1202 718
1203 719
1204 - <pre>用例入参:{'name': '', 'code': 'py_code23:09:16_4', 'departmentId': '1605943544424820738', 'category': 'science'}  
1205 -预期结果: {'msg': '专业名称未填写', 'code': 500, 'data': None}  
1206 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
1207 -test_add_specialty_04 (test_02_system_management.Test02Specialty)执行——>【失败】  
1208 -</pre>  
1209 -  
1210 -  
1211 - <pre>Traceback (most recent call last):  
1212 -</pre>  
1213 -  
1214 -  
1215 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1216 - yield  
1217 -</pre>  
1218 -  
1219 -  
1220 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1221 - testMethod()  
1222 -</pre>  
1223 -  
1224 -  
1225 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1226 - return func(self, *args, **kwargs)  
1227 -</pre>  
1228 -  
1229 -  
1230 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1231 - raise e  
1232 -</pre>  
1233 -  
1234 -  
1235 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1236 - self.assertEqual(expected["msg"], res["msg"])  
1237 -</pre>  
1238 -  
1239 -  
1240 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1241 - assertion_func(first, second, msg=msg)  
1242 -</pre>  
1243 -  
1244 -  
1245 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1246 - self.fail(self._formatMessage(msg, standardMsg))  
1247 -</pre>  
1248 -  
1249 -  
1250 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1251 - raise self.failureException(msg)  
1252 -</pre>  
1253 -  
1254 -  
1255 - <pre>AssertionError: '专业名称未填写' != 'size must be between 1 and 30'  
1256 -- 专业名称未填写  
1257 -+ size must be between 1 and 30  
1258 - 720 + <pre>用例入参:{'name': '', 'code': 'py_code20:30:44_4', 'departmentId': '1606628416684421122', 'category': 'science'}
  721 +预期结果: {'msg': '专业名称不能为空', 'code': 500, 'data': None}
  722 +实际结果: {'msg': '专业名称不能为空', 'code': 500, 'data': None}
  723 +test_add_specialty_04 (test_02_system_management.Test02Specialty)执行——>【通过】
1259 </pre> 724 </pre>
1260 725
1261 726
@@ -1263,13 +728,13 @@ test_add_specialty_04 (test_02_system_management.Test02Specialty)銵> @@ -1263,13 +728,13 @@ test_add_specialty_04 (test_02_system_management.Test02Specialty)銵>
1263 </tr> 728 </tr>
1264 729
1265 <tr> 730 <tr>
1266 - <td>18</td> 731 + <td>17</td>
1267 <td class="Test02Specialty">Test02Specialty</td> 732 <td class="Test02Specialty">Test02Specialty</td>
1268 <td>test_add_specialty_05</td> 733 <td>test_add_specialty_05</td>
1269 <td>新增专业失败,专业名称长度不能大于30</td> 734 <td>新增专业失败,专业名称长度不能大于30</td>
1270 - <td>0.871s</td> 735 + <td>1.06s</td>
1271 736
1272 - <td class="text-warning">失败</td> 737 + <td class="text-success">成功</td>
1273 738
1274 <td> 739 <td>
1275 <button type="button" class="btn btn-success btn_info">查看详情</button> 740 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1281,61 +746,10 @@ test_add_specialty_04 (test_02_system_management.Test02Specialty)銵> @@ -1281,61 +746,10 @@ test_add_specialty_04 (test_02_system_management.Test02Specialty)銵>
1281 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 746 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1282 747
1283 748
1284 - <pre>用例入参:{'name': '专业大于301234567890专业大于301234567890', 'code': 'py_code23:09:17_5', 'departmentId': '1605943544424820738', 'category': 'science'}  
1285 -预期结果: {'msg': '专业名称不能大于30', 'code': 500, 'data': None}  
1286 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
1287 -test_add_specialty_05 (test_02_system_management.Test02Specialty)执行——>【失败】  
1288 -</pre>  
1289 -  
1290 -  
1291 - <pre>Traceback (most recent call last):  
1292 -</pre>  
1293 -  
1294 -  
1295 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1296 - yield  
1297 -</pre>  
1298 -  
1299 -  
1300 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1301 - testMethod()  
1302 -</pre>  
1303 -  
1304 -  
1305 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1306 - return func(self, *args, **kwargs)  
1307 -</pre>  
1308 -  
1309 -  
1310 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1311 - raise e  
1312 -</pre>  
1313 -  
1314 -  
1315 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1316 - self.assertEqual(expected["msg"], res["msg"])  
1317 -</pre>  
1318 -  
1319 -  
1320 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1321 - assertion_func(first, second, msg=msg)  
1322 -</pre>  
1323 -  
1324 -  
1325 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1326 - self.fail(self._formatMessage(msg, standardMsg))  
1327 -</pre>  
1328 -  
1329 -  
1330 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1331 - raise self.failureException(msg)  
1332 -</pre>  
1333 -  
1334 -  
1335 - <pre>AssertionError: '专业名称不能大于30' != 'size must be between 1 and 30'  
1336 -- 专业名称不能大于30  
1337 -+ size must be between 1 and 30  
1338 - 749 + <pre>用例入参:{'name': '专业大于301234567890专业大于301234567890', 'code': 'py_code20:30:45_5', 'departmentId': '1606628416684421122', 'category': 'science'}
  750 +预期结果: {'msg': '专业名称长度不能大于30', 'code': 500, 'data': None}
  751 +实际结果: {'msg': '专业名称长度不能大于30', 'code': 500, 'data': None}
  752 +test_add_specialty_05 (test_02_system_management.Test02Specialty)执行——>【通过】
1339 </pre> 753 </pre>
1340 754
1341 755
@@ -1343,11 +757,11 @@ test_add_specialty_05 (test_02_system_management.Test02Specialty)銵> @@ -1343,11 +757,11 @@ test_add_specialty_05 (test_02_system_management.Test02Specialty)銵>
1343 </tr> 757 </tr>
1344 758
1345 <tr> 759 <tr>
1346 - <td>19</td> 760 + <td>18</td>
1347 <td class="Test02Specialty">Test02Specialty</td> 761 <td class="Test02Specialty">Test02Specialty</td>
1348 <td>test_add_specialty_06</td> 762 <td>test_add_specialty_06</td>
1349 <td>新增专业失败,专业名称重复</td> 763 <td>新增专业失败,专业名称重复</td>
1350 - <td>1.02s</td> 764 + <td>0.959s</td>
1351 765
1352 <td class="text-success">成功</td> 766 <td class="text-success">成功</td>
1353 767
@@ -1361,7 +775,7 @@ test_add_specialty_05 (test_02_system_management.Test02Specialty)銵> @@ -1361,7 +775,7 @@ test_add_specialty_05 (test_02_system_management.Test02Specialty)銵>
1361 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 775 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1362 776
1363 777
1364 - <pre>用例入参:{'name': '第二个专业-2-1', 'code': 'py_code23:09:18_6', 'departmentId': '1605943544424820738', 'category': 'science'} 778 + <pre>用例入参:{'name': '第二个专业-2-1', 'code': 'py_code20:30:46_6', 'departmentId': '1606628416684421122', 'category': 'science'}
1365 预期结果: {'msg': '专业名称已存在,请确认', 'code': 500, 'data': None} 779 预期结果: {'msg': '专业名称已存在,请确认', 'code': 500, 'data': None}
1366 实际结果: {'msg': '专业名称已存在,请确认', 'code': 500, 'data': None} 780 实际结果: {'msg': '专业名称已存在,请确认', 'code': 500, 'data': None}
1367 test_add_specialty_06 (test_02_system_management.Test02Specialty)执行——>【通过】 781 test_add_specialty_06 (test_02_system_management.Test02Specialty)执行——>【通过】
@@ -1372,13 +786,13 @@ test_add_specialty_06 (test_02_system_management.Test02Specialty)銵> @@ -1372,13 +786,13 @@ test_add_specialty_06 (test_02_system_management.Test02Specialty)銵>
1372 </tr> 786 </tr>
1373 787
1374 <tr> 788 <tr>
1375 - <td>20</td> 789 + <td>19</td>
1376 <td class="Test02Specialty">Test02Specialty</td> 790 <td class="Test02Specialty">Test02Specialty</td>
1377 <td>test_add_specialty_07</td> 791 <td>test_add_specialty_07</td>
1378 <td>新增专业失败,专业代码未填写</td> 792 <td>新增专业失败,专业代码未填写</td>
1379 - <td>0.891s</td> 793 + <td>0.959s</td>
1380 794
1381 - <td class="text-warning">失败</td> 795 + <td class="text-success">成功</td>
1382 796
1383 <td> 797 <td>
1384 <button type="button" class="btn btn-success btn_info">查看详情</button> 798 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1390,61 +804,10 @@ test_add_specialty_06 (test_02_system_management.Test02Specialty)銵> @@ -1390,61 +804,10 @@ test_add_specialty_06 (test_02_system_management.Test02Specialty)銵>
1390 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 804 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1391 805
1392 806
1393 - <pre>用例入参:{'name': 'py专业23:09:19_7', 'code': '', 'departmentId': '1605943544424820738', 'category': 'science'} 807 + <pre>用例入参:{'name': 'py专业20:30:47_7', 'code': '', 'departmentId': '1606628416684421122', 'category': 'science'}
1394 预期结果: {'msg': '专业代码不能为空', 'code': 500, 'data': None} 808 预期结果: {'msg': '专业代码不能为空', 'code': 500, 'data': None}
1395 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
1396 -test_add_specialty_07 (test_02_system_management.Test02Specialty)执行——>【失败】  
1397 -</pre>  
1398 -  
1399 -  
1400 - <pre>Traceback (most recent call last):  
1401 -</pre>  
1402 -  
1403 -  
1404 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1405 - yield  
1406 -</pre>  
1407 -  
1408 -  
1409 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1410 - testMethod()  
1411 -</pre>  
1412 -  
1413 -  
1414 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1415 - return func(self, *args, **kwargs)  
1416 -</pre>  
1417 -  
1418 -  
1419 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1420 - raise e  
1421 -</pre>  
1422 -  
1423 -  
1424 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1425 - self.assertEqual(expected["msg"], res["msg"])  
1426 -</pre>  
1427 -  
1428 -  
1429 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1430 - assertion_func(first, second, msg=msg)  
1431 -</pre>  
1432 -  
1433 -  
1434 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1435 - self.fail(self._formatMessage(msg, standardMsg))  
1436 -</pre>  
1437 -  
1438 -  
1439 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1440 - raise self.failureException(msg)  
1441 -</pre>  
1442 -  
1443 -  
1444 - <pre>AssertionError: '专业代码不能为空' != 'size must be between 1 and 30'  
1445 -- 专业代码不能为空  
1446 -+ size must be between 1 and 30  
1447 - 809 +实际结果: {'msg': '专业代码不能为空', 'code': 500, 'data': None}
  810 +test_add_specialty_07 (test_02_system_management.Test02Specialty)执行——>【通过】
1448 </pre> 811 </pre>
1449 812
1450 813
@@ -1452,13 +815,13 @@ test_add_specialty_07 (test_02_system_management.Test02Specialty)銵> @@ -1452,13 +815,13 @@ test_add_specialty_07 (test_02_system_management.Test02Specialty)銵>
1452 </tr> 815 </tr>
1453 816
1454 <tr> 817 <tr>
1455 - <td>21</td> 818 + <td>20</td>
1456 <td class="Test02Specialty">Test02Specialty</td> 819 <td class="Test02Specialty">Test02Specialty</td>
1457 <td>test_add_specialty_08</td> 820 <td>test_add_specialty_08</td>
1458 <td>新增专业失败,专业代码长度不能大于30</td> 821 <td>新增专业失败,专业代码长度不能大于30</td>
1459 - <td>0.933s</td> 822 + <td>0.918s</td>
1460 823
1461 - <td class="text-warning">失败</td> 824 + <td class="text-success">成功</td>
1462 825
1463 <td> 826 <td>
1464 <button type="button" class="btn btn-success btn_info">查看详情</button> 827 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1470,61 +833,10 @@ test_add_specialty_07 (test_02_system_management.Test02Specialty)銵> @@ -1470,61 +833,10 @@ test_add_specialty_07 (test_02_system_management.Test02Specialty)銵>
1470 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 833 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1471 834
1472 835
1473 - <pre>用例入参:{'name': 'py专业23:09:20_8', 'code': '专业代码大于301234567890专业大于301234567890', 'departmentId': '1605943544424820738', 'category': 'science'}  
1474 -预期结果: {'msg': '专业代码不能大于30', 'code': 500, 'data': None}  
1475 -实际结果: {'msg': 'size must be between 1 and 30', 'code': 500, 'data': None}  
1476 -test_add_specialty_08 (test_02_system_management.Test02Specialty)执行——>【失败】  
1477 -</pre>  
1478 -  
1479 -  
1480 - <pre>Traceback (most recent call last):  
1481 -</pre>  
1482 -  
1483 -  
1484 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1485 - yield  
1486 -</pre>  
1487 -  
1488 -  
1489 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1490 - testMethod()  
1491 -</pre>  
1492 -  
1493 -  
1494 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1495 - return func(self, *args, **kwargs)  
1496 -</pre>  
1497 -  
1498 -  
1499 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1500 - raise e  
1501 -</pre>  
1502 -  
1503 -  
1504 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1505 - self.assertEqual(expected["msg"], res["msg"])  
1506 -</pre>  
1507 -  
1508 -  
1509 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1510 - assertion_func(first, second, msg=msg)  
1511 -</pre>  
1512 -  
1513 -  
1514 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1515 - self.fail(self._formatMessage(msg, standardMsg))  
1516 -</pre>  
1517 -  
1518 -  
1519 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1520 - raise self.failureException(msg)  
1521 -</pre>  
1522 -  
1523 -  
1524 - <pre>AssertionError: '专业代码不能大于30' != 'size must be between 1 and 30'  
1525 -- 专业代码不能大于30  
1526 -+ size must be between 1 and 30  
1527 - 836 + <pre>用例入参:{'name': 'py专业20:30:48_8', 'code': '专业代码大于301234567890专业大于301234567890', 'departmentId': '1606628416684421122', 'category': 'science'}
  837 +预期结果: {'msg': '专业代码长度不能大于30', 'code': 500, 'data': None}
  838 +实际结果: {'msg': '专业代码长度不能大于30', 'code': 500, 'data': None}
  839 +test_add_specialty_08 (test_02_system_management.Test02Specialty)执行——>【通过】
1528 </pre> 840 </pre>
1529 841
1530 842
@@ -1532,13 +844,13 @@ test_add_specialty_08 (test_02_system_management.Test02Specialty)銵> @@ -1532,13 +844,13 @@ test_add_specialty_08 (test_02_system_management.Test02Specialty)銵>
1532 </tr> 844 </tr>
1533 845
1534 <tr> 846 <tr>
1535 - <td>22</td> 847 + <td>21</td>
1536 <td class="Test02Specialty">Test02Specialty</td> 848 <td class="Test02Specialty">Test02Specialty</td>
1537 <td>test_add_specialty_09</td> 849 <td>test_add_specialty_09</td>
1538 <td>新增专业失败,学科门类未填写</td> 850 <td>新增专业失败,学科门类未填写</td>
1539 - <td>0.903s</td> 851 + <td>1.02s</td>
1540 852
1541 - <td class="text-warning">失败</td> 853 + <td class="text-success">成功</td>
1542 854
1543 <td> 855 <td>
1544 <button type="button" class="btn btn-success btn_info">查看详情</button> 856 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1550,61 +862,10 @@ test_add_specialty_08 (test_02_system_management.Test02Specialty)銵> @@ -1550,61 +862,10 @@ test_add_specialty_08 (test_02_system_management.Test02Specialty)銵>
1550 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 862 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1551 863
1552 864
1553 - <pre>用例入参:{'name': 'py专业23:09:20_9', 'code': 'py_code23:09:20_9', 'departmentId': '1605943544424820738', 'category': ''} 865 + <pre>用例入参:{'name': 'py专业20:30:49_9', 'code': 'py_code20:30:49_9', 'departmentId': '1606628416684421122', 'category': ''}
1554 预期结果: {'msg': '学科门类不能为空', 'code': 500, 'data': None} 866 预期结果: {'msg': '学科门类不能为空', 'code': 500, 'data': None}
1555 -实际结果: {'msg': '学科门类不存在', 'code': 500, 'data': None}  
1556 -test_add_specialty_09 (test_02_system_management.Test02Specialty)执行——>【失败】  
1557 -</pre>  
1558 -  
1559 -  
1560 - <pre>Traceback (most recent call last):  
1561 -</pre>  
1562 -  
1563 -  
1564 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1565 - yield  
1566 -</pre>  
1567 -  
1568 -  
1569 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1570 - testMethod()  
1571 -</pre>  
1572 -  
1573 -  
1574 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1575 - return func(self, *args, **kwargs)  
1576 -</pre>  
1577 -  
1578 -  
1579 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 207, in test_add_specialty  
1580 - raise e  
1581 -</pre>  
1582 -  
1583 -  
1584 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 201, in test_add_specialty  
1585 - self.assertEqual(expected["msg"], res["msg"])  
1586 -</pre>  
1587 -  
1588 -  
1589 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1590 - assertion_func(first, second, msg=msg)  
1591 -</pre>  
1592 -  
1593 -  
1594 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1595 - self.fail(self._formatMessage(msg, standardMsg))  
1596 -</pre>  
1597 -  
1598 -  
1599 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1600 - raise self.failureException(msg)  
1601 -</pre>  
1602 -  
1603 -  
1604 - <pre>AssertionError: '学科门类不能为空' != '学科门类不存在'  
1605 -- 学科门类不能为空  
1606 -+ 学科门类不存在  
1607 - 867 +实际结果: {'msg': '学科门类不能为空', 'code': 500, 'data': None}
  868 +test_add_specialty_09 (test_02_system_management.Test02Specialty)执行——>【通过】
1608 </pre> 869 </pre>
1609 870
1610 871
@@ -1612,11 +873,11 @@ test_add_specialty_09 (test_02_system_management.Test02Specialty)銵> @@ -1612,11 +873,11 @@ test_add_specialty_09 (test_02_system_management.Test02Specialty)銵>
1612 </tr> 873 </tr>
1613 874
1614 <tr> 875 <tr>
1615 - <td>23</td> 876 + <td>22</td>
1616 <td class="Test02Specialty">Test02Specialty</td> 877 <td class="Test02Specialty">Test02Specialty</td>
1617 <td>test_add_specialty_10</td> 878 <td>test_add_specialty_10</td>
1618 <td>新增专业失败,学科门类填写错误</td> 879 <td>新增专业失败,学科门类填写错误</td>
1619 - <td>0.928s</td> 880 + <td>0.996s</td>
1620 881
1621 <td class="text-success">成功</td> 882 <td class="text-success">成功</td>
1622 883
@@ -1630,7 +891,7 @@ test_add_specialty_09 (test_02_system_management.Test02Specialty)銵> @@ -1630,7 +891,7 @@ test_add_specialty_09 (test_02_system_management.Test02Specialty)銵>
1630 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 891 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1631 892
1632 893
1633 - <pre>用例入参:{'name': 'py专业23:09:21_10', 'code': 'py_code23:09:21_10', 'departmentId': '1605943544424820738', 'category': 'scienwce'} 894 + <pre>用例入参:{'name': 'py专业20:30:50_10', 'code': 'py_code20:30:50_10', 'departmentId': '1606628416684421122', 'category': 'scienwce'}
1634 预期结果: {'msg': '学科门类不存在', 'code': 500, 'data': None} 895 预期结果: {'msg': '学科门类不存在', 'code': 500, 'data': None}
1635 实际结果: {'msg': '学科门类不存在', 'code': 500, 'data': None} 896 实际结果: {'msg': '学科门类不存在', 'code': 500, 'data': None}
1636 test_add_specialty_10 (test_02_system_management.Test02Specialty)执行——>【通过】 897 test_add_specialty_10 (test_02_system_management.Test02Specialty)执行——>【通过】
@@ -1641,11 +902,11 @@ test_add_specialty_10 (test_02_system_management.Test02Specialty)銵> @@ -1641,11 +902,11 @@ test_add_specialty_10 (test_02_system_management.Test02Specialty)銵>
1641 </tr> 902 </tr>
1642 903
1643 <tr> 904 <tr>
1644 - <td>24</td> 905 + <td>23</td>
1645 <td class="Test03Year">Test03Year</td> 906 <td class="Test03Year">Test03Year</td>
1646 <td>test_add_year_1</td> 907 <td>test_add_year_1</td>
1647 <td>新增学年学期成功</td> 908 <td>新增学年学期成功</td>
1648 - <td>0.288s</td> 909 + <td>0.325s</td>
1649 910
1650 <td class="text-success">成功</td> 911 <td class="text-success">成功</td>
1651 912
@@ -1659,7 +920,7 @@ test_add_specialty_10 (test_02_system_management.Test02Specialty)銵> @@ -1659,7 +920,7 @@ test_add_specialty_10 (test_02_system_management.Test02Specialty)銵>
1659 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 920 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1660 921
1661 922
1662 - <pre>用例入参:{'year': 'py学年23:09:23_1', 'remark': 'py_comment备注23:09:23_1', 'terms': [{'sort': 1, 'startTime': 1667376499000, 'endTime': 1704115459000}]} 923 + <pre>用例入参:{'year': 'py学年20:30:51_1', 'remark': 'py_comment备注20:30:51_1', 'terms': [{'sort': 1, 'startTime': 1667376499000, 'endTime': 1704115459000}]}
1663 预期结果: {'msg': 'success', 'code': 200, 'data': True} 924 预期结果: {'msg': 'success', 'code': 200, 'data': True}
1664 实际结果: {'msg': 'success', 'code': 200, 'data': True} 925 实际结果: {'msg': 'success', 'code': 200, 'data': True}
1665 test_add_year_1 (test_02_system_management.Test03Year)执行——>【通过】 926 test_add_year_1 (test_02_system_management.Test03Year)执行——>【通过】
@@ -1670,13 +931,13 @@ test_add_year_1 (test_02_system_management.Test03Year)銵> @@ -1670,13 +931,13 @@ test_add_year_1 (test_02_system_management.Test03Year)銵>
1670 </tr> 931 </tr>
1671 932
1672 <tr> 933 <tr>
1673 - <td>25</td> 934 + <td>24</td>
1674 <td class="Test03Year">Test03Year</td> 935 <td class="Test03Year">Test03Year</td>
1675 <td>test_add_year_2</td> 936 <td>test_add_year_2</td>
1676 <td>学年学期开始时间和结束时间不可交叉</td> 937 <td>学年学期开始时间和结束时间不可交叉</td>
1677 - <td>0.231s</td> 938 + <td>0.306s</td>
1678 939
1679 - <td class="text-warning">失败</td> 940 + <td class="text-success">成功</td>
1680 941
1681 <td> 942 <td>
1682 <button type="button" class="btn btn-success btn_info">查看详情</button> 943 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1688,61 +949,126 @@ test_add_year_1 (test_02_system_management.Test03Year)銵> @@ -1688,61 +949,126 @@ test_add_year_1 (test_02_system_management.Test03Year)銵>
1688 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 949 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1689 950
1690 951
1691 - <pre>用例入参:{'year': 'py学年23:09:23_2', 'remark': 'py_comment备注23:09:23_2', 'terms': [{'sort': 1, 'startTime': 1667376499000, 'endTime': 1704115459000}, {'sort': 2, 'startTime': 1667376499000, 'endTime': 1704115459000}]} 952 + <pre>用例入参:{'year': 'py学年20:30:51_2', 'remark': 'py_comment备注20:30:51_2', 'terms': [{'sort': 1, 'startTime': 1667376499000, 'endTime': 1704115459000}, {'sort': 2, 'startTime': 1667376499000, 'endTime': 1704115459000}]}
1692 预期结果: {'msg': '学期起止时间不能交叉', 'code': 500, 'data': None} 953 预期结果: {'msg': '学期起止时间不能交叉', 'code': 500, 'data': None}
1693 -实际结果: {'msg': 'success', 'code': 200, 'data': True}  
1694 -test_add_year_2 (test_02_system_management.Test03Year)执行——>【失败】 954 +实际结果: {'msg': '学期起止时间不能交叉', 'code': 500, 'data': None}
  955 +test_add_year_2 (test_02_system_management.Test03Year)执行——>【通过】
1695 </pre> 956 </pre>
1696 957
1697 -  
1698 - <pre>Traceback (most recent call last):  
1699 -</pre>  
1700 958
  959 + </td>
  960 + </tr>
  961 +
  962 + <tr>
  963 + <td>25</td>
  964 + <td class="Test03Year">Test03Year</td>
  965 + <td>test_add_year_3</td>
  966 + <td>学年未填写</td>
  967 + <td>0.283s</td>
  968 +
  969 + <td class="text-success">成功</td>
  970 +
  971 + <td>
  972 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  973 + </td>
  974 + </tr>
1701 975
1702 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1703 - yield  
1704 -</pre>  
1705 - 976 + <tr class="test_log">
1706 977
1707 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1708 - testMethod()  
1709 -</pre> 978 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1710 979
1711 980
1712 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1713 - return func(self, *args, **kwargs) 981 + <pre>用例入参:{'year': '', 'remark': 'py_comment备注20:30:52_3', 'terms': [{'sort': 1, 'startTime': 1667376499000, 'endTime': 1704115459000}]}
  982 +预期结果: {'msg': '学年不能为空', 'code': 500, 'data': None}
  983 +实际结果: {'msg': '学年不能为空', 'code': 500, 'data': None}
  984 +test_add_year_3 (test_02_system_management.Test03Year)执行——>【通过】
1714 </pre> 985 </pre>
1715 986
1716 -  
1717 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 272, in test_add_year  
1718 - raise e  
1719 -</pre>  
1720 987
  988 + </td>
  989 + </tr>
  990 +
  991 + <tr>
  992 + <td>26</td>
  993 + <td class="Test03Year">Test03Year</td>
  994 + <td>test_add_year_4</td>
  995 + <td>学期未填写</td>
  996 + <td>0.323s</td>
  997 +
  998 + <td class="text-success">成功</td>
  999 +
  1000 + <td>
  1001 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1002 + </td>
  1003 + </tr>
1721 1004
1722 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_02_system_management.py", line 266, in test_add_year  
1723 - self.assertEqual(expected["msg"], res["msg"])  
1724 -</pre> 1005 + <tr class="test_log">
  1006 +
  1007 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1725 1008
1726 1009
1727 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1728 - assertion_func(first, second, msg=msg) 1010 + <pre>用例入参:{'year': 'py学年20:30:52_4', 'remark': 'py_comment备注20:30:52_4', 'terms': [{'sort': '', 'startTime': 1667376499000, 'endTime': 1704115459000}]}
  1011 +预期结果: {'msg': '学期排序不能为空', 'code': 500, 'data': None}
  1012 +实际结果: {'msg': '学期排序不能为空', 'code': 500, 'data': None}
  1013 +test_add_year_4 (test_02_system_management.Test03Year)执行——>【通过】
1729 </pre> 1014 </pre>
1730 1015
  1016 +
  1017 + </td>
  1018 + </tr>
  1019 +
  1020 + <tr>
  1021 + <td>27</td>
  1022 + <td class="Test03Year">Test03Year</td>
  1023 + <td>test_add_year_5</td>
  1024 + <td>学期开始时间未填写</td>
  1025 + <td>0.294s</td>
  1026 +
  1027 + <td class="text-success">成功</td>
  1028 +
  1029 + <td>
  1030 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1031 + </td>
  1032 + </tr>
1731 1033
1732 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1733 - self.fail(self._formatMessage(msg, standardMsg))  
1734 -</pre> 1034 + <tr class="test_log">
  1035 +
  1036 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1735 1037
1736 1038
1737 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1738 - raise self.failureException(msg) 1039 + <pre>用例入参:{'year': 'py学年20:30:52_5', 'remark': 'py_comment备注20:30:52_5', 'terms': [{'sort': 1, 'startTime': '', 'endTime': 1704115459000}]}
  1040 +预期结果: {'msg': '学期开始时间不能为空', 'code': 500, 'data': None}
  1041 +实际结果: {'msg': '学期开始时间不能为空', 'code': 500, 'data': None}
  1042 +test_add_year_5 (test_02_system_management.Test03Year)执行——>【通过】
1739 </pre> 1043 </pre>
1740 1044
  1045 +
  1046 + </td>
  1047 + </tr>
  1048 +
  1049 + <tr>
  1050 + <td>28</td>
  1051 + <td class="Test03Year">Test03Year</td>
  1052 + <td>test_add_year_6</td>
  1053 + <td>学期结束时间未填写</td>
  1054 + <td>0.289s</td>
  1055 +
  1056 + <td class="text-success">成功</td>
  1057 +
  1058 + <td>
  1059 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1060 + </td>
  1061 + </tr>
1741 1062
1742 - <pre>AssertionError: '学期起止时间不能交叉' != 'success'  
1743 -- 学期起止时间不能交叉  
1744 -+ success 1063 + <tr class="test_log">
  1064 +
  1065 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
  1066 +
1745 1067
  1068 + <pre>用例入参:{'year': 'py学年20:30:53_6', 'remark': 'py_comment备注20:30:53_6', 'terms': [{'sort': 1, 'startTime': 1704115459000, 'endTime': ''}]}
  1069 +预期结果: {'msg': '学期结束时间不能为空', 'code': 500, 'data': None}
  1070 +实际结果: {'msg': '学期结束时间不能为空', 'code': 500, 'data': None}
  1071 +test_add_year_6 (test_02_system_management.Test03Year)执行——>【通过】
1746 </pre> 1072 </pre>
1747 1073
1748 1074
@@ -1750,13 +1076,13 @@ test_add_year_2 (test_02_system_management.Test03Year)銵>仃韐乓 @@ -1750,13 +1076,13 @@ test_add_year_2 (test_02_system_management.Test03Year)銵>仃韐乓
1750 </tr> 1076 </tr>
1751 1077
1752 <tr> 1078 <tr>
1753 - <td>26</td> 1079 + <td>29</td>
1754 <td class="Test01CTeacher">Test01CTeacher</td> 1080 <td class="Test01CTeacher">Test01CTeacher</td>
1755 - <td>test_add_class_info_1</td> 1081 + <td>test_add_teacher_info_1</td>
1756 <td>新增教师</td> 1082 <td>新增教师</td>
1757 - <td>0.239s</td> 1083 + <td>0.543s</td>
1758 1084
1759 - <td class="text-warning">失败</td> 1085 + <td class="text-success">成功</td>
1760 1086
1761 <td> 1087 <td>
1762 <button type="button" class="btn btn-success btn_info">查看详情</button> 1088 <button type="button" class="btn btn-success btn_info">查看详情</button>
@@ -1768,61 +1094,126 @@ test_add_year_2 (test_02_system_management.Test03Year)銵>仃韐乓 @@ -1768,61 +1094,126 @@ test_add_year_2 (test_02_system_management.Test03Year)銵>仃韐乓
1768 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all"> 1094 <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1769 1095
1770 1096
1771 - <pre>用例入参:{'name': 'py自动化教师20221222_23:09:24_1', 'number': '17398240152', 'departmentIds': ['1605942164523970561'], 'phone': '17398240152', 'classInfoId': '', 'idType': 'identity_card', 'idNumber': '660101198601061863', 'gender': 0, 'entryTime': 1663084800000, 'email': '34662811782@163.com', 'professionalIds': [], 'roleIds': ['968160378070540291'], 'permissionScope': '1605942164523970561'} 1097 + <pre>用例入参:{'name': 'py自动化教师20221224_20:30:54_1', 'number': '13366742080', 'departmentIds': ['1606628416684421122'], 'phone': '13366742080', 'classInfoId': '', 'idType': 'identity_card', 'idNumber': '110101198208191584', 'gender': 0, 'entryTime': 1663084800000, 'email': '57370113422@163.com', 'professionalIds': [], 'roleIds': ['968160378070540291'], 'permissionScope': '1606628416684421122'}
1772 预期结果: {'msg': 'success', 'code': 200, 'data': True} 1098 预期结果: {'msg': 'success', 'code': 200, 'data': True}
1773 -实际结果: {'msg': '该身份证号不合法,请确认', 'code': 500, 'data': None}  
1774 -test_add_class_info_1 (test_03_teaching_affairs.Test01CTeacher)执行——>【失败】 1099 +实际结果: {'msg': 'success', 'code': 200, 'data': True}
  1100 +test_add_teacher_info_1 (test_03_teaching_affairs.Test01CTeacher)执行——>【通过】
1775 </pre> 1101 </pre>
1776 1102
1777 -  
1778 - <pre>Traceback (most recent call last):  
1779 -</pre>  
1780 1103
  1104 + </td>
  1105 + </tr>
  1106 +
  1107 + <tr>
  1108 + <td>30</td>
  1109 + <td class="Test01CTeacher">Test01CTeacher</td>
  1110 + <td>test_add_teacher_info_2</td>
  1111 + <td>教师姓名不能为空</td>
  1112 + <td>0.28s</td>
  1113 +
  1114 + <td class="text-success">成功</td>
  1115 +
  1116 + <td>
  1117 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1118 + </td>
  1119 + </tr>
1781 1120
1782 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor  
1783 - yield  
1784 -</pre>  
1785 - 1121 + <tr class="test_log">
1786 1122
1787 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 615, in run  
1788 - testMethod()  
1789 -</pre> 1123 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1790 1124
1791 1125
1792 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/common/myddt.py", line 145, in wrapper  
1793 - return func(self, *args, **kwargs) 1126 + <pre>用例入参:{'name': '', 'number': '17320079916', 'departmentIds': ['1606628416684421122'], 'phone': '17320079916', 'classInfoId': '', 'idType': 'identity_card', 'idNumber': '620101194711091179', 'gender': 0, 'entryTime': 1663084800000, 'email': '19769147857@163.com', 'professionalIds': [], 'roleIds': ['968160378070540291'], 'permissionScope': '1606628416684421122'}
  1127 +预期结果: {'msg': '教师姓名不能为空', 'code': 500, 'data': None}
  1128 +实际结果: {'msg': '教师姓名不能为空', 'code': 500, 'data': None}
  1129 +test_add_teacher_info_2 (test_03_teaching_affairs.Test01CTeacher)执行——>【通过】
1794 </pre> 1130 </pre>
1795 1131
1796 -  
1797 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_03_teaching_affairs.py", line 106, in test_add_class_info  
1798 - raise e  
1799 -</pre>  
1800 1132
  1133 + </td>
  1134 + </tr>
  1135 +
  1136 + <tr>
  1137 + <td>31</td>
  1138 + <td class="Test01CTeacher">Test01CTeacher</td>
  1139 + <td>test_add_teacher_info_3</td>
  1140 + <td>教师手机号不能为空</td>
  1141 + <td>0.299s</td>
  1142 +
  1143 + <td class="text-success">成功</td>
  1144 +
  1145 + <td>
  1146 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1147 + </td>
  1148 + </tr>
1801 1149
1802 - <pre> File "/Users/shitou/工作/code/work/workAi/yxly/testcase/test_03_teaching_affairs.py", line 99, in test_add_class_info  
1803 - self.assertEqual(expected['msg'], res['msg'])  
1804 -</pre> 1150 + <tr class="test_log">
  1151 +
  1152 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1805 1153
1806 1154
1807 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 839, in assertEqual  
1808 - assertion_func(first, second, msg=msg) 1155 + <pre>用例入参:{'name': 'py自动化教师20221224_20:30:55_3', 'number': '', 'departmentIds': ['1606628416684421122'], 'phone': '', 'classInfoId': '', 'idType': 'identity_card', 'idNumber': '500101194009260414', 'gender': 0, 'entryTime': 1663084800000, 'email': '86463050788@163.com', 'professionalIds': [], 'roleIds': ['968160378070540291'], 'permissionScope': '1606628416684421122'}
  1156 +预期结果: {'msg': '教师手机号不能为空', 'code': 500, 'data': None}
  1157 +实际结果: {'msg': '教师手机号不能为空', 'code': 500, 'data': None}
  1158 +test_add_teacher_info_3 (test_03_teaching_affairs.Test01CTeacher)执行——>【通过】
1809 </pre> 1159 </pre>
1810 1160
  1161 +
  1162 + </td>
  1163 + </tr>
  1164 +
  1165 + <tr>
  1166 + <td>32</td>
  1167 + <td class="Test02Class">Test02Class</td>
  1168 + <td>test_add_class_info_1</td>
  1169 + <td>新增班级</td>
  1170 + <td>0.33s</td>
  1171 +
  1172 + <td class="text-success">成功</td>
  1173 +
  1174 + <td>
  1175 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1176 + </td>
  1177 + </tr>
1811 1178
1812 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 1220, in assertMultiLineEqual  
1813 - self.fail(self._formatMessage(msg, standardMsg))  
1814 -</pre> 1179 + <tr class="test_log">
  1180 +
  1181 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
1815 1182
1816 1183
1817 - <pre> File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 680, in fail  
1818 - raise self.failureException(msg) 1184 + <pre>用例入参:{'name': 'py自动化班级20221224_20:30:58_1', 'educationalSystem': '3', 'startSchoolYear': 2022, 'professionalId': '1606628430462709762', 'teacherId': '1606628483533238273', 'departmentId': '1606628416684421122'}
  1185 +预期结果: {'msg': 'success', 'code': 200, 'data': True}
  1186 +实际结果: {'msg': 'success', 'code': 200, 'data': True}
  1187 +test_add_class_info_1 (test_03_teaching_affairs.Test02Class)执行——>【通过】
1819 </pre> 1188 </pre>
1820 1189
  1190 +
  1191 + </td>
  1192 + </tr>
  1193 +
  1194 + <tr>
  1195 + <td>33</td>
  1196 + <td class="Test03Course">Test03Course</td>
  1197 + <td>test_add_course_info_1</td>
  1198 + <td>新增课程</td>
  1199 + <td>0.352s</td>
  1200 +
  1201 + <td class="text-success">成功</td>
  1202 +
  1203 + <td>
  1204 + <button type="button" class="btn btn-success btn_info">查看详情</button>
  1205 + </td>
  1206 + </tr>
1821 1207
1822 - <pre>AssertionError: 'success' != '该身份证号不合法,请确认'  
1823 -- success  
1824 -+ 该身份证号不合法,请确认 1208 + <tr class="test_log">
  1209 +
  1210 + <td colspan="7" class="small text-muted" style=" word-wrap:break-word; word-break:break-all">
  1211 +
1825 1212
  1213 + <pre>用例入参:{'name': 'py自动化课程20221224_20:31:01_1', 'practiceType': 'know', 'departmentId': '1606628416684421122', 'credit': 3, 'property': 'elective', 'creditHour': '5', 'termIds': ['1606628470845468674'], 'professionalIds': ['1606628430462709762'], 'yearId': '49'}
  1214 +预期结果: {'msg': 'success', 'code': 200, 'data': True}
  1215 +实际结果: {'msg': 'success', 'code': 200, 'data': True}
  1216 +test_add_course_info_1 (test_03_teaching_affairs.Test03Course)执行——>【通过】
1826 </pre> 1217 </pre>
1827 1218
1828 1219
@@ -1954,8 +1345,8 @@ test_add_class_info_1 (test_03_teaching_affairs.Test01CTeacher)銵> @@ -1954,8 +1345,8 @@ test_add_class_info_1 (test_03_teaching_affairs.Test01CTeacher)銵>
1954 show: false 1345 show: false
1955 }, 1346 },
1956 data: [ 1347 data: [
1957 - {value: 10, name: '通过'},  
1958 - {value: 16, name: '失败'}, 1348 + {value: 33, name: '通过'},
  1349 + {value: 0, name: '失败'},
1959 {value: 0, name: '错误'}, 1350 {value: 0, name: '错误'},
1960 {value: 0, name: '跳过'} 1351 {value: 0, name: '跳过'}
1961 ] 1352 ]
@@ -1976,8 +1367,8 @@ test_add_class_info_1 (test_03_teaching_affairs.Test01CTeacher)銵> @@ -1976,8 +1367,8 @@ test_add_class_info_1 (test_03_teaching_affairs.Test01CTeacher)銵>
1976 { 1367 {
1977 name: '测试结果', 1368 name: '测试结果',
1978 type: 'gauge', 1369 type: 'gauge',
1979 - detail: {formatter: '38.46%'},  
1980 - data: [{value: '38.46', name: '用例通过率'}], 1370 + detail: {formatter: '100.00%'},
  1371 + data: [{value: '100.00', name: '用例通过率'}],
1981 axisLine: { 1372 axisLine: {
1982 lineStyle: { 1373 lineStyle: {
1983 color: [ 1374 color: [
@@ -40,5 +40,6 @@ runner.run() @@ -40,5 +40,6 @@ runner.run()
40 # port=465, 40 # port=465,
41 # user="shishut@workai.com.cn", 41 # user="shishut@workai.com.cn",
42 # password="mKh50p89DqvqJ7pd", 42 # password="mKh50p89DqvqJ7pd",
43 -# to_addrs=["1171621168@qq.com", "shishut@workai.com.cn"] 43 +# to_addrs=["shishut@workai.com.cn"]
  44 +# # to_addrs=["shishut@workai.com.cn", "wangf@workai.com.cn"]
44 # ) 45 # )
@@ -138,7 +138,6 @@ class Test01Department(unittest.TestCase): @@ -138,7 +138,6 @@ class Test01Department(unittest.TestCase):
138 HandleLog.log.info("用例{},执行通过".format(select_case["title"])) 138 HandleLog.log.info("用例{},执行通过".format(select_case["title"]))
139 139
140 140
141 -  
142 # ==================专业相关的用例================== 141 # ==================专业相关的用例==================
143 @myddt.ddt 142 @myddt.ddt
144 class Test02Specialty(unittest.TestCase): 143 class Test02Specialty(unittest.TestCase):
@@ -258,6 +257,7 @@ class Test03Year(unittest.TestCase): @@ -258,6 +257,7 @@ class Test03Year(unittest.TestCase):
258 headers["Authorization"] = self.token 257 headers["Authorization"] = self.token
259 req = requests.request(method=case["method"], url=url, json=data, headers=headers) 258 req = requests.request(method=case["method"], url=url, json=data, headers=headers)
260 res = req.json() 259 res = req.json()
  260 +
261 print("用例入参:{}".format(data)) 261 print("用例入参:{}".format(data))
262 print("预期结果:", expected) 262 print("预期结果:", expected)
263 print("实际结果:", res) 263 print("实际结果:", res)
@@ -23,7 +23,8 @@ from tools.fixture import SelectData @@ -23,7 +23,8 @@ 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") 26 +TeachingAffairs_path = os.path.join(DataExcel_Path, "teaching_affairs") # 教务系统管理列表
  27 +System_path = os.path.join(DataExcel_Path, "system") # 系统管理列表
27 28
28 29
29 # ==================教师相关的用例================== 30 # ==================教师相关的用例==================
@@ -33,14 +34,6 @@ class Test01CTeacher(unittest.TestCase): @@ -33,14 +34,6 @@ class Test01CTeacher(unittest.TestCase):
33 # ---获取添加教师用例 34 # ---获取添加教师用例
34 add_teacher = Excel(os.path.join(TeachingAffairs_path, "test_03_teacher.xlsx"), "add_teacher") 35 add_teacher = Excel(os.path.join(TeachingAffairs_path, "test_03_teacher.xlsx"), "add_teacher")
35 add_teacher_case = add_teacher.read_excel() 36 add_teacher_case = add_teacher.read_excel()
36 - # ---获取添加院系Excel表格  
37 - select_department_excel = Excel(os.path.join(os.path.join(DataExcel_Path, "system"), "test_02_department.xlsx"),  
38 - "select_department")  
39 - select_url = select_department_excel.read_excel_location("C2")  
40 - department_list = SelectData(str(select_url))  
41 - department_json = department_list.select_list()  
42 - # 获取院系id  
43 - department_id = jsonpath(department_json, "$..id")[0]  
44 37
45 @classmethod 38 @classmethod
46 def setUpClass(cls): 39 def setUpClass(cls):
@@ -51,6 +44,15 @@ class Test01CTeacher(unittest.TestCase): @@ -51,6 +44,15 @@ class Test01CTeacher(unittest.TestCase):
51 # 获取token 44 # 获取token
52 cls.token = LoginToken.login_token() 45 cls.token = LoginToken.login_token()
53 46
  47 + # ---获取添加院系Excel表格
  48 + select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
  49 + "select_department")
  50 + read_excel = select_department_excel.read_excel_location("C2")
  51 + department_list = SelectData(str(read_excel))
  52 + department_json = department_list.select_list()
  53 + # 获取院系id
  54 + cls.department_id = jsonpath(department_json, "$..id")[0]
  55 +
54 def setUp(self): 56 def setUp(self):
55 """单条用例执行前执行的函数""" 57 """单条用例执行前执行的函数"""
56 new_time = time.strftime("%Y%m%d_%H:%M:%S") 58 new_time = time.strftime("%Y%m%d_%H:%M:%S")
@@ -63,7 +65,7 @@ class Test01CTeacher(unittest.TestCase): @@ -63,7 +65,7 @@ class Test01CTeacher(unittest.TestCase):
63 # 新增教师 65 # 新增教师
64 # ==================================================================== 66 # ====================================================================
65 @data(*add_teacher_case) 67 @data(*add_teacher_case)
66 - def test_add_class_info(self, case): 68 + def test_add_teacher_info(self, case):
67 69
68 """新增教师用例""" 70 """新增教师用例"""
69 url = conf.get("url", "url_ip") + case['url'] 71 url = conf.get("url", "url_ip") + case['url']
@@ -94,7 +96,6 @@ class Test01CTeacher(unittest.TestCase): @@ -94,7 +96,6 @@ class Test01CTeacher(unittest.TestCase):
94 print("预期结果:", expected) 96 print("预期结果:", expected)
95 print("实际结果:", res) 97 print("实际结果:", res)
96 # 断言 98 # 断言
97 - # 断言  
98 try: 99 try:
99 self.assertEqual(expected['msg'], res['msg']) 100 self.assertEqual(expected['msg'], res['msg'])
100 self.assertEqual(expected['code'], res['code']) 101 self.assertEqual(expected['code'], res['code'])
@@ -112,7 +113,6 @@ class Test01CTeacher(unittest.TestCase): @@ -112,7 +113,6 @@ class Test01CTeacher(unittest.TestCase):
112 HandleLog.log.info("用例{},执行通过".format(case["title"])) 113 HandleLog.log.info("用例{},执行通过".format(case["title"]))
113 114
114 115
115 -'''  
116 # ==================班级相关的用例================== 116 # ==================班级相关的用例==================
117 @ddt 117 @ddt
118 class Test02Class(unittest.TestCase): 118 class Test02Class(unittest.TestCase):
@@ -123,7 +123,259 @@ class Test02Class(unittest.TestCase): @@ -123,7 +123,259 @@ class Test02Class(unittest.TestCase):
123 # ==================================================================== 123 # ====================================================================
124 # 新增班级 124 # 新增班级
125 # ==================================================================== 125 # ====================================================================
  126 + @classmethod
  127 + def setUpClass(cls):
  128 + """
  129 + 用例类执行前执行的函数
  130 + :return:token
  131 + """
  132 + # 获取token
  133 + cls.token = LoginToken.login_token()
  134 +
  135 + # ---获取添加院系Excel表格
  136 + select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
  137 + "select_department")
  138 + read_department_excel = select_department_excel.read_excel_location("C2")
  139 + department_list = SelectData(str(read_department_excel))
  140 + department_json = department_list.select_list()
  141 + cls.department_id = jsonpath(department_json, "$..id")[0] # 获取院系id
  142 + # 获取查看专业id
  143 + select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"),
  144 + "select_specialty")
  145 + read_specialty_excel = select_specialty_excel.read_excel_location("C2")
  146 + specialty_list = SelectData(str(read_specialty_excel))
  147 + specialty_json = specialty_list.select_list()
  148 + cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
  149 + # 获取查看教师id
  150 + select_teacher_excel = Excel(os.path.join(TeachingAffairs_path, "test_03_teacher.xlsx"),
  151 + "select_teacher")
  152 + read_teacher_excel = select_teacher_excel.read_excel_location("C2")
  153 + teacher_list = SelectData(str(read_teacher_excel))
  154 + teacher_json = teacher_list.select_list()
  155 + cls.teacher_id = jsonpath(teacher_json, "$..id")[0] # 获取教师id
  156 +
  157 + def setUp(self):
  158 + """单条用例执行前执行的函数"""
  159 + new_time = time.strftime("%Y%m%d_%H:%M:%S")
  160 + # 随机班级名称
  161 + self.class_name = "py自动化班级" + new_time
  162 +
126 @data(*add_class_case) 163 @data(*add_class_case)
127 def test_add_class_info(self, case): 164 def test_add_class_info(self, case):
128 """新增班级用例""" 165 """新增班级用例"""
  166 + url = conf.get("url", "url_ip") + case["url"]
  167 + # 准备数据
  168 + if "#name#" in case["data"]:
  169 + case["data"] = case["data"].replace("#name#", str(self.class_name + "_" + str(case["id"])))
  170 + if "#professionalId#" in case["data"]:
  171 + case["data"] = case["data"].replace("#professionalId#", str(self.professionalId))
  172 + if "#teacherId#" in case["data"]:
  173 + case["data"] = case["data"].replace("#teacherId#", str(self.teacher_id))
  174 + if "#departmentId#" in case["data"]:
  175 + case["data"] = case["data"].replace("#departmentId#", str(self.department_id))
  176 + data = json.loads(case["data"])
  177 + expected = json.loads(case["expected"])
  178 + # 调用接口
  179 + headers = {}
  180 + headers["Authorization"] = self.token
  181 + response = requests.request(url=url, method=case["method"], json=data, headers=headers)
  182 + res = response.json()
  183 + print("用例入参:{}".format(data))
  184 + print("预期结果:", expected)
  185 + print("实际结果:", res)
  186 + # 断言
  187 + try:
  188 + self.assertEqual(expected['msg'], res['msg'])
  189 + self.assertEqual(expected['code'], res['code'])
  190 + except AssertionError as e:
  191 + # 写入Excel
  192 + self.add_class.write_excel(row=case["id"] + 1, column=7, value="不通过")
  193 + HandleLog.log.error("用例标题{},不通过".format(case['title']))
  194 + HandleLog.log.exception(e)
  195 + raise e
  196 + else:
  197 + self.add_class.write_excel(row=case["id"] + 1, column=7, value="通过")
  198 + # 将创建使用的数据写入到excel表格中
  199 + self.add_class.write_excel(row=case["id"] + 1, column=9,
  200 + value=case["data"])
  201 + HandleLog.log.info("用例{},执行通过".format(case["title"]))
  202 +
  203 +
  204 +# ==================实践课程相关的用例==================
  205 +@ddt
  206 +class Test03Course(unittest.TestCase):
  207 + """班级相关"""
  208 + add_course = Excel(os.path.join(TeachingAffairs_path, "test_03_course.xlsx"), "add_course")
  209 + add_course_case = add_course.read_excel()
  210 +
  211 + # ====================================================================
  212 + # 新增课程
  213 + # ====================================================================
  214 + @classmethod
  215 + def setUpClass(cls):
  216 + """
  217 + 用例类执行前执行的函数
  218 + :return:token
  219 + """
  220 + # 获取token
  221 + cls.token = LoginToken.login_token()
  222 +
  223 + # ---获取添加院系Excel表格
  224 + select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
  225 + "select_department")
  226 + read_department_excel = select_department_excel.read_excel_location("C2")
  227 + department_list = SelectData(str(read_department_excel))
  228 + department_json = department_list.select_list()
  229 + cls.department_id = jsonpath(department_json, "$..id")[0] # 获取院系id
  230 + # 获取查看专业id
  231 + select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"),
  232 + "select_specialty")
  233 + read_specialty_excel = select_specialty_excel.read_excel_location("C2")
  234 + specialty_list = SelectData(str(read_specialty_excel))
  235 + specialty_json = specialty_list.select_list()
  236 + cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
  237 + # 获取查看学期id
  238 + select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"),
  239 + "select_term")
  240 + read_term_excel = select_term_excel.read_excel_location("C2")
  241 + term_list = SelectData(str(read_term_excel))
  242 + term_json = term_list.select_list()
  243 + cls.terms_id = jsonpath(term_json, "$..id")[0] # 获取学年学期id
  244 +
  245 + def setUp(self):
  246 + """单条用例执行前执行的函数"""
  247 + new_time = time.strftime("%Y%m%d_%H:%M:%S")
  248 + # 随机班级名称
  249 + self.course_name = "py自动化课程" + new_time
  250 +
  251 + @data(*add_course_case)
  252 + def test_add_course_info(self, case):
  253 + """新增课程用例"""
  254 + url = conf.get("url", "url_ip") + case["url"]
  255 + # 准备数据
  256 + if "#name#" in case["data"]:
  257 + case["data"] = case["data"].replace("#name#", str(self.course_name + "_" + str(case["id"])))
  258 + if "#departmentId#" in case["data"]:
  259 + case["data"] = case["data"].replace("#departmentId#", str(self.department_id))
  260 + if "#professionalId#" in case["data"]:
  261 + case["data"] = case["data"].replace("#professionalId#", str(self.professionalId))
  262 + if "#termIds#" in case["data"]:
  263 + case["data"] = case["data"].replace("#termIds#", str(self.terms_id))
  264 +
  265 + data = json.loads(case["data"])
  266 + expected = json.loads(case["expected"])
  267 + # 调用接口
  268 + headers = {}
  269 + headers["Authorization"] = self.token
  270 + response = requests.request(url=url, method=case["method"], json=data, headers=headers)
  271 + res = response.json()
  272 + print("用例入参:{}".format(data))
  273 + print("预期结果:", expected)
  274 + print("实际结果:", res)
  275 + # 断言
  276 + try:
  277 + self.assertEqual(expected['msg'], res['msg'])
  278 + self.assertEqual(expected['code'], res['code'])
  279 + except AssertionError as e:
  280 + # 写入Excel
  281 + self.add_course.write_excel(row=case["id"] + 1, column=7, value="不通过")
  282 + HandleLog.log.error("用例标题{},不通过".format(case['title']))
  283 + HandleLog.log.exception(e)
  284 + raise e
  285 + else:
  286 + self.add_course.write_excel(row=case["id"] + 1, column=7, value="通过")
  287 + # 将创建使用的数据写入到excel表格中
  288 + self.add_course.write_excel(row=case["id"] + 1, column=9,
  289 + value=case["data"])
  290 + HandleLog.log.info("用例{},执行通过".format(case["title"]))
  291 +
  292 +
  293 +'''
  294 +# ==================实践学生相关的用例==================
  295 +@ddt
  296 +class Test03Student(unittest.TestCase):
  297 + """班级相关"""
  298 + add_course = Excel(os.path.join(TeachingAffairs_path, "test_03_student.xlsx"), "add_course")
  299 + add_course_case = add_course.read_excel()
  300 +
  301 + # ====================================================================
  302 + # 新增学生
  303 + # ====================================================================
  304 + @classmethod
  305 + def setUpClass(cls):
  306 + """
  307 + 用例类执行前执行的函数
  308 + :return:token
  309 + """
  310 + # 获取token
  311 + cls.token = LoginToken.login_token()
  312 +
  313 + # ---获取添加院系Excel表格
  314 + select_department_excel = Excel(os.path.join(System_path, "test_02_department.xlsx"),
  315 + "select_department")
  316 + read_department_excel = select_department_excel.read_excel_location("C2")
  317 + department_list = SelectData(str(read_department_excel))
  318 + department_json = department_list.select_list()
  319 + cls.department_id = jsonpath(department_json, "$..id")[0] # 获取院系id
  320 + # 获取查看专业id
  321 + select_specialty_excel = Excel(os.path.join(System_path, "test_02_specialty.xlsx"),
  322 + "select_specialty")
  323 + read_specialty_excel = select_specialty_excel.read_excel_location("C2")
  324 + specialty_list = SelectData(str(read_specialty_excel))
  325 + specialty_json = specialty_list.select_list()
  326 + cls.professionalId = jsonpath(specialty_json, "$..id")[0] # 获取专业id
  327 + # 获取查看学期id
  328 + select_term_excel = Excel(os.path.join(System_path, "test_02_term.xlsx"),
  329 + "select_term")
  330 + read_term_excel = select_term_excel.read_excel_location("C2")
  331 + term_list = SelectData(str(read_term_excel))
  332 + term_json = term_list.select_list()
  333 + cls.terms_id = jsonpath(term_json, "$..id")[0] # 获取学年学期id
  334 +
  335 + def setUp(self):
  336 + """单条用例执行前执行的函数"""
  337 + new_time = time.strftime("%Y%m%d_%H:%M:%S")
  338 + # 随机班级名称
  339 + self.course_name = "py自动化课程" + new_time
  340 +
  341 + @data(*add_course_case)
  342 + def test_add_course_info(self, case):
  343 + """新增课程用例"""
  344 + url = conf.get("url", "url_ip") + case["url"]
  345 + # 准备数据
  346 + if "#name#" in case["data"]:
  347 + case["data"] = case["data"].replace("#name#", str(self.course_name + "_" + str(case["id"])))
  348 + if "#departmentId#" in case["data"]:
  349 + case["data"] = case["data"].replace("#departmentId#", str(self.department_id))
  350 + 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))
  354 +
  355 + data = json.loads(case["data"])
  356 + expected = json.loads(case["expected"])
  357 + # 调用接口
  358 + headers = {}
  359 + headers["Authorization"] = self.token
  360 + response = requests.request(url=url, method=case["method"], json=data, headers=headers)
  361 + res = response.json()
  362 + print("用例入参:{}".format(data))
  363 + print("预期结果:", expected)
  364 + print("实际结果:", res)
  365 + # 断言
  366 + try:
  367 + self.assertEqual(expected['msg'], res['msg'])
  368 + self.assertEqual(expected['code'], res['code'])
  369 + except AssertionError as e:
  370 + # 写入Excel
  371 + self.add_course.write_excel(row=case["id"] + 1, column=7, value="不通过")
  372 + HandleLog.log.error("用例标题{},不通过".format(case['title']))
  373 + HandleLog.log.exception(e)
  374 + raise e
  375 + else:
  376 + self.add_course.write_excel(row=case["id"] + 1, column=7, value="通过")
  377 + # 将创建使用的数据写入到excel表格中
  378 + self.add_course.write_excel(row=case["id"] + 1, column=9,
  379 + value=case["data"])
  380 + HandleLog.log.info("用例{},执行通过".format(case["title"]))
129 ''' 381 '''
@@ -19,11 +19,8 @@ import os @@ -19,11 +19,8 @@ import os
19 import time 19 import time
20 import random 20 import random
21 21
22 -"""  
23 -获取json字符串  
24 -"""  
25 -  
26 22
  23 +# ==================获取json字符串==========
27 class SelectData(object): 24 class SelectData(object):
28 def __init__(self, url): 25 def __init__(self, url):
29 self.url = url 26 self.url = url
@@ -41,11 +38,7 @@ class SelectData(object): @@ -41,11 +38,7 @@ class SelectData(object):
41 return res 38 return res
42 39
43 40
44 -"""  
45 -随机生成手机号  
46 -"""  
47 -  
48 - 41 +# ==================随机生成手机号==========
49 class RandomPhone: 42 class RandomPhone:
50 43
51 # 随机生成手机号 44 # 随机生成手机号
@@ -56,11 +49,7 @@ class RandomPhone: @@ -56,11 +49,7 @@ class RandomPhone:
56 return random.choice(prelist) + "".join(random.choice("0123456789") for i in range(8)) 49 return random.choice(prelist) + "".join(random.choice("0123456789") for i in range(8))
57 50
58 51
59 -"""  
60 -随机生成身份证号  
61 -"""  
62 -  
63 - 52 +# ==================随机生成身份证号========
64 class RandomIdentification(object): 53 class RandomIdentification(object):
65 54
66 def ran(self): 55 def ran(self):
@@ -104,11 +93,7 @@ class RandomIdentification(object): @@ -104,11 +93,7 @@ class RandomIdentification(object):
104 return ran + mat[summat % 11] 93 return ran + mat[summat % 11]
105 94
106 95
107 -"""  
108 -随机生成邮箱  
109 -"""  
110 -  
111 - 96 +# ==================随机生成邮箱号==========
112 class RandomEmail(object): 97 class RandomEmail(object):
113 @staticmethod 98 @staticmethod
114 def rand_email(): 99 def rand_email():
@@ -116,6 +101,7 @@ class RandomEmail(object): @@ -116,6 +101,7 @@ class RandomEmail(object):
116 # print(str(email_len) + "@163.com") 101 # print(str(email_len) + "@163.com")
117 return str(email_len) + "@163.com" 102 return str(email_len) + "@163.com"
118 103
  104 +
119 if __name__ == '__main__': 105 if __name__ == '__main__':
120 print(RandomIdentification().ran_end()) 106 print(RandomIdentification().ran_end())
121 # Val(Ran().ran_end()) 107 # Val(Ran().ran_end())
@@ -13,6 +13,7 @@ from common.handle_config import conf @@ -13,6 +13,7 @@ from common.handle_config import conf
13 from jsonpath import jsonpath 13 from jsonpath import jsonpath
14 14
15 15
  16 +# ==================获取登陆token========
16 class LoginToken: 17 class LoginToken:
17 def login_token(): 18 def login_token():
18 # 登陆获取token 19 # 登陆获取token
注册登录 后发表评论