正在显示
26 个修改的文件
包含
598 行增加
和
93 行删除
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <project version="4"> |
3 | 3 | <component name="ChangeListManager"> |
4 | - <list default="true" id="129454fc-5415-4c7e-9855-d0293355ede5" name="Default Changelist" comment="版本:1.0.13 1.封装生成身份证"年""> | |
4 | + <list default="true" id="129454fc-5415-4c7e-9855-d0293355ede5" name="Default Changelist" comment="1.项目维护"> | |
5 | + <change afterPath="$PROJECT_DIR$/data/Internship_manage/test_08_log_marking.xlsx" afterDir="false" /> | |
6 | + <change afterPath="$PROJECT_DIR$/data/Internship_manage/test_09_leave_record.xlsx" afterDir="false" /> | |
5 | 7 | <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> |
8 | + <change beforePath="$PROJECT_DIR$/conf/config.ini" beforeDir="false" afterPath="$PROJECT_DIR$/conf/config.ini" afterDir="false" /> | |
6 | 9 | <change beforePath="$PROJECT_DIR$/data/Internship_manage/test_07_apply_audit.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/Internship_manage/test_07_apply_audit.xlsx" afterDir="false" /> |
7 | 10 | <change beforePath="$PROJECT_DIR$/data/Internship_preparation/test_04_internship_plan.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/Internship_preparation/test_04_internship_plan.xlsx" afterDir="false" /> |
8 | 11 | <change beforePath="$PROJECT_DIR$/data/Internship_preparation/test_05_internship_project.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/Internship_preparation/test_05_internship_project.xlsx" afterDir="false" /> |
... | ... | @@ -15,9 +18,16 @@ |
15 | 18 | <change beforePath="$PROJECT_DIR$/data/teaching_affairs/test_03_student.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/teaching_affairs/test_03_student.xlsx" afterDir="false" /> |
16 | 19 | <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" /> |
17 | 20 | <change beforePath="$PROJECT_DIR$/data/test_01_login.xlsx" beforeDir="false" afterPath="$PROJECT_DIR$/data/test_01_login.xlsx" afterDir="false" /> |
18 | - <change beforePath="$PROJECT_DIR$/logs/log.log.2022-12-24" beforeDir="false" /> | |
19 | 21 | <change beforePath="$PROJECT_DIR$/report/history.json" beforeDir="false" afterPath="$PROJECT_DIR$/report/history.json" afterDir="false" /> |
22 | + <change beforePath="$PROJECT_DIR$/report/report2.html" beforeDir="false" afterPath="$PROJECT_DIR$/report/report2.html" afterDir="false" /> | |
23 | + <change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" /> | |
24 | + <change beforePath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_03_teaching_affairs.py" afterDir="false" /> | |
25 | + <change beforePath="$PROJECT_DIR$/testcase/test_04_Internship_preparation.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_04_Internship_preparation.py" afterDir="false" /> | |
26 | + <change beforePath="$PROJECT_DIR$/testcase/test_05_student_practice.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_05_student_practice.py" afterDir="false" /> | |
20 | 27 | <change beforePath="$PROJECT_DIR$/testcase/test_06_internship_manage.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_06_internship_manage.py" afterDir="false" /> |
28 | + <change beforePath="$PROJECT_DIR$/tools/fixture.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/fixture.py" afterDir="false" /> | |
29 | + <change beforePath="$PROJECT_DIR$/tools/function.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/function.py" afterDir="false" /> | |
30 | + <change beforePath="$PROJECT_DIR$/tools/handle_token.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools/handle_token.py" afterDir="false" /> | |
21 | 31 | </list> |
22 | 32 | <option name="SHOW_DIALOG" value="false" /> |
23 | 33 | <option name="HIGHLIGHT_CONFLICTS" value="true" /> |
... | ... | @@ -68,19 +78,19 @@ |
68 | 78 | <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" /> |
69 | 79 | <property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> |
70 | 80 | <property name="WebServerToolWindowFactoryState" value="false" /> |
71 | - <property name="last_opened_file_path" value="$PROJECT_DIR$/data/Internship_manage" /> | |
81 | + <property name="last_opened_file_path" value="$PROJECT_DIR$/data/Internship_preparation" /> | |
72 | 82 | <property name="settings.editor.selected.configurable" value="preferences.pluginManager" /> |
73 | 83 | </component> |
74 | 84 | <component name="RecentsManager"> |
75 | 85 | <key name="CopyFile.RECENT_KEYS"> |
86 | + <recent name="$PROJECT_DIR$/data/Internship_preparation" /> | |
76 | 87 | <recent name="$PROJECT_DIR$/data/Internship_manage" /> |
77 | 88 | <recent name="$PROJECT_DIR$/data/student_practice" /> |
78 | - <recent name="$PROJECT_DIR$/data/Internship_preparation" /> | |
79 | 89 | <recent name="$PROJECT_DIR$/data/teaching_affairs" /> |
80 | 90 | <recent name="$PROJECT_DIR$/tools" /> |
81 | 91 | </key> |
82 | 92 | </component> |
83 | - <component name="RunManager" selected="Python tests.Unittests in test_06_internship_manage.py"> | |
93 | + <component name="RunManager" selected="Python.run"> | |
84 | 94 | <configuration name="aaa" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true"> |
85 | 95 | <module name="yxly2" /> |
86 | 96 | <option name="INTERPRETER_OPTIONS" value="" /> |
... | ... | @@ -186,11 +196,11 @@ |
186 | 196 | </list> |
187 | 197 | <recent_temporary> |
188 | 198 | <list> |
189 | - <item itemvalue="Python tests.Unittests in test_06_internship_manage.py" /> | |
190 | 199 | <item itemvalue="Python.run" /> |
191 | - <item itemvalue="Python.aaa" /> | |
192 | 200 | <item itemvalue="Python.handle_token" /> |
201 | + <item itemvalue="Python tests.Unittests in test_06_internship_manage.py" /> | |
193 | 202 | <item itemvalue="Python tests.Unittests in test_04_Internship_preparation.py" /> |
203 | + <item itemvalue="Python.aaa" /> | |
194 | 204 | </list> |
195 | 205 | </recent_temporary> |
196 | 206 | </component> |
... | ... | @@ -239,7 +249,44 @@ |
239 | 249 | <workItem from="1675923047370" duration="1840000" /> |
240 | 250 | <workItem from="1675993944948" duration="19838000" /> |
241 | 251 | <workItem from="1676352585519" duration="649000" /> |
242 | - <workItem from="1676429711639" duration="13811000" /> | |
252 | + <workItem from="1676429711639" duration="16558000" /> | |
253 | + <workItem from="1676533277102" duration="8356000" /> | |
254 | + <workItem from="1676598554552" duration="16514000" /> | |
255 | + <workItem from="1676857239215" duration="17927000" /> | |
256 | + <workItem from="1676943889754" duration="23167000" /> | |
257 | + <workItem from="1677465101095" duration="3714000" /> | |
258 | + <workItem from="1678066872906" duration="15833000" /> | |
259 | + <workItem from="1678342329058" duration="349000" /> | |
260 | + <workItem from="1678440283423" duration="3522000" /> | |
261 | + <workItem from="1678670968785" duration="30552000" /> | |
262 | + <workItem from="1679049143003" duration="2741000" /> | |
263 | + <workItem from="1679302047492" duration="3219000" /> | |
264 | + <workItem from="1679463110512" duration="4971000" /> | |
265 | + <workItem from="1679635698276" duration="13882000" /> | |
266 | + <workItem from="1679999876828" duration="52000" /> | |
267 | + <workItem from="1680076840448" duration="16953000" /> | |
268 | + <workItem from="1683256734428" duration="58000" /> | |
269 | + <workItem from="1683265845967" duration="968000" /> | |
270 | + <workItem from="1686724205755" duration="3232000" /> | |
271 | + <workItem from="1686792679924" duration="2619000" /> | |
272 | + <workItem from="1687138769856" duration="7331000" /> | |
273 | + <workItem from="1687656975195" duration="6855000" /> | |
274 | + <workItem from="1687743036927" duration="4715000" /> | |
275 | + <workItem from="1687830426053" duration="2545000" /> | |
276 | + <workItem from="1687847849541" duration="1370000" /> | |
277 | + <workItem from="1687852053143" duration="1661000" /> | |
278 | + <workItem from="1687855288373" duration="2781000" /> | |
279 | + <workItem from="1687916234000" duration="3333000" /> | |
280 | + <workItem from="1688003499790" duration="3404000" /> | |
281 | + <workItem from="1688104723785" duration="2859000" /> | |
282 | + <workItem from="1688362204086" duration="2377000" /> | |
283 | + <workItem from="1689561559287" duration="2760000" /> | |
284 | + <workItem from="1689644168358" duration="6421000" /> | |
285 | + <workItem from="1689674572646" duration="1719000" /> | |
286 | + <workItem from="1689730508198" duration="11129000" /> | |
287 | + <workItem from="1689816981406" duration="4617000" /> | |
288 | + <workItem from="1689903460923" duration="538000" /> | |
289 | + <workItem from="1690180441280" duration="301000" /> | |
243 | 290 | </task> |
244 | 291 | <task id="LOCAL-00001" summary="1.0.0 首次提交"> |
245 | 292 | <created>1671544396986</created> |
... | ... | @@ -395,7 +442,14 @@ |
395 | 442 | <option name="project" value="LOCAL" /> |
396 | 443 | <updated>1675679274029</updated> |
397 | 444 | </task> |
398 | - <option name="localTasksCounter" value="23" /> | |
445 | + <task id="LOCAL-00023" summary="版本:1.0.14 1.学生端进行选择开始实习时间 2.生成实习单,当前学生进入实习中"> | |
446 | + <created>1676453939322</created> | |
447 | + <option name="number" value="00023" /> | |
448 | + <option name="presentableId" value="LOCAL-00023" /> | |
449 | + <option name="project" value="LOCAL" /> | |
450 | + <updated>1676453939322</updated> | |
451 | + </task> | |
452 | + <option name="localTasksCounter" value="24" /> | |
399 | 453 | <servers /> |
400 | 454 | </component> |
401 | 455 | <component name="TypeScriptGeneratedFilesManager"> |
... | ... | @@ -446,7 +500,8 @@ |
446 | 500 | <MESSAGE value="版本:1.0.11 1.新增学校审核用例逻辑判断" /> |
447 | 501 | <MESSAGE value="版本:1.0.12 1.优化hr登陆问题" /> |
448 | 502 | <MESSAGE value="版本:1.0.13 1.封装生成身份证"年"" /> |
449 | - <option name="LAST_COMMIT_MESSAGE" value="版本:1.0.13 1.封装生成身份证"年"" /> | |
503 | + <MESSAGE value="版本:1.0.14 1.学生端进行选择开始实习时间 2.生成实习单,当前学生进入实习中" /> | |
504 | + <option name="LAST_COMMIT_MESSAGE" value="版本:1.0.14 1.学生端进行选择开始实习时间 2.生成实习单,当前学生进入实习中" /> | |
450 | 505 | </component> |
451 | 506 | <component name="XDebuggerManager"> |
452 | 507 | <breakpoint-manager> |
... | ... | @@ -503,17 +558,17 @@ |
503 | 558 | </line-breakpoint> |
504 | 559 | <line-breakpoint suspend="THREAD" type="python-line"> |
505 | 560 | <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> |
506 | - <line>291</line> | |
561 | + <line>294</line> | |
507 | 562 | <option name="timeStamp" value="35" /> |
508 | 563 | </line-breakpoint> |
509 | 564 | <line-breakpoint suspend="THREAD" type="python-line"> |
510 | 565 | <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> |
511 | - <line>319</line> | |
566 | + <line>322</line> | |
512 | 567 | <option name="timeStamp" value="37" /> |
513 | 568 | </line-breakpoint> |
514 | 569 | <line-breakpoint suspend="THREAD" type="python-line"> |
515 | 570 | <url>file://$PROJECT_DIR$/testcase/test_03_teaching_affairs.py</url> |
516 | - <line>363</line> | |
571 | + <line>366</line> | |
517 | 572 | <option name="timeStamp" value="38" /> |
518 | 573 | </line-breakpoint> |
519 | 574 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -562,23 +617,13 @@ |
562 | 617 | <option name="timeStamp" value="78" /> |
563 | 618 | </line-breakpoint> |
564 | 619 | <line-breakpoint suspend="THREAD" type="python-line"> |
565 | - <url>file://$PROJECT_DIR$/testcase/test_04_Internship_preparation.py</url> | |
566 | - <line>323</line> | |
567 | - <option name="timeStamp" value="79" /> | |
568 | - </line-breakpoint> | |
569 | - <line-breakpoint suspend="THREAD" type="python-line"> | |
570 | - <url>file://$PROJECT_DIR$/tools/handle_token.py</url> | |
571 | - <line>52</line> | |
572 | - <option name="timeStamp" value="80" /> | |
573 | - </line-breakpoint> | |
574 | - <line-breakpoint suspend="THREAD" type="python-line"> | |
575 | 620 | <url>file://$PROJECT_DIR$/testcase/test_05_student_practice.py</url> |
576 | - <line>109</line> | |
621 | + <line>110</line> | |
577 | 622 | <option name="timeStamp" value="98" /> |
578 | 623 | </line-breakpoint> |
579 | 624 | <line-breakpoint suspend="THREAD" type="python-line"> |
580 | 625 | <url>file://$PROJECT_DIR$/testcase/test_05_student_practice.py</url> |
581 | - <line>101</line> | |
626 | + <line>102</line> | |
582 | 627 | <option name="timeStamp" value="99" /> |
583 | 628 | </line-breakpoint> |
584 | 629 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -588,27 +633,27 @@ |
588 | 633 | </line-breakpoint> |
589 | 634 | <line-breakpoint suspend="THREAD" type="python-line"> |
590 | 635 | <url>file://$PROJECT_DIR$/run.py</url> |
591 | - <line>56</line> | |
636 | + <line>60</line> | |
592 | 637 | <option name="timeStamp" value="101" /> |
593 | 638 | </line-breakpoint> |
594 | 639 | <line-breakpoint suspend="THREAD" type="python-line"> |
595 | 640 | <url>file://$PROJECT_DIR$/run.py</url> |
596 | - <line>52</line> | |
641 | + <line>56</line> | |
597 | 642 | <option name="timeStamp" value="102" /> |
598 | 643 | </line-breakpoint> |
599 | 644 | <line-breakpoint suspend="THREAD" type="python-line"> |
600 | 645 | <url>file://$PROJECT_DIR$/run.py</url> |
601 | - <line>50</line> | |
646 | + <line>54</line> | |
602 | 647 | <option name="timeStamp" value="103" /> |
603 | 648 | </line-breakpoint> |
604 | 649 | <line-breakpoint suspend="THREAD" type="python-line"> |
605 | 650 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
606 | - <line>51</line> | |
651 | + <line>52</line> | |
607 | 652 | <option name="timeStamp" value="106" /> |
608 | 653 | </line-breakpoint> |
609 | 654 | <line-breakpoint suspend="THREAD" type="python-line"> |
610 | 655 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
611 | - <line>83</line> | |
656 | + <line>84</line> | |
612 | 657 | <option name="timeStamp" value="111" /> |
613 | 658 | </line-breakpoint> |
614 | 659 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -618,7 +663,7 @@ |
618 | 663 | </line-breakpoint> |
619 | 664 | <line-breakpoint suspend="THREAD" type="python-line"> |
620 | 665 | <url>file://$PROJECT_DIR$/tools/handle_token.py</url> |
621 | - <line>49</line> | |
666 | + <line>50</line> | |
622 | 667 | <option name="timeStamp" value="116" /> |
623 | 668 | </line-breakpoint> |
624 | 669 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -628,27 +673,27 @@ |
628 | 673 | </line-breakpoint> |
629 | 674 | <line-breakpoint suspend="THREAD" type="python-line"> |
630 | 675 | <url>file://$PROJECT_DIR$/tools/handle_token.py</url> |
631 | - <line>85</line> | |
676 | + <line>86</line> | |
632 | 677 | <option name="timeStamp" value="122" /> |
633 | 678 | </line-breakpoint> |
634 | 679 | <line-breakpoint suspend="THREAD" type="python-line"> |
635 | 680 | <url>file://$PROJECT_DIR$/tools/handle_token.py</url> |
636 | - <line>92</line> | |
681 | + <line>93</line> | |
637 | 682 | <option name="timeStamp" value="123" /> |
638 | 683 | </line-breakpoint> |
639 | 684 | <line-breakpoint suspend="THREAD" type="python-line"> |
640 | 685 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
641 | - <line>205</line> | |
686 | + <line>208</line> | |
642 | 687 | <option name="timeStamp" value="124" /> |
643 | 688 | </line-breakpoint> |
644 | 689 | <line-breakpoint suspend="THREAD" type="python-line"> |
645 | 690 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
646 | - <line>208</line> | |
691 | + <line>211</line> | |
647 | 692 | <option name="timeStamp" value="125" /> |
648 | 693 | </line-breakpoint> |
649 | 694 | <line-breakpoint suspend="THREAD" type="python-line"> |
650 | 695 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
651 | - <line>50</line> | |
696 | + <line>51</line> | |
652 | 697 | <option name="timeStamp" value="126" /> |
653 | 698 | </line-breakpoint> |
654 | 699 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -658,12 +703,12 @@ |
658 | 703 | </line-breakpoint> |
659 | 704 | <line-breakpoint suspend="THREAD" type="python-line"> |
660 | 705 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
661 | - <line>153</line> | |
706 | + <line>156</line> | |
662 | 707 | <option name="timeStamp" value="129" /> |
663 | 708 | </line-breakpoint> |
664 | 709 | <line-breakpoint suspend="THREAD" type="python-line"> |
665 | 710 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
666 | - <line>210</line> | |
711 | + <line>213</line> | |
667 | 712 | <option name="timeStamp" value="130" /> |
668 | 713 | </line-breakpoint> |
669 | 714 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -673,22 +718,12 @@ |
673 | 718 | </line-breakpoint> |
674 | 719 | <line-breakpoint suspend="THREAD" type="python-line"> |
675 | 720 | <url>file://$PROJECT_DIR$/tools/fixture.py</url> |
676 | - <line>38</line> | |
677 | - <option name="timeStamp" value="138" /> | |
678 | - </line-breakpoint> | |
679 | - <line-breakpoint suspend="THREAD" type="python-line"> | |
680 | - <url>file://$PROJECT_DIR$/tools/fixture.py</url> | |
681 | - <line>36</line> | |
682 | - <option name="timeStamp" value="139" /> | |
683 | - </line-breakpoint> | |
684 | - <line-breakpoint suspend="THREAD" type="python-line"> | |
685 | - <url>file://$PROJECT_DIR$/tools/fixture.py</url> | |
686 | 721 | <line>35</line> |
687 | 722 | <option name="timeStamp" value="140" /> |
688 | 723 | </line-breakpoint> |
689 | 724 | <line-breakpoint suspend="THREAD" type="python-line"> |
690 | 725 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
691 | - <line>249</line> | |
726 | + <line>253</line> | |
692 | 727 | <option name="timeStamp" value="142" /> |
693 | 728 | </line-breakpoint> |
694 | 729 | <line-breakpoint suspend="THREAD" type="python-line"> |
... | ... | @@ -698,38 +733,113 @@ |
698 | 733 | </line-breakpoint> |
699 | 734 | <line-breakpoint suspend="THREAD" type="python-line"> |
700 | 735 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
701 | - <line>274</line> | |
702 | - <option name="timeStamp" value="148" /> | |
736 | + <line>279</line> | |
737 | + <option name="timeStamp" value="149" /> | |
703 | 738 | </line-breakpoint> |
704 | 739 | <line-breakpoint suspend="THREAD" type="python-line"> |
705 | 740 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
706 | 741 | <line>275</line> |
707 | - <option name="timeStamp" value="149" /> | |
742 | + <option name="timeStamp" value="150" /> | |
708 | 743 | </line-breakpoint> |
709 | 744 | <line-breakpoint suspend="THREAD" type="python-line"> |
710 | 745 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
711 | - <line>271</line> | |
712 | - <option name="timeStamp" value="150" /> | |
746 | + <line>241</line> | |
747 | + <option name="timeStamp" value="162" /> | |
748 | + </line-breakpoint> | |
749 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
750 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
751 | + <line>239</line> | |
752 | + <option name="timeStamp" value="163" /> | |
713 | 753 | </line-breakpoint> |
714 | 754 | <line-breakpoint suspend="THREAD" type="python-line"> |
715 | 755 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
756 | + <line>434</line> | |
757 | + <option name="timeStamp" value="165" /> | |
758 | + </line-breakpoint> | |
759 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
760 | + <url>file://$PROJECT_DIR$/tools/fixture.py</url> | |
761 | + <line>49</line> | |
762 | + <option name="timeStamp" value="166" /> | |
763 | + </line-breakpoint> | |
764 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
765 | + <url>file://$PROJECT_DIR$/tools/fixture.py</url> | |
766 | + <line>50</line> | |
767 | + <option name="timeStamp" value="167" /> | |
768 | + </line-breakpoint> | |
769 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
770 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
771 | + <line>443</line> | |
772 | + <option name="timeStamp" value="169" /> | |
773 | + </line-breakpoint> | |
774 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
775 | + <url>file://$PROJECT_DIR$/tools/fixture.py</url> | |
776 | + <line>38</line> | |
777 | + <option name="timeStamp" value="171" /> | |
778 | + </line-breakpoint> | |
779 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
780 | + <url>file://$PROJECT_DIR$/testcase/test_04_Internship_preparation.py</url> | |
781 | + <line>323</line> | |
782 | + <option name="timeStamp" value="174" /> | |
783 | + </line-breakpoint> | |
784 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
785 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
786 | + <line>114</line> | |
787 | + <option name="timeStamp" value="175" /> | |
788 | + </line-breakpoint> | |
789 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
790 | + <url>file://$PROJECT_DIR$/testcase/test_05_student_practice.py</url> | |
716 | 791 | <line>93</line> |
717 | - <option name="timeStamp" value="151" /> | |
792 | + <option name="timeStamp" value="177" /> | |
718 | 793 | </line-breakpoint> |
719 | 794 | <line-breakpoint suspend="THREAD" type="python-line"> |
720 | 795 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
721 | - <line>262</line> | |
722 | - <option name="timeStamp" value="152" /> | |
796 | + <line>314</line> | |
797 | + <option name="timeStamp" value="182" /> | |
723 | 798 | </line-breakpoint> |
724 | 799 | <line-breakpoint suspend="THREAD" type="python-line"> |
725 | 800 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
726 | - <line>237</line> | |
727 | - <option name="timeStamp" value="162" /> | |
801 | + <line>266</line> | |
802 | + <option name="timeStamp" value="191" /> | |
728 | 803 | </line-breakpoint> |
729 | 804 | <line-breakpoint suspend="THREAD" type="python-line"> |
730 | 805 | <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> |
731 | - <line>235</line> | |
732 | - <option name="timeStamp" value="163" /> | |
806 | + <line>315</line> | |
807 | + <option name="timeStamp" value="193" /> | |
808 | + </line-breakpoint> | |
809 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
810 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
811 | + <line>265</line> | |
812 | + <option name="timeStamp" value="194" /> | |
813 | + </line-breakpoint> | |
814 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
815 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
816 | + <line>268</line> | |
817 | + <option name="timeStamp" value="195" /> | |
818 | + </line-breakpoint> | |
819 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
820 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
821 | + <line>257</line> | |
822 | + <option name="timeStamp" value="198" /> | |
823 | + </line-breakpoint> | |
824 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
825 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
826 | + <line>263</line> | |
827 | + <option name="timeStamp" value="199" /> | |
828 | + </line-breakpoint> | |
829 | + <line-breakpoint suspend="THREAD" type="python-line"> | |
830 | + <url>file://$PROJECT_DIR$/testcase/test_06_internship_manage.py</url> | |
831 | + <line>278</line> | |
832 | + <option name="timeStamp" value="201" /> | |
833 | + </line-breakpoint> | |
834 | + <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> | |
835 | + <url>file://$PROJECT_DIR$/tools/handle_token.py</url> | |
836 | + <line>53</line> | |
837 | + <option name="timeStamp" value="203" /> | |
838 | + </line-breakpoint> | |
839 | + <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> | |
840 | + <url>file://$PROJECT_DIR$/tools/handle_token.py</url> | |
841 | + <line>51</line> | |
842 | + <option name="timeStamp" value="204" /> | |
733 | 843 | </line-breakpoint> |
734 | 844 | </breakpoints> |
735 | 845 | <default-breakpoints> |
... | ... | @@ -740,19 +850,24 @@ |
740 | 850 | </breakpoint> |
741 | 851 | </default-breakpoints> |
742 | 852 | </breakpoint-manager> |
853 | + <watches-manager> | |
854 | + <configuration name="tests"> | |
855 | + <watch expression="select_daily_log_excel" /> | |
856 | + </configuration> | |
857 | + </watches-manager> | |
743 | 858 | </component> |
744 | 859 | <component name="com.intellij.coverage.CoverageDataManagerImpl"> |
745 | 860 | <SUITE FILE_PATH="coverage/yxly$fixture__1_.coverage" NAME="fixture (1) Coverage Results" MODIFIED="1672814917701" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" /> |
746 | - <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_06_internship_manage_py.coverage" NAME="Unittests in test_06_internship_manage.py Coverage Results" MODIFIED="1676453107047" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> | |
861 | + <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_06_internship_manage_py.coverage" NAME="Unittests in test_06_internship_manage.py Coverage Results" MODIFIED="1678695618207" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> | |
747 | 862 | <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_05_student_practice_py.coverage" NAME="Unittests in test_05_student_practice.py Coverage Results" MODIFIED="1673431777836" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> |
748 | 863 | <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" /> |
749 | - <SUITE FILE_PATH="coverage/yxly$handle_token.coverage" NAME="handle_token Coverage Results" MODIFIED="1674901030597" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" /> | |
864 | + <SUITE FILE_PATH="coverage/yxly$handle_token.coverage" NAME="handle_token Coverage Results" MODIFIED="1687916804880" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" /> | |
750 | 865 | <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" /> |
751 | 866 | <SUITE FILE_PATH="coverage/yxly$aaa.coverage" NAME="aaa Coverage Results" MODIFIED="1675678970517" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tools" /> |
752 | - <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1676452765292" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> | |
867 | + <SUITE FILE_PATH="coverage/yxly$run.coverage" NAME="run Coverage Results" MODIFIED="1689843780840" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> | |
753 | 868 | <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_02_system_management_py.coverage" NAME="Unittests in test_02_system_management.py Coverage Results" MODIFIED="1672304630144" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> |
754 | 869 | <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" /> |
755 | - <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_04_Internship_preparation_py.coverage" NAME="Unittests in test_04_Internship_preparation.py Coverage Results" MODIFIED="1674873836789" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> | |
870 | + <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_04_Internship_preparation_py.coverage" NAME="Unittests in test_04_Internship_preparation.py Coverage Results" MODIFIED="1678692199921" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> | |
756 | 871 | <SUITE FILE_PATH="coverage/yxly$Unittests_in_test_03_teaching_affairs_py.coverage" NAME="Unittests in test_03_teaching_affairs.py Coverage Results" MODIFIED="1672198781295" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" /> |
757 | 872 | <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" /> |
758 | 873 | </component> | ... | ... |
... | ... | @@ -43,6 +43,7 @@ phone = 17301249973 |
43 | 43 | code = 8888 |
44 | 44 | type = student |
45 | 45 | way = code |
46 | +schoolId = 1519958566130257922 | |
46 | 47 | ;============================================================================================ |
47 | 48 | ;hr用户数据 |
48 | 49 | ;============================================================================================ |
... | ... | @@ -55,6 +56,9 @@ password = a123456 |
55 | 56 | [hr] |
56 | 57 | ;岗位id |
57 | 58 | hr_jobid = 1610468861604655106 |
59 | +[school] | |
60 | +;学校基地岗位id | |
61 | +school_base_jobid = 1635095176676659202 | |
58 | 62 | ;============================================================================================ |
59 | 63 | ;报告的相关配置 |
60 | 64 | ;============================================================================================ |
... | ... | @@ -78,6 +82,7 @@ templates = 1 |
78 | 82 | collect = DEBUG |
79 | 83 | ;输出到控制台等级 |
80 | 84 | console = CRITICAL |
85 | +;console = ERROR | |
81 | 86 | ;输出到文件根据时间轮转等级 |
82 | 87 | file = DEBUG |
83 | 88 | ;文件轮转时长单位 | ... | ... |
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
此 diff 太大无法显示。
此 diff 太大无法显示。
... | ... | @@ -20,10 +20,9 @@ from testcase.test_04_Internship_preparation import Test01addInternshipPlan, Tes |
20 | 20 | # 学生查看实习、学生报名、 |
21 | 21 | from testcase.test_05_student_practice import Test01SelectAllPractice, Test02StudentApply |
22 | 22 | # 查看报名审核、报名审核-学校端-进行审核、报名审核-hr端-待审核列表查看(实习申请列表)、 报名审核-hr端-进行审核 |
23 | -from testcase.test_06_internship_manage import Test01SelectApplyAuditList, Test02SchoolAudit, Test03HrSelectAuditList, \ | |
24 | - Test04HrAudit | |
23 | +from testcase.test_06_internship_manage import Test01SelectApplyAuditList, Test02SchoolAudit | |
25 | 24 | |
26 | -""" | |
25 | +""" | |
27 | 26 | 执行所有用例 |
28 | 27 | """ |
29 | 28 | # 创建测试套件 |
... | ... | @@ -33,18 +32,23 @@ suite_all = unittest.TestSuite() |
33 | 32 | load = unittest.TestLoader() |
34 | 33 | # ---用例放到加载器 |
35 | 34 | suite_all.addTest(load.discover(TestCase_Path)) |
35 | + | |
36 | 36 | """ |
37 | -执行单独模块用例 | |
38 | -""" | |
37 | +# 执行单独模块用例 | |
38 | +# """ | |
39 | 39 | a1 = unittest.TestLoader().loadTestsFromTestCase(TestLogin) |
40 | 40 | a2 = unittest.TestLoader().loadTestsFromTestCase(Test01Department) |
41 | 41 | a3 = unittest.TestLoader().loadTestsFromTestCase(Test02Specialty) |
42 | 42 | a4 = unittest.TestLoader().loadTestsFromTestCase(Test03Year) |
43 | 43 | a5 = unittest.TestLoader().loadTestsFromTestCase(Test02Class) |
44 | 44 | a6 = unittest.TestLoader().loadTestsFromTestCase(Test04Student) |
45 | +bbbbbb = unittest.TestLoader().loadTestsFromTestCase(Test02SchoolAudit) | |
46 | +cccc = unittest.TestLoader().loadTestsFromTestCase(Test01addInternshipPlan) | |
45 | 47 | suite = unittest.TestSuite([a1, a2, a3, a4, a5, a6]) |
48 | +suite_a = unittest.TestSuite([cccc]) | |
46 | 49 | |
47 | 50 | runner_test(suite_all) # 执行 |
51 | +# runner_test(suite_a) # 执行 | |
48 | 52 | |
49 | 53 | # input_case = input("请输入需要执行的用例:") |
50 | 54 | # try: | ... | ... |
... | ... | @@ -242,6 +242,8 @@ class Test03Course(unittest.TestCase): |
242 | 242 | new_time = time.strftime("%Y%m%d_%H:%M:%S") |
243 | 243 | # 随机班级名称 |
244 | 244 | self.course_name = "py自动化课程" + new_time |
245 | + # 随机课程代码 | |
246 | + self.course_code = new_time | |
245 | 247 | |
246 | 248 | @data(*add_course_case) |
247 | 249 | def test_add_course_info(self, case): |
... | ... | @@ -256,7 +258,8 @@ class Test03Course(unittest.TestCase): |
256 | 258 | case["data"] = case["data"].replace("#professionalId#", str(self.professionalId)) |
257 | 259 | if "#termIds#" in case["data"]: |
258 | 260 | case["data"] = case["data"].replace("#termIds#", str(self.termsId)) |
259 | - | |
261 | + if "#code#" in case["data"]: | |
262 | + case["data"] = case["data"].replace("#code#", str(self.course_code)) | |
260 | 263 | data = json.loads(case["data"]) |
261 | 264 | expected = json.loads(case["expected"]) |
262 | 265 | # 调用接口 | ... | ... |
... | ... | @@ -108,8 +108,8 @@ class Test01addInternshipPlan(unittest.TestCase): |
108 | 108 | case["data"] = case["data"].replace("#courseId#", str(self.courseId)) # 课程 |
109 | 109 | if "#departmentId#" in case["data"]: |
110 | 110 | case["data"] = case["data"].replace("#departmentId#", str(self.department_id)) # 院系id |
111 | - if "#professionalId#" in case["data"]: | |
112 | - case["data"] = case["data"].replace("#professionalId#", str(self.professionalId)) # 专业id | |
111 | + if "#professionalIds#" in case["data"]: | |
112 | + case["data"] = case["data"].replace("#professionalIds#", str(self.professionalId)) # 专业id | |
113 | 113 | if "#classInfoId#" in case["data"]: |
114 | 114 | case["data"] = case["data"].replace("#classInfoId#", str(self.classId)) # 班级id |
115 | 115 | if "#teacherIds#" in case["data"]: |
... | ... | @@ -314,7 +314,7 @@ class Test04publishInternshipProject(unittest.TestCase): |
314 | 314 | cls.token = LoginToken.login_token() |
315 | 315 | |
316 | 316 | def setUp(self): |
317 | - # ---获取计划id | |
317 | + # ---获取项目id | |
318 | 318 | select_project_excel = Excel(os.path.join(Internship_path, "test_05_internship_project.xlsx"), |
319 | 319 | "select_internship_project") |
320 | 320 | read_project_excel = select_project_excel.read_excel_location("C2") |
... | ... | @@ -324,7 +324,7 @@ class Test04publishInternshipProject(unittest.TestCase): |
324 | 324 | self.projectId = jsonpath(project_json, "$..id")[0] # 获取待发布项目id |
325 | 325 | |
326 | 326 | # ==================================================================== |
327 | - # 发布计划 | |
327 | + # 发布项目 | |
328 | 328 | # ==================================================================== |
329 | 329 | @data(*publish_project_case) |
330 | 330 | def test_publish_plan(self, case): |
... | ... | @@ -362,6 +362,3 @@ class Test04publishInternshipProject(unittest.TestCase): |
362 | 362 | self.publish_project.write_excel(row=case["id"] + 1, column=9, value=case["data"]) |
363 | 363 | HandleLog.log.info("用例{},执行通过".format(case["title"])) |
364 | 364 | |
365 | - | |
366 | -if __name__ == '__main__': | |
367 | - Test03addInternshipProject | |
\ No newline at end of file | ... | ... |
1 | 1 | # -*- coding: utf-8 -*- |
2 | 2 | # ====================================== |
3 | 3 | # @Software: PyCharm |
4 | -# @Author : Shitou ✊ | |
4 | +# @Author : Shitou ✊、 | |
5 | 5 | # @Time : 2023/1/9 16:32 |
6 | 6 | # @FileName: test_05_student_practice.py |
7 | 7 | # ====================================== |
... | ... | @@ -97,7 +97,8 @@ class Test02StudentApply(unittest.TestCase): |
97 | 97 | def test01student_apply(self, case): |
98 | 98 | # 准备数据 |
99 | 99 | if "#jobId#" in case["data"]: |
100 | - case["data"] = case["data"].replace("#jobId#", str(conf.get("hr", "hr_jobid"))) | |
100 | + # case["data"] = case["data"].replace("#jobId#", str(conf.get("hr", "hr_jobid")))----2023/03/13修改需求,修改为获取基地岗位 | |
101 | + case["data"] = case["data"].replace("#jobId#", str(conf.get("school", "school_base_jobid"))) | |
101 | 102 | data = json.loads(case["data"]) |
102 | 103 | expected = json.loads(case["expected"]) |
103 | 104 | if "{id}" in case["url"]: | ... | ... |
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | """ |
11 | 11 | import json |
12 | 12 | import os |
13 | +import time | |
13 | 14 | import unittest |
14 | 15 | |
15 | 16 | import requests |
... | ... | @@ -27,7 +28,7 @@ from tools.handle_token import LoginToken, HrLoginToken, StudentLoginToken |
27 | 28 | # ==================实习管理菜单相关用例================== |
28 | 29 | |
29 | 30 | # ==================================================================== |
30 | -# 报名审核-待审核列表查看 | |
31 | +# 报名审核-待审核列表查看--学校 | |
31 | 32 | # ==================================================================== |
32 | 33 | @ddt |
33 | 34 | class Test01SelectApplyAuditList(unittest.TestCase): |
... | ... | @@ -97,7 +98,6 @@ class Test02SchoolAudit(unittest.TestCase): |
97 | 98 | def test01audit(self, case): |
98 | 99 | if "#formIds#" in case["data"]: |
99 | 100 | case["data"] = case["data"].replace("#formIds#", str(self.applyId)) # 待审核id |
100 | - | |
101 | 101 | # 准备数据 |
102 | 102 | data = json.loads(case["data"]) |
103 | 103 | expected = json.loads(case["expected"]) |
... | ... | @@ -127,6 +127,9 @@ class Test02SchoolAudit(unittest.TestCase): |
127 | 127 | HandleLog.log.info("用例{},执行通过".format(case["title"])) |
128 | 128 | |
129 | 129 | |
130 | +""" | |
131 | +需求改动,无需hr进行审核2023/03/13 | |
132 | + | |
130 | 133 | # ==================================================================== |
131 | 134 | # 报名审核-hr端-待审核列表查看(实习申请列表) |
132 | 135 | # ==================================================================== |
... | ... | @@ -226,6 +229,7 @@ class Test04HrAudit(unittest.TestCase): |
226 | 229 | # 将创建使用的数据写入到excel表格中 |
227 | 230 | self.hr_audit.write_excel(row=case["id"] + 1, column=9, value=case["data"]) |
228 | 231 | HandleLog.log.info("用例{},执行通过".format(case["title"])) |
232 | +""" | |
229 | 233 | |
230 | 234 | |
231 | 235 | # ==================================================================== |
... | ... | @@ -234,7 +238,7 @@ class Test04HrAudit(unittest.TestCase): |
234 | 238 | @ddt |
235 | 239 | class Test05StudentIntenship(unittest.TestCase): |
236 | 240 | student_start_internship = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), |
237 | - "student_start_internship") | |
241 | + "student_start_internshipp") | |
238 | 242 | student_start_internship_case = student_start_internship.read_excel() # 学生填写开始时间 |
239 | 243 | |
240 | 244 | # 登陆前置 |
... | ... | @@ -286,6 +290,380 @@ class Test05StudentIntenship(unittest.TestCase): |
286 | 290 | HandleLog.log.info("用例{},执行通过".format(case["title"])) |
287 | 291 | |
288 | 292 | |
289 | -if __name__ == '__main__': | |
290 | - Test04HrAudit() | |
291 | - Test05StudentIntenship() | |
293 | +# ==================================================================== | |
294 | +# 学校端---实习申请审核通过 | |
295 | +# ==================================================================== | |
296 | +@ddt | |
297 | +class Test06SchoolSelectApply(unittest.TestCase): | |
298 | + student_internship_applic = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), | |
299 | + "school_audit_internship_applic") | |
300 | + student_internship_applic_case = student_internship_applic.read_excel() | |
301 | + | |
302 | + @classmethod | |
303 | + def setUpClass(cls): | |
304 | + # 获取token | |
305 | + cls.token = LoginToken.login_token() | |
306 | + | |
307 | + def setUp(self): | |
308 | + # ---获取实习申请id---待审核 | |
309 | + select_internship_applic = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), | |
310 | + "school_select_internship_applic") | |
311 | + read_internship_applic_excel = select_internship_applic.read_excel_location("C2") | |
312 | + read_internship_applic_excel_d = select_internship_applic.read_excel_location("E2") # 读取params | |
313 | + internship_applic_list = SelectData(str(read_internship_applic_excel), | |
314 | + json.loads(read_internship_applic_excel_d)) | |
315 | + internship_applic_json = internship_applic_list.select_list() | |
316 | + self.internship_applic = jsonpath(internship_applic_json, "$..id")[0] # 获取实习申请待审核id | |
317 | + | |
318 | + @data(*student_internship_applic_case) | |
319 | + def test01audit(self, case): | |
320 | + if f"#id#" in case["url"]: | |
321 | + case["url"] = case["url"].replace("#id#", str(self.internship_applic)) # 待审核id | |
322 | + | |
323 | + # 准备数据 | |
324 | + data = json.loads(case["data"]) | |
325 | + expected = json.loads(case["expected"]) | |
326 | + # 调用接口 | |
327 | + url = conf.get("url", "url_ip") + case["url"] | |
328 | + herders = {} | |
329 | + herders["Authorization"] = self.token | |
330 | + request = requests.request(url=url, method=case["method"], json=data, headers=herders) | |
331 | + res = request.json() | |
332 | + print("用例入参:{}".format(data)) | |
333 | + print("预期结果:", expected) | |
334 | + print("实际结果:", res) | |
335 | + # 断言 | |
336 | + try: | |
337 | + self.assertEqual(expected['msg'], res['msg']) | |
338 | + self.assertEqual(expected['code'], res['code']) | |
339 | + except AssertionError as e: | |
340 | + # 写入Excel | |
341 | + self.student_internship_applic.write_excel(row=case["id"] + 1, column=7, value="不通过") | |
342 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
343 | + HandleLog.log.exception(e) | |
344 | + raise e | |
345 | + else: | |
346 | + self.student_internship_applic.write_excel(row=case["id"] + 1, column=7, value="通过") | |
347 | + # 将创建使用的数据写入到excel表格中 | |
348 | + self.student_internship_applic.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
349 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | |
350 | + | |
351 | + | |
352 | +# ==================================================================== | |
353 | +# 学生端---写周日志 | |
354 | +# ==================================================================== | |
355 | +@ddt | |
356 | +class Test07StudentWriteLog(unittest.TestCase): | |
357 | + student_write_log = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), "write_log") | |
358 | + student_write_log_case = student_write_log.read_excel() | |
359 | + | |
360 | + # 登陆前置 | |
361 | + @classmethod | |
362 | + def setUpClass(cls): | |
363 | + cls.student_token = StudentLoginToken.login_token() | |
364 | + | |
365 | + def setUp(self): | |
366 | + """单条用例执行前执行的函数""" | |
367 | + self.new_time = time.strftime("%Y%m%d_%H:%M:%S") | |
368 | + # 获取学生端实习中id | |
369 | + student_select_intership_running_excle = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), | |
370 | + "student_select_intership_wait") | |
371 | + read_student_intership_excel = student_select_intership_running_excle.read_excel_location("C3") | |
372 | + read_student_intership_excel_d = student_select_intership_running_excle.read_excel_location("E3") # 读取params | |
373 | + student_intership_list = SelectData(str(read_student_intership_excel), | |
374 | + json.loads(read_student_intership_excel_d)) | |
375 | + student_intership_json = student_intership_list.student_select_list() # 正序查找 | |
376 | + self.student_intership_id = jsonpath(student_intership_json, "$..id")[0] # 获取实习单实习中id | |
377 | + | |
378 | + @data(*student_write_log_case) | |
379 | + def test01student_write_log(self, case): | |
380 | + if "#formId#" in case["data"]: | |
381 | + case["data"] = case["data"].replace("#formId#", str(self.student_intership_id)) | |
382 | + if "#time#" in case["data"]: | |
383 | + case["data"] = case["data"].replace("#time#", str(self.new_time)) | |
384 | + # 准备数据 | |
385 | + data = json.loads(case["data"]) | |
386 | + expected = json.loads(case["expected"]) | |
387 | + # 调用接口 | |
388 | + url = conf.get("url", "url_ip") + case["url"] | |
389 | + headers = {} | |
390 | + headers["Authorization"] = self.student_token | |
391 | + request = requests.request(url=url, method=case["method"], json=data, headers=headers) | |
392 | + res = request.json() | |
393 | + print("用例入参:{}".format(data)) | |
394 | + print("预期结果:", expected) | |
395 | + print("实际结果:", res) | |
396 | + # 断言 | |
397 | + try: | |
398 | + self.assertEqual(expected['msg'], res['msg']) | |
399 | + self.assertEqual(expected['code'], res['code']) | |
400 | + except AssertionError as e: | |
401 | + self.student_write_log.write_excel(row=case['id'] + 1, column=7, value="不通过") | |
402 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
403 | + HandleLog.log.exception(e) | |
404 | + raise e | |
405 | + else: | |
406 | + self.student_write_log.write_excel(row=case["id"] + 1, column=7, value="通过") | |
407 | + # 将创建使用的数据写入到excel表格中 | |
408 | + self.student_write_log.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
409 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | |
410 | + | |
411 | + | |
412 | +# ==================================================================== | |
413 | +# 教师端---批阅周日志 | |
414 | +# ==================================================================== | |
415 | +@ddt | |
416 | +class Test08ApproveLog(unittest.TestCase): | |
417 | + teacher_approve_log = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), "approve_log") | |
418 | + teacher_approve_log_case = teacher_approve_log.read_excel() | |
419 | + | |
420 | + # 登陆前置 | |
421 | + @classmethod | |
422 | + def setUpClass(cls): | |
423 | + cls.teacher_token = LoginToken.login_token() | |
424 | + | |
425 | + def setUp(self): | |
426 | + # 获取周日志id | |
427 | + # ---------------获取日志id | |
428 | + select_daily_log = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), | |
429 | + "select_log") | |
430 | + select_daily_log_excel = select_daily_log.read_excel_location("C2") | |
431 | + select_daily_log_excel_d = select_daily_log.read_excel_location("E2") # 读取params | |
432 | + daily_log_list = SelectData(str(select_daily_log_excel), | |
433 | + json.loads(select_daily_log_excel_d)) | |
434 | + daily_log_json = daily_log_list.select_list() # 正序查找 | |
435 | + self.daily_ids = jsonpath(daily_log_json, "$..id")[0] # 获取日志id | |
436 | + # ---------------获取周志id | |
437 | + select_weekly_log = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), | |
438 | + "select_log") | |
439 | + select_weekly_log_excel = select_weekly_log.read_excel_location("C3") | |
440 | + select_weekly_log_excel_d = select_weekly_log.read_excel_location("E3") # 读取params | |
441 | + weekly_log_list = SelectData(str(select_weekly_log_excel), | |
442 | + json.loads(select_weekly_log_excel_d)) | |
443 | + weekly_log_json = weekly_log_list.select_list() # 正序查找 | |
444 | + self.weekly_ids = jsonpath(weekly_log_json, "$..id")[0] # 获取周志id | |
445 | + # ---------------获取月志id | |
446 | + select_monthly_log = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), | |
447 | + "select_log") | |
448 | + select_monthly_log_excel = select_monthly_log.read_excel_location("C4") | |
449 | + select_monthly_log_excel_d = select_monthly_log.read_excel_location("E4") # 读取params | |
450 | + monthly_log_list = SelectData(str(select_monthly_log_excel), | |
451 | + json.loads(select_monthly_log_excel_d)) | |
452 | + monthly_log_json = monthly_log_list.select_list() # 正序查找 | |
453 | + self.monthly_ids = jsonpath(monthly_log_json, "$..id")[0] # 获取月志id | |
454 | + | |
455 | + @data(*teacher_approve_log_case) | |
456 | + def test01approve_log(self, case): | |
457 | + if "#daily_ids#" in case["data"]: | |
458 | + case["data"] = case["data"].replace("#daily_ids#", str(self.daily_ids)) # 日志 | |
459 | + if "#weekly_ids#" in case["data"]: | |
460 | + case["data"] = case["data"].replace("#weekly_ids#", str(self.weekly_ids)) # 周志 | |
461 | + if "#monthly_ids#" in case["data"]: | |
462 | + case["data"] = case["data"].replace("#monthly_ids#", str(self.monthly_ids)) # 月志 | |
463 | + | |
464 | + # 准备数据 | |
465 | + data = json.loads(case["data"]) | |
466 | + expected = json.loads(case["expected"]) | |
467 | + # 调用接口 | |
468 | + url = conf.get("url", "url_ip") + case["url"] | |
469 | + headers = {} | |
470 | + headers["Authorization"] = self.teacher_token | |
471 | + request = requests.request(url=url, method=case["method"], json=data, headers=headers) | |
472 | + res = request.json() | |
473 | + print("用例入参:{}".format(data)) | |
474 | + print("预期结果:", expected) | |
475 | + print("实际结果:", res) | |
476 | + # 断言 | |
477 | + try: | |
478 | + self.assertEqual(expected['msg'], res['msg']) | |
479 | + self.assertEqual(expected['code'], res['code']) | |
480 | + except AssertionError as e: | |
481 | + self.teacher_approve_log.write_excel(row=case['id'] + 1, column=7, value="不通过") | |
482 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
483 | + HandleLog.log.exception(e) | |
484 | + raise e | |
485 | + else: | |
486 | + self.teacher_approve_log.write_excel(row=case["id"] + 1, column=7, value="通过") | |
487 | + # 将创建使用的数据写入到excel表格中 | |
488 | + self.teacher_approve_log.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
489 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | |
490 | + | |
491 | + | |
492 | +# ==================================================================== | |
493 | +# 学生端---打卡签到 | |
494 | +# ==================================================================== | |
495 | +@ddt | |
496 | +class Test09Attendance(unittest.TestCase): | |
497 | + student_attendance = Excel(os.path.join(Internship_manage, "test_08_log_marking.xlsx"), "student_attendance") | |
498 | + student_attendance_case = student_attendance.read_excel() | |
499 | + | |
500 | + # 登陆前置 | |
501 | + @classmethod | |
502 | + def setUpClass(cls): | |
503 | + cls.student_token = StudentLoginToken.login_token() | |
504 | + | |
505 | + def setUp(self): | |
506 | + # 获取学生端实习中id | |
507 | + student_select_intership_running_excle = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), | |
508 | + "student_select_intership_wait") | |
509 | + read_student_intership_excel = student_select_intership_running_excle.read_excel_location("C3") | |
510 | + read_student_intership_excel_d = student_select_intership_running_excle.read_excel_location("E3") # 读取params | |
511 | + student_intership_list = SelectData(str(read_student_intership_excel), | |
512 | + json.loads(read_student_intership_excel_d)) | |
513 | + student_intership_json = student_intership_list.student_select_list() # 正序查找 | |
514 | + self.student_intership_id = jsonpath(student_intership_json, "$..id")[0] # 获取实习单实习中id | |
515 | + | |
516 | + @data(*student_attendance_case) | |
517 | + def test01student_attendance(self, case): | |
518 | + if "#formId#" in case["data"]: | |
519 | + case["data"] = case["data"].replace("#formId#", str(self.student_intership_id)) # 实习单 | |
520 | + | |
521 | + # 准备数据 | |
522 | + data = json.loads(case["data"]) | |
523 | + expected = json.loads(case["expected"]) | |
524 | + # 调用接口 | |
525 | + url = conf.get("url", "url_ip") + case["url"] | |
526 | + headers = {} | |
527 | + headers["Authorization"] = self.student_token | |
528 | + request = requests.request(url=url, method=case["method"], json=data, headers=headers) | |
529 | + res = request.json() | |
530 | + print("用例入参:{}".format(data)) | |
531 | + print("预期结果:", expected) | |
532 | + print("实际结果:", res) | |
533 | + # 断言 | |
534 | + try: | |
535 | + self.assertEqual(expected['msg'], res['msg']) | |
536 | + self.assertEqual(expected['code'], res['code']) | |
537 | + except AssertionError as e: | |
538 | + self.student_attendance.write_excel(row=case['id'] + 1, column=7, value="不通过") | |
539 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
540 | + HandleLog.log.exception(e) | |
541 | + raise e | |
542 | + else: | |
543 | + self.student_attendance.write_excel(row=case["id"] + 1, column=7, value="通过") | |
544 | + # 将创建使用的数据写入到excel表格中 | |
545 | + self.student_attendance.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
546 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | |
547 | + | |
548 | + | |
549 | +# ==================================================================== | |
550 | +# 学生端---请假申请 | |
551 | +# ==================================================================== | |
552 | + | |
553 | +@ddt | |
554 | +class Test10LeaveRecord(unittest.TestCase): | |
555 | + student_leave_record = Excel(os.path.join(Internship_manage, "test_09_leave_record.xlsx"), "student_leave_record") | |
556 | + student_leave_record_case = student_leave_record.read_excel() | |
557 | + | |
558 | + # 登陆的前置 | |
559 | + @classmethod | |
560 | + def setUpClass(cls): | |
561 | + cls.student_token = StudentLoginToken.login_token() # 获取学生登陆小程序的token | |
562 | + | |
563 | + def setUp(self): | |
564 | + """单条用例执行前执行的函数""" | |
565 | + self.new_time = time.strftime("%Y%m%d_%H:%M:%S") | |
566 | + # 获取学生端实习中id | |
567 | + student_select_intership_running_excle = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), | |
568 | + "student_select_intership_wait") | |
569 | + read_student_intership_excel = student_select_intership_running_excle.read_excel_location("C3") | |
570 | + read_student_intership_excel_d = student_select_intership_running_excle.read_excel_location("E3") # 读取params | |
571 | + student_intership_list = SelectData(str(read_student_intership_excel), | |
572 | + json.loads(read_student_intership_excel_d)) | |
573 | + student_intership_json = student_intership_list.student_select_list() # 正序查找 | |
574 | + self.student_intership_id = jsonpath(student_intership_json, "$..id")[0] # 获取实习单实习中id | |
575 | + | |
576 | + @data(*student_leave_record_case) | |
577 | + def test01student_leave_record(self, case): | |
578 | + if "#formId#" in case["data"]: | |
579 | + case["data"] = case["data"].replace("#formId#", str(self.student_intership_id)) # 实习单 | |
580 | + if "#time#" in case["data"]: | |
581 | + case["data"] = case["data"].replace("#time#", str(self.new_time)) # 请假原因 | |
582 | + # 准备数据 | |
583 | + data = json.loads(case["data"]) | |
584 | + expected = json.loads(case["expected"]) | |
585 | + # 调用接口 | |
586 | + url = conf.get("url", "url_ip") + case["url"] | |
587 | + headers = {} | |
588 | + headers["Authorization"] = self.student_token | |
589 | + request = requests.request(url=url, method=case["method"], json=data, headers=headers) | |
590 | + res = request.json() | |
591 | + print("用例入参:{}".format(data)) | |
592 | + print("预期结果:", expected) | |
593 | + print("实际结果:", res) | |
594 | + # 断言 | |
595 | + try: | |
596 | + self.assertEqual(expected['msg'], res['msg']) | |
597 | + self.assertEqual(expected['code'], res['code']) | |
598 | + except AssertionError as e: | |
599 | + self.student_leave_record.write_excel(row=case['id'] + 1, column=7, value="不通过") | |
600 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
601 | + HandleLog.log.exception(e) | |
602 | + raise e | |
603 | + else: | |
604 | + self.student_leave_record.write_excel(row=case["id"] + 1, column=7, value="通过") | |
605 | + # 将创建使用的数据写入到excel表格中 | |
606 | + self.student_leave_record.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
607 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | |
608 | + | |
609 | + | |
610 | +# ==================================================================== | |
611 | +# 教师端---请假审批--通过 | |
612 | +# ==================================================================== | |
613 | + | |
614 | +@ddt | |
615 | +class Test11TeacherAprove(unittest.TestCase): | |
616 | + teacher_aprove = Excel(os.path.join(Internship_manage, "test_09_leave_record.xlsx"), "tacher_aprove") | |
617 | + teacher_aprove_case = teacher_aprove.read_excel() | |
618 | + | |
619 | + # 登陆的前置 | |
620 | + @classmethod | |
621 | + def setUpClass(cls): | |
622 | + cls.teacher_token = LoginToken.login_token() # 获取web教师端的token | |
623 | + | |
624 | + def setUp(self): | |
625 | + """单条用例执行前执行的函数""" | |
626 | + self.new_time = time.strftime("%Y%m%d_%H:%M:%S") | |
627 | + # 获取请假批阅列表的id | |
628 | + leave_record_excel = Excel(os.path.join(Internship_manage, "test_09_leave_record.xlsx"), | |
629 | + "select_tacher_leave_record") | |
630 | + read_leave_record = leave_record_excel.read_excel_location("C2") | |
631 | + read_leave_record_d = leave_record_excel.read_excel_location("E2") | |
632 | + teacher_leave_record_list = SelectData(str(read_leave_record), | |
633 | + json.loads(read_leave_record_d)) | |
634 | + teacher_leave_record_json = teacher_leave_record_list.select_list() # 正序查找 | |
635 | + self.leave_record_id = jsonpath(teacher_leave_record_json, "$..id")[0] # 获取请假审批id | |
636 | + | |
637 | + @data(*teacher_aprove_case) | |
638 | + def test01teacher_aprove(self, case): | |
639 | + | |
640 | + if "#time#" in case["data"]: | |
641 | + case["data"] = case["data"].replace("#time#", str(self.new_time)) # 审批通过的回复 | |
642 | + if "{id}" in case["url"]: | |
643 | + case["url"] = case["url"].replace("{id}", str(self.leave_record_id)) | |
644 | + # 准备数据 | |
645 | + data = json.loads(case["data"]) | |
646 | + expected = json.loads(case["expected"]) | |
647 | + # 调用接口 | |
648 | + url = conf.get("url", "url_ip") + case["url"] | |
649 | + headers = {} | |
650 | + headers["Authorization"] = self.teacher_token | |
651 | + request = requests.request(url=url, method=case["method"], json=data, headers=headers) | |
652 | + res = request.json() | |
653 | + print("用例入参:{}".format(data)) | |
654 | + print("预期结果:", expected) | |
655 | + print("实际结果:", res) | |
656 | + # 断言 | |
657 | + try: | |
658 | + self.assertEqual(expected['msg'], res['msg']) | |
659 | + self.assertEqual(expected['code'], res['code']) | |
660 | + except AssertionError as e: | |
661 | + self.teacher_aprove.write_excel(row=case['id'] + 1, column=7, value="不通过") | |
662 | + HandleLog.log.error("用例标题{},不通过".format(case['title'])) | |
663 | + HandleLog.log.exception(e) | |
664 | + raise e | |
665 | + else: | |
666 | + self.teacher_aprove.write_excel(row=case["id"] + 1, column=7, value="通过") | |
667 | + # 将创建使用的数据写入到excel表格中 | |
668 | + self.teacher_aprove.write_excel(row=case["id"] + 1, column=9, value=case["data"]) | |
669 | + HandleLog.log.info("用例{},执行通过".format(case["title"])) | ... | ... |
... | ... | @@ -79,7 +79,7 @@ class RandomIdentification(object): |
79 | 79 | def ran(self): |
80 | 80 | # 随机生成年月日 |
81 | 81 | aaa = radar.random_date("1980", "2022") |
82 | - yea = aaa.year # 生成年 | |
82 | + yea = aaa.year # 生成年 | |
83 | 83 | # yea = random.randint(1933, int(time.strftime("%Y"))) # 生成年 |
84 | 84 | # 生成月 |
85 | 85 | mon = random.randint(1, 12) | ... | ... |
... | ... | @@ -24,7 +24,7 @@ def runner_test(suite): |
24 | 24 | ) |
25 | 25 | # runner.run() |
26 | 26 | # 执行失败重新运行机制 |
27 | - runner.rerun_run(count=3, interval=0.2) | |
27 | + runner.rerun_run(count=2, interval=0.2) | |
28 | 28 | """ |
29 | 29 | 发送钉钉 |
30 | 30 | """ |
... | ... | @@ -36,9 +36,9 @@ def runner_test(suite): |
36 | 36 | # isatall=False, # 是否@所有人,默认为False,设为True则会@所有人 |
37 | 37 | # except_info=True # 是否发送未通过用例的详细信息,默认为False |
38 | 38 | # ) |
39 | - """ | |
40 | - 发送邮件 | |
41 | - """ | |
39 | + # """ | |
40 | + # 发送邮件 | |
41 | + # """ | |
42 | 42 | # runner.send_email(host="smtp.qq.com", |
43 | 43 | # port=465, |
44 | 44 | # user="shishut@foxmail.com", | ... | ... |
... | ... | @@ -45,7 +45,8 @@ class StudentLoginToken: |
45 | 45 | "way": conf.get("student_user_data", "way"), |
46 | 46 | "phone": conf.get("student_user_data", "phone"), |
47 | 47 | "code": conf.get("student_user_data", "code"), |
48 | - "type": conf.get("student_user_data", "type") | |
48 | + "type": conf.get("student_user_data", "type"), | |
49 | + "schoolId": conf.get("student_user_data", "schoolId") | |
49 | 50 | } |
50 | 51 | response = requests.request(url=login_url, method="post", json=params, headers=headers) |
51 | 52 | res = response.json() |
... | ... | @@ -98,5 +99,6 @@ class HrLoginToken: |
98 | 99 | |
99 | 100 | |
100 | 101 | if __name__ == '__main__': |
101 | - HrLoginToken.login_token() | |
102 | + a = StudentLoginToken.login_token() | |
103 | + print(a) | |
102 | 104 | # HrLoginToken.login_token() | ... | ... |
请
注册
或
登录
后发表评论