Exemplo n.º 1
0
 def test_save_play_code(self):
     """
     课程-保存试炼场用户代码
     :return:
     """
     url = f'{self.ip}/course/user/save/playCode'
     data = {
         "classId": self.class_id_list[0],
         "courseId": self.course_id_list[0],
         "pointId": self.point_id_tup[0],
         "seriesId": self.series_id_list[0],
         "userCode": turtle_code()
     }
     res = requests.post(url=url, headers=self.teacher_headers, json=data)
     assert_res(res.text)
     data_ret = res.json()
     try:
         save = data_ret['data']
     except TypeError:
         print(f'接口"/course/user/save/playCode"报错,返回{data_ret["msg"]}')
     except KeyError:
         print(f'接口"/course/user/save/playCode"返回{data_ret}')
     else:
         if save:
             url = f'{self.ip}/course/user/query/playCode'
             res = requests.post(url=url, headers=self.teacher_headers, json=data)
             assert_res(res.text)
             data_ret = res.json()
             try:
                 print(data_ret['data'])
             except TypeError:
                 print(f'接口"/course/user/query/playCode"报错,返回{data_ret["msg"]}')
             except KeyError:
                 print(f'接口"/course/user/query/playCode"返回{data_ret}')
Exemplo n.º 2
0
 def test_05_user_course(self):
     """
     用户最近课程
     :return:
     """
     series_id_list = self.teacher_parm.get_series_list()
     class_id_list = self.teacher_parm.get_class_list()
     url = f'{self.ip}/index/user/courses'
     for class_id in class_id_list:
         for series_id in series_id_list:
             for f in range(2):
                 data = {
                     "classId": class_id,
                     "flag": f,
                     "pageNum": 1,
                     "pageSize": 10,
                     "seriesId": series_id
                 }
                 res = requests.post(url=url,
                                     headers=self.teacher_headers,
                                     json=data)
                 assert_res(res.text)
                 time.sleep(1)
                 data_ret = res.json()
                 try:
                     data_list = data_ret['data']['list']
                 except TypeError:
                     print(f'接口/index/user/courses,返回{data_ret["msg"]}')
                 except KeyError:
                     print(f'接口/index/user/courses,返回{data_ret},与预期不符')
                 else:
                     print([{
                         i['seriesName']:
                         [i['issueName'], i['planWeeks'], i['flag']]
                     } for i in data_list])
Exemplo n.º 3
0
 def test_teacher_practises(self):
     """
     老师查看学生练习
     :return:
     """
     all_point_id = [id_dic['id'] for id_dic in self.all_point_resource_id_list]
     for point_id in all_point_id:
         url = f'{self.ip}/course/teacher/' \
               f'{self.course_id_list[0]}/{self.class_id_list[-1]}/{point_id}/practises'
         res = requests.get(url=url, headers=self.teacher_headers)
         assert_res(res.text)
         time.sleep(1)
         data_ret = res.json()
         try:
             data_dic = data_ret['data']
             print(f"{data_dic['practisedCount']}/{data_dic['practiseCount']},{data_dic['avgCorrectRate']}")
             practises_data = data_dic['practises']
             pprint(
                 [
                     {i['name']: i['correctRate'], 'subject': [{p['name']: p['result']}
                                                               for p in i['subjects']]}
                     for i in practises_data
                 ]
             )
             print('#################################################')
         except TypeError:
             msg = '接口正常,没有数据' \
                 if data_ret['msg'] == '操作成功' else \
                 f'接口/common/classes报错,返回{data_ret["msg"]}'
             print(msg)
         except KeyError:
             print(f'接口"/practises"返回{data_ret}')
Exemplo n.º 4
0
 def test_student_homework_list(self):
     """
     学生端-作业列表-作业列表查询
     :return:
     """
     url = f'{self.ip}/homework/stuHwList'
     class_id_list = self.student_class_id_list
     class_id_list.append('')
     for class_id in class_id_list:
         for status in ['', 0, 1, 2]:
             for homework_name in ['', '接口']:
                 data = {
                     "classId": class_id,
                     "currPage": 1,
                     "homeworkName": homework_name,
                     "pageSize": 100,
                     "schoolId": self.school_id,
                     "status": status
                 }
                 res = requests.post(url=url,
                                     headers=self.student_headers,
                                     json=data)
                 assert_res(res.text)
                 time.sleep(1)
                 data_ret = res.json()
                 try:
                     data_list = data_ret['data']['list']
                 except TypeError:
                     print(f'接口"/homework/stuHwList"报错,返回{data_ret["msg"]}')
                 except KeyError:
                     print(f'接口"/homework/stuHwList"返回{data_ret}')
                 else:
                     print([{
                         i['homeworkId']: i['homeworkName']
                     } for i in data_list])
Exemplo n.º 5
0
 def test_student_homework_problem_info(self):
     """
     学生端-作业题目-详细查询
     :return:
     """
     url = f'{self.ip}/homework/stuHwProblemInfo'
     for p, t in self.student_problem_id_list:
         data = {
             "hwId": self.student_homework_id_list[0],
             "subjectId": p,
             "subjectType": t
         }
         res = requests.post(url=url,
                             headers=self.student_headers,
                             json=data)
         assert_res(res.text)
         data_ret = res.json()
         try:
             data_dic = data_ret['data']
             print((data_dic['problemName'], data_dic['problemAnswer'],
                    data_dic['userCode']))
         except TypeError:
             print(f'接口"/homework/stuHwProblemInfo"报错,返回{data_ret["msg"]}')
         except KeyError:
             print(f'接口"/homework/stuHwProblemInfo"返回{data_ret}')
Exemplo n.º 6
0
 def test_teacher_homework_problem_info(self):
     """
     教师端题目查看
     :return:
     """
     url = f'{self.ip}/homework/tchHwProblemInfo'
     for subject_id, subject_type in self.teacher_problem_id_list:
         data = {
             "hwId": self.teacher_homework_id_list[0],
             "studentId": self.student_id,
             "subjectId": subject_id,
             "subjectType": subject_type
         }
         res = requests.post(url=url,
                             headers=self.teacher_headers,
                             json=data)
         assert_res(res.text)
         data_ret = res.json()
         try:
             print({
                 data_ret['data']['problemId']:
                 data_ret['data']['problemName']
             })
         except TypeError:
             print(f'接口"/homework/tchHwProblemInfo"报错,返回{data_ret["msg"]}')
         except KeyError:
             print(f'接口"/homework/tchHwProblemInfo"返回{data_ret}')
Exemplo n.º 7
0
 def test_teacher_homework_student_list(self):
     """
     教师端-学生成绩列表
     :return:
     """
     url = f'{self.ip}/homework/tchHwStuList'
     data = {
         "currPage": 1,
         "hwId": self.teacher_homework_id_list[0],
         "pageSize": 30
     }
     res = requests.post(url=url, headers=self.teacher_headers, json=data)
     assert_res(res.text)
     data_ret = res.json()
     try:
         data_list = data_ret['data']['list']
     except TypeError:
         print(f'接口"/homework/tchHwStuList"报错,返回{data_ret["msg"]}')
     except KeyError:
         print(f'接口"/homework/tchHwStuList"返回{data_ret}')
     else:
         print([{
             i['studentName']: [
                 i['result'], i['correctCount'], i['finishedCount'],
                 i['level']
             ]
         } for i in data_list])
Exemplo n.º 8
0
 def test_teacher_homework_current_student_list(self):
     """
     教师端当前作业学生下拉列表
     :return:
     """
     self.teacher_problem_id_list = self.teacher_parm.teacher_get_homework_problem_id_list(
     )
     url = f'{self.ip}/homework/tchHwCurrentStuList'
     for subject_id, subject_type in self.teacher_problem_id_list:
         data = {
             "hwId": self.teacher_homework_id_list[0],
             "subjectId": subject_id,
             "subjectType": subject_type
         }
         res = requests.post(url=url,
                             headers=self.teacher_parm.headers,
                             json=data)
         assert_res(res.text)
         data_ret = res.json()
         try:
             print([(i['studentId'], i['studentName'], i['status'])
                    for i in data_ret['data']])
         except TypeError:
             print(
                 f'接口"/homework/tchHwCurrentStuList"报错,返回{data_ret["msg"]}')
         except KeyError:
             print(f'接口"/homework/tchHwCurrentStuList"返回{data_ret}')
Exemplo n.º 9
0
 def test_teacher_homework_list(self):
     """
     老师作业列表
     :return:
     """
     url = f'{self.ip}/homework/tchHwList'
     for class_id in list(chain(self.teacher_class_id_list, [''])):
         for homework_name in ['', '接口']:
             for status in ['', 1, 2, 3]:  # 待定
                 data = {
                     'schoolId': self.school_id,
                     'classId': class_id,
                     'homeworkName': homework_name,
                     'pageSize': 30,
                     'status': status,
                     'currPage': 1
                 }
                 res = requests.post(url=url,
                                     headers=self.teacher_headers,
                                     json=data)
                 assert_res(res.text)
                 data_ret = res.json()
                 try:
                     data_list = data_ret['data']['list']
                 except TypeError:
                     print(f'接口"/homework/tchHwList"报错,返回{data_ret["msg"]}')
                 except KeyError:
                     print(f'接口"/homework/tchHwList"返回{data_ret}')
                 else:
                     print([{
                         i['homeworkId']: i['homeworkName']
                     } for i in data_list])
Exemplo n.º 10
0
 def test_06_get_works_hall(self):
     """
     获取作品大厅列表
     :return:
     """
     class_id_list = self.teacher_parm.get_class_list(get_all=True)
     class_id_list.append('')
     for class_id in class_id_list:
         for s in range(2):
             for k in ['', '测试']:
                 url = f'{self.ip}/pc/play/getPlayWorksHall'
                 params = f'pageNum=1&pageSize=12&sort={s}&keyword={k}&classId={class_id}'
                 print(params)
                 response = requests.get(url=url, headers=self.teacher_headers,
                                         params=params)
                 assert_res(response.text)
                 data_ret = response.json()
                 time.sleep(1)
                 try:
                     data_list = data_ret['data']['list']
                 except TypeError:
                     print(f'接口"/pc/play/getPlayWorksHall"报错,返回{data_ret["msg"]}')
                     print('##############################################################')
                 except KeyError:
                     print(data_ret)
                     print('##############################################################')
                 else:
                     print(f'班级{class_id}',
                           [{i['id']: {i['title']: f"作者:{i['nickname']}"}} for i in data_list])
                     print('##############################################################')
Exemplo n.º 11
0
 def test_user_courses(self):
     """
     用户课程列表
     :return:
     """
     url = f'{self.ip}/course/user/courses'
     for class_id in self.class_id_list:
         for series_id in self.series_id_list:
             data = {
                 "classId": class_id,
                 "flag": 1,
                 "pageNum": 1,
                 "pageSize": 12,
                 "seriesId": series_id
             }
             res = requests.post(url=url, headers=self.student_headers, json=data)
             assert_res(res.text)
             time.sleep(1)
             data_ret = res.json()
             try:
                 data_list = data_ret['data']['list']
             except TypeError:
                 print(f'接口"/course/user/courses"报错,返回{data_ret["msg"]}')
             except KeyError:
                 print(f'接口"/course/user/courses"返回{data_ret}')
             else:
                 print([{i['id']: [i['seriesName'], i['issueName']]} for i in data_list])
Exemplo n.º 12
0
 def test_01_add_category(self):
     url = f'{self.ip[:-8]}/ddc-port/play/addSucaiCategory'
     data = {
         'categoryName': '接口添加分类待删'
     }
     response = requests.post(url=url, headers=self.student_headers, json=data)
     assert_res(response.text, '操作成功')
Exemplo n.º 13
0
 def test_09_work_detail(self):
     """
     游客通过作品ID获取作品详情
     :return:
     """
     works_id_list = self.teacher_parm.get_work_id_list()
     url = f'{self.ip[:-8]}/ddc-port/play/workDetail'
     headers = {
         'Content-Type': 'application/json',
         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                       'Chrome/68.0.3440.84 Safari/537.36'
     }
     params = f'worksId={works_id_list[0]}'
     response = requests.get(url=url, headers=headers, params=params)
     assert_res(response.text)
     data_ret = response.json()
     try:
         data_dic = data_ret['data']
         print(f'作品id:{data_dic["id"]},'
               f'作品名称:{data_dic["title"]},'
               f'作者:{data_dic["nickname"]}')
     except TypeError:
         print(f'接口"/play/workDetail"报错,返回{data_ret["msg"]}')
     except KeyError:
         print(data_ret)
Exemplo n.º 14
0
 def test_02_detail(self):
     """
     详情(学生和老师)
     :return:
     """
     for i in ['student', 'teacher']:
         url = f'{self.ip}/learning/{i}/detail' \
             if 'student' == i else f'{self.ip}/learning/{i}/detail/{self.student_id}'
         header = self.student_headers if i == 'student' else self.teacher_headers
         class_id_list = self.student_class_id_list if i == 'student' else self.teacher_class_id_list
         for series_id in self.series_id_list:
             for class_id in class_id_list:
                 for flag in ['', 1]:
                     params = f'seriesId={series_id}&classId={class_id}&flag={flag}' \
                         if flag == 1 else f'seriesId={series_id}&classId={class_id}'
                     res = requests.get(url=url, headers=header, params=params)
                     assert_res(res.text)
                     time.sleep(1)
                     data_ret = res.json()
                     try:
                         print([(d['name'], d['grade'], d['avgGrade']) for d in data_ret['data']])
                     except TypeError:
                         msg = '接口正常,没有数据' \
                             if data_ret['msg'] == '操作成功' else \
                             f'接口/learning/{i}/detail报错,返回{data_ret["msg"]}'
                         print(msg)
                     except KeyError:
                         print(f'接口/learning/{i}/detail,返回{data_ret},与预期不符')
Exemplo n.º 15
0
 def test_03_detail_page(self):
     """
     学生-自己详情
     老师-学生详情-数据分页
     :return:
     """
     for i in ['student', 'teacher']:
         url = f'{self.ip}/learning/{i}/detail/page' \
             if 'student' == i else f'{self.ip}/learning/{i}/detail/page/{self.student_id}'
         header = self.student_headers if i == 'student' else self.teacher_headers
         class_id_list = self.student_class_id_list if i == 'student' else self.teacher_class_id_list
         for series_id in self.series_id_list:
             for class_id in class_id_list:
                 for flag in ['', 1]:
                     params = f'seriesId={series_id}&classId={class_id}&flag={flag}&pageNum=1&pageSize=30' \
                         if flag == 1 else f'seriesId={series_id}&classId={class_id}&pageNum=1&pageSize=30'
                     res = requests.get(url=url, headers=header, params=params)
                     assert_res(res.text)
                     time.sleep(1)
                     data_ret = res.json()
                     try:
                         data_list = data_ret['data']['list']
                     except TypeError:
                         msg = '接口正常,没有数据' \
                             if data_ret['msg'] == '操作成功' else \
                             f'接口/learning/{i}/detail/page报错,返回{data_ret["msg"]}'
                         print(msg)
                     except KeyError:
                         print(f'接口/learning/{i}/detail/page,返回{data_ret},与预期不符')
                     else:
                         print([(d['name'], d['grade'], d['avgGrade']) for d in data_list])
Exemplo n.º 16
0
 def test_04_evaluate(self):
     """
     学生-自己编程能力
     老师-学生详情-编程能力
     :return:
     """
     out_list = []
     for i in ['student', 'teacher']:
         url = f'{self.ip}/learning/{i}/evaluate' \
             if 'student' == i else f'{self.ip}/learning/{i}/evaluate/{self.student_id}'
         header = self.student_headers if i == 'student' else self.teacher_headers
         res = requests.get(url=url, headers=header)
         assert_res(res.text)
         time.sleep(1)
         data_ret = res.json()
         try:
             out_list.append([{i['label']: i['score']} for i in data_ret['data']])
             print(f'{i}:{[{i["label"]: i["score"]} for i in data_ret["data"]]}')
         except TypeError:
             print(f'接口"/learning/{i}/evaluate"报错,返回{data_ret["msg"]}')
         except KeyError:
             print(f'接口/learning/{i}/evaluate,返回{data_ret},与预期不符')
     try:
         assert out_list[0] == out_list[1]
     except AssertionError:
         print('教师和学生数据不一致')
 def test_class_list(self):
     """
     班级管理-列表
     :return:
     """
     url = f'{self.ip}/teachcenter/classmanage/list'
     for t in range(1, 3):
         for k in ['', '接口']:
             data = {
                 "classType": t,
                 "currPage": 1,
                 "keyword": k,
                 "pageSize": 30,
                 "schoolId": self.school_id
             }
             res = requests.post(url=url, headers=self.manager_param.headers, json=data)
             assert_res(res.text)
             time.sleep(1)
             data_ret = res.json()
             try:
                 data_list = data_ret['data']['list']
             except TypeError:
                 print(f'接口/teachcenter/classmanage/stuList报错,返回{data_ret["msg"]}')
             except KeyError:
                 print(f'接口/teachcenter/classmanage/stuList返回{data_ret}')
             else:
                 pprint([(i['classId'], i['className'], i['stuCount']) for i in data_list])
 def test_03_get_teacher_list(self):
     """
     获取老师管理列表
     :return:
     """
     url = f'{self.ip}/teachcenter/teachermanage/list'
     for t in range(1, 4):
         for k in ['', '接口']:
             data = {
                 "currPage": 1,
                 "keyword": k,
                 "pageSize": 40,
                 "schoolId": self.school_id,
                 "tchType": t
             }
             res = requests.post(url=url,
                                 headers=self.manager_headers,
                                 json=data)
             assert_res(res.text)
             time.sleep(1)
             data_ret = res.json()
             try:
                 data_list = data_ret['data']['list']
             except TypeError:
                 print(
                     f'接口/teachcenter/teachermanage/list报错,返回{data_ret["msg"]}'
                 )
             except KeyError:
                 print(f'接口/teachcenter/teachermanage/list返回{data_ret}')
             else:
                 pprint([{i['tchId']: i['tchName']} for i in data_list])
    def test_08_file_import(self):
        """
        教师管理-批量导入
        :return:
        """
        from requests_toolbelt.multipart.encoder import MultipartEncoder

        url = f'{self.ip}/teachcenter/teachermanage/fileImport'
        file_name = 'teacher.xls'
        with open(f'{self.file_path}upload\\{file_name}', 'rb') as f:
            m = MultipartEncoder(
                {'file': (file_name, f, 'application/vnd.ms-excel')})
            self.manager_headers['Content-Type'] = m.content_type
            params = f'schoolId={self.school_id}'
            res = requests.post(url=url,
                                headers=self.manager_headers,
                                data=m,
                                params=params)
            assert_res(res.text, '批量导入用户失败')
            data_ret = res.json()
            try:
                print(data_ret['data']['errMsg'])
            except TypeError:
                print(
                    f'接口/teachcenter/teachermanage/fileImport报错,返回{data_ret["msg"]}'
                )
            except KeyError:
                print(f'接口/teachcenter/teachermanage/fileImport返回{data_ret}')
Exemplo n.º 20
0
 def test_01_post_work(self):
     """
     上传作品
     :return:
     """
     save_draft_for_works(self.teacher_parm)
     draft_id_list = self.teacher_parm.get_draft_id_list()
     code = turtle_code()
     url = f'{self.ip[:-8]}/ddc-port/play/postWork'
     for p in range(2):
         data = {
             "codeList": [
                 {
                     "fileContent": code,
                     "fileName": "main.py",
                     "fileType": 1,
                     "rwType": 1
                 }
             ],
             "cover": "https://edu-test-1255999742.file.myqcloud.com/portrait/20190527/"
                      "4a60ada1fc0f478ca109f9fe49419328.jpg",
             "description": "发布接口测试",
             "draftId": draft_id_list[0],
             "publishCode": p,
             "title": f"接口发布作品源代码{p}"
         }
         response = requests.post(url=url, headers=self.teacher_headers, json=data)
         assert_res(response.text)
Exemplo n.º 21
0
 def test_05_weak(self):
     """
     学生-自己薄弱统计
     老师-学生详情-薄弱统计
     :return:
     """
     for i in ['student', 'teacher']:
         url = f'{self.ip}/learning/{i}/weak' \
             if 'student' == i else f'{self.ip}/learning/{i}/weak/{self.student_id}'
         header = self.student_headers if i == 'student' else self.teacher_headers
         for series_id in self.series_id_list:
             params = f'seriesId={series_id}'
             res = requests.get(url=url, headers=header, params=params)
             assert_res(res.text)
             time.sleep(1)
             data_ret = res.json()
             try:
                 print([{i['label']: i['grade']} for i in data_ret['data']])
             except TypeError:
                 msg = '接口正常,没有数据' \
                     if data_ret['msg'] == '操作成功' else \
                     f'接口/learning/{i}/weak报错,返回{data_ret["msg"]}'
                 print(msg)
             except KeyError:
                 print(f'接口/learning/{i}/weak,返回{data_ret},与预期不符')
Exemplo n.º 22
0
 def test_07_teacher_classes(self):
     """
     老师-班级信息
     :return:
     """
     url = f'{self.ip}/learning/teacher/classes'
     res = requests.get(url=url, headers=self.teacher_headers)
     assert_res(res.text)
Exemplo n.º 23
0
 def test_06_teacher_analysis(self):
     """
     老师-学情分析
     :return:
     """
     url = f'{self.ip}/learning/teacher/analysis'
     res = requests.get(url=url, headers=self.teacher_headers)
     assert_res(res.text)
Exemplo n.º 24
0
 def test_06_user_info(self):
     """
     用户信息
     :return:
     """
     url = f'{self.ip}/user/userinfo'
     response = requests.get(url=url, headers=self.teacher_headers)
     assert_res(response.text)
Exemplo n.º 25
0
 def test_05_logout(self):
     """
     注销
     :return:
     """
     url = f'{self.ip}/user/logout'
     response = requests.get(url=url, headers=self.teacher_headers)
     assert_res(response.text)
Exemplo n.º 26
0
 def test_03_password_reset(self):
     """
     用户-重置密码
     :return:
     """
     user_id, _ = self.teacher_params.get_user_school_id()
     url = f'{self.ip}/user/password/reset/{user_id}'
     response = requests.get(url=url, headers=self.teacher_headers)
     assert_res(response.text)
 def test_04_delete_teacher(self):
     """
     管理员删除教师
     :return:
     """
     url = f'{self.ip}/teachcenter/teachermanage/remove'
     data = {"schoolId": self.school_id, "tchIds": self.teacher_id_list[:1]}
     res = requests.post(url=url, headers=self.manager_headers, json=data)
     assert_res(res.text)
 def test_student_info(self):
     """
     班级管理-学生列表-学生信息查询
     :return:
     """
     url = f'{self.ip}/teachcenter/classmanage/stuInfo/{self.student_id_list[0]}'
     res = requests.get(url=url, headers=self.manager_param.headers)
     assert_res(res.text)
     pprint(res.json())
Exemplo n.º 29
0
 def test_07_switch_school(self):
     """
     切换学校
     :return:
     """
     school_id_list = self.teacher_params.get_school_id_list()
     for i in [1, 0]:
         url = f'{self.ip}/user/switch/school/{school_id_list[i]}'
         response = requests.get(url=url, headers=self.teacher_headers)
         assert_res(response.text)
Exemplo n.º 30
0
def del_course(parameter, course_id):
    """
    删除指定课程
    :param parameter: 参数对象
    :param course_id: 课程id
    :return:
    """
    url = f'{parameter.ip}/course/teacher/del/{course_id}'
    res = requests.get(url=url, headers=parameter.headers)
    assert_res(res.text)