def test_a_modify_login_passwd(self, old, new1, new2, expect): self.modify_passwd.do_modify_login_passwd(old, new1, new2) username = login_user_info['username'] sql = f'update system_user set pwd="B5B1C07C180FEFC77671906F382488F2" where name="{username}"' if '修改成功' in self.driver.find_element_by_css_selector( '#panel-password-success>div.modal-body.modal-warning>div>h4' ).text: actual = 'login: modify password pass' Utility.update_data(login_user_info, sql) self.driver.refresh() else: if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body>div.bootbox.modal.fade.mydialog.in' '>div>div>div.modal-body>div'): content = self.driver.find_element_by_css_selector( 'body>div.bootbox.modal.fade.mydialog.in' '>div>div>div.modal-body>div').text if '新密码和原密码一致' in content: actual = 'login:new vs old is same' elif '原密码错误' in content: actual = 'login:old password is wrong' elif '请输入原密码' in content: actual = 'login:old passeord is empty' elif '两次新密码输入不一致' in content: actual = 'login:new_1st vs new_2st is not equal' elif '新密码格式不正确' in content: actual = 'login:new password format is wrong' else: actual = 'login:unknow error' else: actual = 'alert not appear' self.driver.refresh() self.assertEqual(expect, actual)
def test_b_do_iterview(self,result,comment,expect): sql = 'select count(*) from skill_record' db_result1 = Utility.query_one(user_info,sql) ele_text = self.technical_interview.do_interview(result,comment) db_result2 = Utility.query_one(user_info,sql) if '保存成功' in ele_text and db_result2[0] - db_result1[0] == 1: actual = 'test do technical interview pass' else: actual = 'test do technical interview fail' self.driver.refresh() self.assertEqual(expect,actual)
def test_b_add_overtime_application(self, s_time, e_time, way, hours, region, reason, expect): sql = 'select count(*) from apply' db_result1 = Utility.query_one(user_info, sql) alert_text = self.overtime_application.do_add_overtime_application( s_time, e_time, way, hours, region, reason) db_result2 = Utility.query_one(user_info, sql) if '加班申请已提交' in alert_text and db_result2[0] - db_result1[0] == 1: actual = 'test add overtime application pass' else: actual = 'test add overtime application fail' self.driver.refresh() self.assertEqual(expect, actual)
def test_b_refer_to_duty(self, who, date, expect): sql = 'select count(*) from duty' db_result1 = Utility.query_one(user_info, sql) self.teacher_duty.do_refer_to_duty(who, date) db_result2 = Utility.query_one(user_info, sql) ele_text = self.driver.find_element_by_css_selector( 'body > div.bootbox.modal.fade.mydialog.in > div > div ' '> div.modal-body > div').text if '新增值班成功' in ele_text and db_result2[0] - db_result1[0] == 1: actual = 'test refer to duty pass' else: actual = 'test refer to duty fail' self.driver.refresh() self.assertEqual(expect, actual)
def test_b_entry_sigle_exam(self, class_name, phase, week, score, expect): self.week_exam.do_entry_sigle_score(class_name, phase, week, score) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in' ' > div > div'): actual = 'test entry sigle exam fail' self.driver.refresh() else: ele = self.driver.find_element_by_css_selector( '#pe-result > tbody > tr:nth-child(1) > ' 'td:nth-child(9) > button') attr = ele.get_attribute('onclick') print(attr) attr_dict = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') student_id = dict_attr['student_id'] phase1_score = dict_attr['phase1'] sql1 = f"select AVG(score) from week_exam where week_exam_student_id='{student_id}' and phase='01'" db_result = Utility.query_one(user_info, sql1) print(db_result, phase1_score) if db_result[0] == int(phase1_score): actual = 'test entry sigle exam pass' else: actual = 'test entry sigle exam fail' self.assertEqual(expect, actual)
def test_a_query_week_exam_info(self, class_name, stu_name, expect): self.week_exam.do_query_week_exam_info(class_name, stu_name) time.sleep(2) if class_name == '全部': re_class = '%' else: re_class = class_name if stu_name == '': re_name = '%' else: re_name = stu_name sql = f"select count(*) from student where student_class_id in (select class_id from class where class_no like '{re_class}' " \ f") and status like '02' and student_name like '{re_name}%'" db_result = Utility.query_one(user_info, sql) sum_text = self.driver.find_element_by_css_selector( '#stagetest > div.bootstrap-table > div.fixed-table-container >' ' div.fixed-table-pagination > div.pull-left.pagination-detail >' ' span.pagination-info').text if '总共' in sum_text: sum_num = sum_text.split('总共 ')[1].split(' 条')[0] if db_result[0] == int(sum_num): actual = 'test query week exam pass' else: actual = 'test query week exam fail' else: actual = 'test query week exam fail' self.assertEqual(expect, actual)
def test_a_click_homework(self, level, expect): attr = self.daily_exam.do_click_homework_btn(level) attr_dict = attr.split('(')[1].split(',$')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') homeword_id = dict_attr['homework_id'] sql = f'select result from homework where homework_id = {homeword_id}' db_result = Utility.query_one(user_info, sql) if db_result: if db_result[0] == '01': re = '忧' elif db_result[0] == '02': re = '良' elif db_result[0] == '03': re = '中' elif db_result[0] == '04': re = '查' else: re = '未交' else: re = '' if re == level: actual = 'test do homework pass' else: actual = 'test do homework fail' self.assertEqual(expect, actual)
def test_b_click_morning_exam(self, level, expect): attr = self.daily_exam.do_click_morning_exam(level) attr_dict = attr.split('(')[1].split(',$')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') student_id = dict_attr['student_id'] sql = f'select result from morn_exam where morn_exam_student_id = {student_id} ' \ f'order by morn_exam_id desc limit 1' db_result = Utility.query_one(user_info, sql) if db_result: if db_result[0] == '01': re = '优' elif db_result[0] == '02': re = '良' elif db_result[0] == '03': re = '中' elif db_result[0] == '04': re = '查' else: re = '未交' else: re = '' if re == level: actual = 'test do morning exam pass' else: actual = 'test do morning exam fail' self.assertEqual(expect, actual)
def test_fm_modify_water(cls, one_subject, two_subject, fm_type, settlement, fm_trading_time, head, payment, fm_amount, trading, fm_other_trading, fm_capital_uses, expect): try: FinancialManagement(cls.driver).fm_new_water( one_subject, two_subject, fm_type, settlement, fm_trading_time, head, payment, fm_amount, trading, fm_other_trading, fm_capital_uses) capital_uses = f"'{fm_capital_uses}'" sql = f'SELECT first_subject_id FROM detailed_dealings WHERE comm = {capital_uses} ;' fm_modify_water = Utility.query_one(fm_financial_user_info, sql) fm_results = fm_modify_water[0] if fm_results == one_subject: actual = 'FM_correct' else: actual = 'FM_failed' cls.driver.refresh() cls.assertEqual(actual, expect) cls.driver.refresh() except Exception as e: actual = 'FM_failed' cls.driver.refresh() cls.assertEqual(actual, expect)
def test_b_add_course(self, s_time, e_time, teacher, classroom, class_num, course, expect): sql = 'select count(*) from curriculum_schedule' db_result1 = Utility.query_one(user_info, sql) self.course_schedule.do_add_curriculum(s_time, e_time, teacher, classroom, class_num, course) time.sleep(5) text = self.driver.find_element_by_css_selector( 'body > div.bootbox.modal.fade.mydialog.in > div > div >' ' div.modal-body > div').text db_result2 = Utility.query_one(user_info, sql) if '排课成功' in text and db_result2[0] - db_result1[0] == 1: actual = 'test add course pass' else: actual = 'test add course fail' self.driver.refresh() self.assertEqual(expect, actual)
def test_today_morning_exam(cls, method, score, question, expect): import time local_time = time.strftime('%Y-%m-%d', time.localtime(time.time())) sql = f'select count(*) from morn_exam where create_time like "{local_time}%"' db_result1 = Utility.query_one(today_morning_exam_user_info, sql) cls.today_morning_exam.do_morning_exam(method, score, question) db_result2 = Utility.query_one(today_morning_exam_user_info, sql) num = db_result2[0] - db_result1[0] if num == 1: actual = 'test today morning exam pass' sql_del = 'delete from morn_exam order by morn_exam_id desc limit 1' Utility.update_data(today_morning_exam_user_info, sql_del) else: actual = 'test today morning exam fail' cls.assertEqual(expect, actual)
def test_c_undo_overtime_application(self, unkonw, expect): attr1, attr2 = self.overtime_application.do_undo_action() attr_dict = attr1.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') id = dict_attr['id'] sql1 = f'select status from apply where id ={id}' db_result = Utility.query_one(user_info, sql1) time.sleep(2) status_text = self.overtime_application.get_line1_status() if '已撤销' in status_text and db_result[0] == '04' and attr2 == 'true': actual = 'test undo overtime application pass' sql2 = f"UPDATE apply SET status='03' WHERE (`id`='{id}')" Utility.update_data(user_info, sql2) else: actual = 'test undo overtime application fail' self.assertEqual(expect, actual)
def test_b_import_all_phase_exam(self, class_name, phase, file_path, expect): sql = 'select count(*) from phase_exam' db_result1 = Utility.query_one(user_info, sql) self.phase_exam.do_import_phase_exam(class_name, phase, file_path) db_result2 = Utility.query_one(user_info, sql) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > div > div'): actual = 'test import all phase exam fail' self.driver.refresh() else: if db_result2[0] - db_result1[0] >= 1: actual = 'test import all phase exam pass' else: actual = 'test import all phase exam fail' self.assertEqual(expect, actual)
def test_c_add_logs(self, s_time, e_time, hour, way, logs, expect): attr = self.teacher_duty.do_add_logs(s_time, e_time, hour, way, logs) attr_dict = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') id = dict_attr['id'] sql = f'update duty set log_status = "01" where id = {id}' ele_text = self.driver.find_element_by_css_selector( 'body > div.bootbox.modal.fade.mydialog.in > div > div > ' 'div.modal-body > div').text if '日志填写成功' in ele_text: actual = 'test add duty logs pass' Utility.update_data(user_info, sql) else: actual = 'test add duty logs fail' self.driver.refresh() self.assertEqual(expect, actual)
def test_c_upload_exam(self, class_name, phase, week, file_path, expect): sql = 'select count(*) from week_exam' db_result1 = Utility.query_one(user_info, sql) self.week_exam.do_upload_week_exam(class_name, phase, week, file_path) time.sleep(5) db_result2 = Utility.query_one(user_info, sql) print(db_result1, db_result2) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.' 'mydialog.in > div > div'): actual = 'test upload exam file fail' self.driver.refresh() else: if db_result2[0] - db_result1[0] >= 1: actual = 'test upload exam file pass' else: actual = 'test upload exam file fail' self.assertEqual(expect, actual)
def test_a_entry_sigle_phase_exam(self, class_name, score, phase, comment, expect): self.phase_exam.do_entry_sigle_phase_exam(class_name, score, phase, comment) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > ' 'div > div'): actual = 'test import sigle phase exam fail' self.driver.refresh() else: ele = self.driver.find_element_by_css_selector( '#pe-result > tbody > tr:nth-child(1) > ' 'td:nth-child(9) > button') attr = ele.get_attribute('onclick') print(attr) attr_dict = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') student_id = dict_attr['student_id'] phase1_score = dict_attr['phase1'] phase2_score = dict_attr['phase2'] phase3_score = dict_attr['phase3'] phase4_score = dict_attr['phase4'] sql = f"select score from phase_exam where phase_exam_student_id ='{student_id}' and phase_exam_class_id = '4' order by phase asc" db_result = Utility.query_all(user_info, sql) print(db_result) num = len(db_result) print(num) print(float(db_result[0][0])) print(float(phase1_score)) if num == 1: if float(db_result[0][0]) == float(phase1_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 2: if float(db_result[0][0]) == float(phase1_score) and float( db_result[1][0]) == float(phase2_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 3: if float(db_result[0][0]) == float(phase1_score) and float(db_result[1][0]) == float(phase2_score) and \ float(db_result[2][0]) == float(phase3_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 4: if float(db_result[0][0]) == float(phase1_score) and float(db_result[1][0]) == float(phase2_score) and float(db_result[2][0]) == float(phase3_score)\ and float(db_result[3][0]) == float(phase4_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' else: actual = 'test import sigle phase exam fail' self.assertEqual(expect, actual)
def test_a_query_info(self,teacher,expect): ele_text = self.course_schedule.do_query_teacher_info(teacher) sum_record = ele_text.split('总共 ')[1].split(' 条')[0] sql = 'select count(*) from curriculum_schedule where work_id = WNCD005' db_result = Utility.query_one(user_info,sql) if db_result[0] == int(sum_record): actual = 'query teacher schedule pass' else: actual = 'query teacher schedule fail' self.assertEqual(expect,actual)
def test_c_attendance_all(cls, kn, expect): cls.today_attendance.do_attendance_all() record_sum = cls.today_attendance.get_record_text() sql = f'select count(teacher_id) from attendance where create_time like "{local_time}%"' db_result = Utility.query_one(search_att_user_info, sql) if str(db_result[0]) in record_sum: actual = 'test all attendance pass' else: actual = 'test all attendance fail' cls.assertEqual(expect, actual)
def test_b_add_leave(cls, s_time, e_time, type, days, name, reason, comment, expect): sql = 'select count(*) from student_leave where create_time >"2020-03-01" and leave_status="请假中"' db_result1 = Utility.query_one(user_info, sql) attr = cls.take_leave.do_add_leave(s_time, e_time, type, days, name, reason, comment) get_obj = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(get_obj, encoding='utf-8') student_name = dict_attr['student_name'] db_result2 = Utility.query_one(user_info, sql) if Service.wait_until_element_is_visible(cls.driver,By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > div > ' 'div > div.modal-body > div')\ and db_result2[0] - db_result1[0] == 0 and student_name != name: actual = 'test add leave fail' cls.driver.refresh() else: actual = 'test add leave pass' cls.assertEqual(expect, actual)
def test_a_query_leave(cls, unknow, expect): cls.take_leave.do_query_leave() time.sleep(5) page_lines = cls.take_leave.get_leave_record() sql = 'select count(*) from student_leave where create_time >"2020-03-01" and leave_status="请假中"' db_result = Utility.query_one(user_info, sql) if db_result[0] == page_lines: actual = 'test query leave pass' else: actual = 'test query leave fail' cls.assertEqual(expect, actual)
def test_b_attendance_one(cls, status, expect): attr = cls.today_attendance.do_random_attandence(status) time.sleep(5) stu_id = attr.split("_")[1] print(stu_id) sql = f'select result from attendance where attendance_student_id={stu_id} and update_time like "{local_time}%"' db_result = Utility.query_one(search_att_user_info, sql) print(db_result) if db_result[0] == status: actual = 'test random attendance pass' else: actual = 'test random attendance fail' cls.assertEqual(expect, actual)
def test_e_cancel_leave(cls, unknow, expect): attr = cls.take_leave.do_cancel_leave() get_obj = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(get_obj, encoding='utf-8') leave_id = dict_attr['leave_id'] sql = f'select leave_status from student_leave where leave_id={leave_id}' db_result = Utility.query_one(user_info, sql) if db_result[0] == '已销假': actual = 'test cancel leave record pass' else: actual = 'test cancel leave record fail' cls.assertEqual(expect, actual)
def test_b_add_enterprise(self, enter_name, ent_industry, enter_address, enter_person, enter_tel, email, qq, expect): sql = 'select count(*) from enterprise_info' db_result1 = Utility.query_one(user_info, sql) content = self.enterprise_info.do_add_enterprise( enter_name, ent_industry, enter_address, enter_person, enter_tel, email, qq) db_result2 = Utility.query_one(user_info, sql) result = db_result2[0] - db_result1[0] time.sleep(5) if "不能为空" in content: actual = 'test add corporate customer fail' self.enterprise_info.click_close_btn() elif '新增成功' in content: if result == 1: actual = 'test add corporate customer pass' else: actual = 'test add corporate customer fail' else: actual = 'test add corporate customer fail' self.driver.refresh() self.assertEqual(expect, actual)
def test_query_all_exam_record(cls, class_name, guide, name, s_time, e_time, expect): sum_text = cls.exam_record.do_query_all_record(class_name, guide, name, s_time, e_time) time.sleep(5) sum_num = sum_text.split('总共 ')[1].split(' 条')[0] sql = 'select count(*) from morn_exam' db_result = Utility.query_one(user_info, sql) if int(sum_num) == db_result[0]: actual = 'test query all morning exam record pass' else: actual = 'test query all morning exam record fail' cls.assertEqual(expect, actual)
def start(self): from HTMLTestRunner import HTMLTestRunner ts = unittest.TestSuite() loader = unittest.TestLoader() from woniuboss.tools.woniuboss_gui.utility import Utility testcase_names = Utility.trans_str('..\\..\\conf\\woniuboss_gui\\perform.conf') tests = loader.loadTestsFromNames(testcase_names) ts.addTests(tests) # 测试报告文件名称的格式为:xxxx-xx-xx_xx_xx_xx_report.html import time ctime = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime()) with open('..\\..\\logs\\woniuboss_gui\\%s_report.html'%(ctime),'w') as file: runner = HTMLTestRunner(stream=file,verbosity=2) runner.run(ts)
def test_c_upload_picture(self, path, expect): attr = self.take_leave.do_upload_leave_permit(path) print(attr) get_obj = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(get_obj, encoding='utf-8') leave_id = int(dict_attr['leave_id']) sql = 'select path from student_leave where leave_id=%d' % leave_id db_result = Utility.query_one(user_info, sql) if db_result != None: actual = 'test upload picture pass' else: actual = 'test upload picture fail' self.assertEqual(expect, actual)
def test_b_add_course_schedule(cls,s_time,e_time,status1,classroom1,class1,orientation1,course1, status2,classroom2,class2,orientation2,course2, status3,classroom3,class3,orientation3,course3, status4,classroom4,class4,orientation4,course4, status5,classroom5,class5,orientation5,course5, status6,classroom6,class6,orientation6,course6, status7,classroom7,class7,orientation7,course7, status8,classroom8,class8,orientation8,course8, status9,classroom9,class9,orientation9,course9,expect): sql ='select count(*) from curriculum_schedule' db_result1 = Utility.query_one(user_info,sql) attr = cls.course_schedule.do_add_curriculum(s_time,e_time,status1,classroom1,class1,orientation1,course1, status2,classroom2,class2,orientation2,course2, status3,classroom3,class3,orientation3,course3, status4,classroom4,class4,orientation4,course4, status5,classroom5,class5,orientation5,course5, status6,classroom6,class6,orientation6,course6, status7,classroom7,class7,orientation7,course7, status8,classroom8,class8,orientation8,course8, status9,classroom9,class9,orientation9,course9) print(attr) db_result2 = Utility.query_one(user_info,sql) num = db_result2[0] - db_result1[0] time.sleep(2) if Service.is_element_present(cls.driver,By.CSS_SELECTOR,'body > div.bootbox.modal.fade.mydialog.in > div > ' 'div > div.modal-footer > button'): actual = 'test add course schedule fail' cls.driver.refresh() else: if 'none' in attr and num ==9: actual = 'test add course schedule pass' else: actual = 'test add course schedule fail' cls.assertEqual(expect,actual)
def test_a_serach_stu_info(cls, orien_name,class_name,status_name,stu_name,expect): cls.student_info.do_search_info(orien_name,class_name,status_name,stu_name) time.sleep(2) if status_name == '全部': re_status = '%' elif status_name == '未开班': re_status = '01' elif status_name == '在校学习': re_status = '02' elif status_name == '转就业': re_status = '03' elif status_name == '已就业': re_status = '04' elif status_name == '已休学': re_status = '05' elif status_name == '已失联': re_status = '06' else: re_status = '07' if stu_name == '': re_name = '%' else: re_name = stu_name if class_name == '全部': re_class = '%' else: re_class = class_name if orien_name == '全部': re_orien = '%' else: re_orien = orien_name sql = f"select count(*) from student where student_class_id in (select class_id from class where class_no like '{re_class}' " \ f"and orientation like '{re_orien}') and status like '{re_status}' and student_name like '{re_name}%'" db_result = Utility.query_one(search_stu_user_info,sql) sum_text = cls.driver.find_element_by_css_selector('#stuInfo > div.bootstrap-table > div.fixed-table-container' '> div.fixed-table-pagination > div.pull-left.' 'pagination-detail > span.pagination-info').text if '总共' in sum_text: sum_num = sum_text.split('总共 ')[1].split(' 条')[0] if db_result[0] == int(sum_num): actual = 'test query student info pass' else: actual = 'test query student info fail' else: actual = 'test query student info fail' cls.assertEqual(expect,actual)
def test_em_induction(cls, enterprise, jobs, em_induction_time, em_induction_salary, em_interview_note, expect): try: EmploymentManagement(cls.driver).em_induction(enterprise, jobs, em_induction_time,em_induction_salary, em_interview_note) em_enterprise = f"'{enterprise}'" induction_salary = f"'{em_induction_salary}'" sql = f'SELECT job_position FROM job_register WHERE ent_name = {em_enterprise} and operator = {induction_salary};' em_induction = Utility.query_one(em_technology_user_info, sql) em_results = em_induction[0] if em_results == jobs: actual = 'EM_correct' else: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect) cls.driver.refresh() except Exception as e: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect)
def test_em_real_interview(cls, enterprise, jobs, em_interview_time, em_interview_feedback, expect): try: EmploymentManagement(cls.driver).em_real_interview(enterprise, jobs, em_interview_time, em_interview_feedback) interview_time = f"'{em_interview_time}'" interview_feedback = f"'{em_interview_feedback}'" sql = f'SELECT interview_post FROM realinterview WHERE rinterview_time = {interview_time} and remark = {interview_feedback};' em_real_interview = Utility.query_one(em_technology_user_info, sql) em_results = em_real_interview[0] if em_results == jobs: actual = 'EM_correct' else: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect) cls.driver.refresh() except Exception as e: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect)