def test_02_select_place(self): '''选择待审核企业列表中的第一条数据进行审核''' self.page = placeHome(self.dr) #企业备案引导首页 元素 self.assertEqual('企业备案审核', self.page.get_page_title(), '页面标题不一致') self.dr.waitSleep(2) table_data = self.page.get_table_data() # 获取查询结果table内的所有数据 if int(len(table_data)) < 2: self.assertTrue(1 == 2, '企业备案审核未执行,没有发现待审核企业备案') for i in range(len(table_data)): if int(len(table_data[i]) > 1): place_name = table_data[i][2] approve_type = table_data[i][5] self.page.select_approve_button(i) break '''填写审核信息''' self.dr.waitSleep(1) self.pageAp = placeApprove(self.dr) #审核信息填写页面 self.assertEqual('审核', self.pageAp.get_page_title(), '页面标题不一致') self.pageAp.select_approve_pass() #选择审核通过 self.pageAp.select_approve_finish() #选择审核完成 #self.pageAp.select_approve_result('通过') #self.pageAp.select_processing_mode('审核完成') self.pageAp.input_approve_comments(rdData.getGBK2312(30)) #输入审核意见 self.pageAp.click_approve_button() #点击审核确认按钮 if self.pageAp.approve_success_name_is_enabled(): self.assertTrue(1 == 1, '企业备案审核成功') log.info("企业备案审核成功,操作员:%s,%s;审核信息:%s,%s" % (globals()['node_name'], globals()['login_name'], place_name, approve_type)) else: self.assertTrue(1 == 2, "企业备案审核失败:%s" % self.pageAp.get_fail_text())
def test_index(self,test_data): place_dict={ 'cur_row':test_data['curRow'],#当前execl数据表数据行 'place_name':test_data['place_name'].strip(), #企业名称 'industry_name':test_data['industry_name'].strip(), #所属行业 'person_name':test_data['person_name'].strip(), #法人姓名 'person_phone':test_data['person_phone'].strip(), #法人电话号码 } print('备案信息:',place_dict) '''第一页 选择行业''' self.page=placeIndex(self.dr) #企业备案引导首页 元素 self.assertEqual('新增企业备案' ,self.page.get_page_title(),'页面标题不一致') self.page.select_industry(place_dict['industry_name']) #断言 if self.page.place_success_name_is_enabled(): self.assertTrue(1==1,'企业备案成功') self.writer_table.modify_cell(place_dict['cur_row'], writer_table.get_cols(),globals()['node_name']) self.writer_table.modify_cell(place_dict['cur_row'], writer_table.get_cols()+1,'备案成功') log.info("企业备案成功:%s,%s,%s,%s" %(globals()['node_name'],globals()['login_name'],place_dict['industry_name'],place_dict['place_name'])) else: self.assertTrue(1==2,'企业备案失败')
def setUpClass(self): self.dr = PySelenium() loginGo(self.dr).click_login()#登录系统 self.menu_page=leftPage(self.dr) #左边菜单元素 globals()['login_name']=self.menu_page.get_login_name() #登录用户名 globals()['node_name']=self.menu_page.get_node_name() #登录用户所属机构名 log.info('登录系统成功,开始测试...')
def test(): log.debug('hello, world,这是一个debug信息') log.info('hello, world,这是一个info信息') log.warning('hello ,world,这是一个warning信息') log.exception('hello ,world,这是一个exception信息') log.error('hello, world,这是一个error信息') log.critical('hello, world,这是一个critical信息')
class api_detect(unittest.TestCase): '''人脸识别''' #装载测试数据 execlName=os.path.join(getcwd.get_cwd(),"data\\api_data_detect.xls") caseData_excel = ExcelUtil(execlName, 'Sheet1') writer_table=ExcelAdd(execlName,sheet='Sheet1') log.info('装载测试数据成功') col_Num=writer_table.get_cols() writer_table.modify_cell(0, writer_table.get_cols(), 'status') writer_table.modify_cell(0, writer_table.get_cols()+1, 'return_msg') log.info('Execl文件表头写入成功') @classmethod def setUpClass(self): log.info('开始测试...') @classmethod def tearDownClass(self): self.writer_table.save()#保存execl测试结果 #self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器') def setUp(self): print('case_id: ',self.id(),'开始执行<br />') #固定格式,用于报表生成 def tearDown(self): '''测试报错或者用例不通过则截图''' if not testPass(self): print('截图: img\\report_img.png <br />')#固定格式,用于报表生成 print('结束执行<br />')#固定格式,用于报表生成 @ddt.data(*caseData_excel.next()) def test_index(self,test_data): place_dict={ 'cur_row':test_data['curRow'],#当前execl数据表数据行 'place_name':test_data['place_name'].strip(), #企业名称 'industry_name':test_data['industry_name'].strip(), #所属行业 'person_name':test_data['person_name'].strip(), #法人姓名 'person_phone':test_data['person_phone'].strip(), #法人电话号码 } print('备案信息:',place_dict) '''第一页 选择行业''' self.page=placeIndex(self.dr) #企业备案引导首页 元素 self.assertEqual('新增企业备案' ,self.page.get_page_title(),'页面标题不一致') self.page.select_industry(place_dict['industry_name']) #断言 if self.page.place_success_name_is_enabled(): self.assertTrue(1==1,'企业备案成功') self.writer_table.modify_cell(place_dict['cur_row'], writer_table.get_cols(),globals()['node_name']) self.writer_table.modify_cell(place_dict['cur_row'], writer_table.get_cols()+1,'备案成功') log.info("企业备案成功:%s,%s,%s,%s" %(globals()['node_name'],globals()['login_name'],place_dict['industry_name'],place_dict['place_name'])) else: self.assertTrue(1==2,'企业备案失败')
def run_case(): '''执行测试用例,生成测试报告''' htmlreportpath = os.path.join(reportpath, reportname) fp = open(htmlreportpath, "wb") runner = HTMLTestRunner(stream=fp, title=u"自动化测试报告", description=u"测试用例执行情况", verbosity=2) # 调用allcase函数返回值 runner.run(add_case()) fp.close() log.info('测试报告已生成:' + htmlreportpath)
def test_index(self, test_data): '''读取从业人员信息''' place_dict = { 'cur_row': test_data['curRow'], #当前execl数据表数据行 'place_name': test_data['place_name'].strip(), #企业名称 'industry_name': test_data['industry_name'].strip(), #所属行业 'person_name': test_data['person_name'].strip(), #姓名 'person_phone': test_data['person_phone'].strip(), #电话号码 } print('备案信息:', place_dict) '''选择行业''' self.page = personIndex(self.dr) #企业备案引导首页 元素 self.assertEqual('新增从业人员备案', self.page.get_page_title(), '页面标题不一致') self.page.select_industry(place_dict['industry_name']) '''输入人员基本信息''' self.page = personInfo(self.dr) self.dr.waitSleep(1) self.dr.mouseScroll(1000) #滚动鼠标到顶部 place_position = self.page.select_place_position() #所属场所 self.page.select_person_position() #职位/工种 self.page.select_person_country() #国家/地区 self.page.select_person_card() #证件类型 self.page.input_person_id_number(rdData.getIdNumber(1)[0]) #证件号码 self.page.input_person_name(place_dict['person_name']) #姓名 self.page.input_person_birth_date(rdData.getDate(-10000, -9000)) #出生日期 self.page.select_person_ethnicity() #民族 self.page.input_person_address(rdData.getGBK2312(20)) #户籍地址 self.page.input_person_issuing_authority(rdData.getGBK2312(10)) #签发机关 self.page.input_person_validity_date_from(rdData.getDate(0, 30)) ##有效期-开始 self.page.input_person_validity_date_to(rdData.getDate(1000, 3000)) #有效期-结束 self.page.input_person_phone_number(place_dict['person_phone']) #手机号码 #phone_number = self.page.input_person_phone_number('1355034796+')#手机号码 self.page.input_person_current_address(rdData.getGBK2312(30)) #现住详址 self.dr.mouseScroll(-1000) #滚动鼠标到底部 #self.page.click_person_save_button()#点击保存人员按钮 if self.page.person_success_name_is_enabled(): self.assertTrue(1 == 1, '人员备案成功') self.writer_table.modify_cell(place_dict['cur_row'], 5, globals()['node_name']) self.writer_table.modify_cell(place_dict['cur_row'], 6, '备案成功') log.info("人员备案成功:%s,%s,%s,%s,%s" % (place_position, place_dict['person_name'], place_dict['person_phone'], globals()['node_name'], globals()['login_name'])) else: self.assertTrue(1 == 2, '人员备案失败')
def get_ping_result(ip_address): p = subprocess.Popen(["ping.exe", ip_address], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) out = p.stdout.read().decode('gbk') #print(out) reg_receive = '已接收 = \d' match_receive = re.search(reg_receive, out) receive_count = -1 if match_receive: receive_count = int(match_receive.group()[6:]) if receive_count > 0: #接受到的反馈大于0,表示网络通 reg_min_time = '最短 = \d+ms' reg_max_time = '最长 = \d+ms' reg_avg_time = '平均 = \d+ms' match_min_time = re.search(reg_min_time, out) if match_min_time == None: min_time = '' else: min_time = int(match_min_time.group()[5:-2]) match_max_time = re.search(reg_max_time, out) if match_max_time == None: max_time = '' else: max_time = int(match_max_time.group()[5:-2]) match_avg_time = re.search(reg_avg_time, out) if match_avg_time == None: avg_time = '' else: avg_time = int(match_avg_time.group()[5:-2]) log.info('ping到达目标服务器<%s>!' % ip_address) return [receive_count, min_time, max_time, avg_time] else: log.info('网络不通,目标服务器<%s>不可达!' % ip_address) return [0, 9999, 9999, 9999]
class test_login(unittest.TestCase): '''登录页''' #装载测试数据 execlName = os.path.join(getcwd.get_cwd(), "data\\YDJFN_login_account_app.xlsx") caseData_excel = ExcelUtil(execlName, 'Sheet1') log.info('装载测试数据成功') #测试用例类级的方法,在所有测试用例执行之前执行 @classmethod def setUpClass(self): warnings.simplefilter('ignore', ResourceWarning) self.dr = AppDriver() self.page = pageElements(self.dr) log.info('测试App登录功能') #测试用例类级的方法,在所有测试用例执行完成后执行 @classmethod def tearDownClass(self): self.dr.quit() log.info('登录功能测试完成') def setUp(self): print('case_id: ', self.id(), '开始执行<br />') #固定格式,用于报表生成 def tearDown(self): '''测试报错或者用例不通过则截图''' if not testPass(self): print('截图: ', self.dr.getScreenshot(self.id()), '<br />') #固定格式,用于报表生成 print('结束执行<br />') #固定格式,用于报表生成 @ddt.data(*caseData_excel.next()) def test_login(self, test_data): '''测试登录功能''' login_name = test_data['login_name'] #登录账号 password = test_data['password'] #密码 ER = test_data['ER'] #预期结果 desc = test_data['desc'] #测试描述 AR = '' #实际结果 print('测试用例描述:%s' % (desc)) print('账号:%s' % (login_name)) print('密码:%s' % (password)) self.page.input_login_name(login_name) self.page.input_password(password) self.page.click_login_button() if self.page.find_element(): AR = '登录成功' else: AR = '登录失败' print(AR) self.assertEqual(ER, AR)
class test_login(unittest.TestCase): '''登录页''' #装载测试数据 execlName=os.path.join(getcwd.get_cwd(),"data\\KS_login_account.xlsx") caseData_excel = ExcelUtil(execlName, 'Sheet1') log.info('装载测试数据成功') #测试用例类级的方法,在所有测试用例执行之前执行 @classmethod def setUpClass(self): self.dr = PySelenium() self.page=pageElements(self.dr) self.page.open_browser() log.info('测试系统登录功能') #测试用例类级的方法,在所有测试用例执行完成后执行 @classmethod def tearDownClass(self): self.dr.quit() log.info('登录功能测试完成') def setUp(self): print('case_id: ',self.id(),'开始执行<br />') #固定格式,用于报表生成 self.page.winLocation() def tearDown(self): '''测试报错或者用例不通过则截图''' if not testPass(self): print('截图: ',self.dr.getScreenshot( self.id()),'<br />')#固定格式,用于报表生成 print('结束执行<br />')#固定格式,用于报表生成 @ddt.data(*caseData_excel.next()) def test_login(self,test_data): '''测试登录功能''' login_name=test_data['login_name'] #登录账号 password=test_data['password'] #密码 desc=test_data['desc'] #测试描述 print('测试用例描述:%s' %(desc)) print('账号:%s' %(login_name)) print('密码:%s' %(password)) self.page.input_login_name(login_name) self.page.input_password(password) self.page.input_verify_code() self.page.click_login_type() self.page.click_login_button() self.assertEqual(self.page.get_page_title(),'行业信息概览')
def works(): execlName = os.path.join(getcwd.get_cwd(), "data\\device_ip.xls") reader = ExcelReader(execlName, sheet='test_ip', title_line=False) data_table = reader.data log.info('Execl文件读取成功') writer_table = ExcelAdd(execlName, sheet='test_ip') col_Num = writer_table.get_cols() writer_table.modify_cell(0, col_Num, 'receive_count') writer_table.modify_cell(0, col_Num + 1, 'min_time') writer_table.modify_cell(0, col_Num + 2, 'max_time') writer_table.modify_cell(0, col_Num + 3, 'avg_time') log.info('Execl文件表头写入成功') failed = 0 for i in range(1, len(data_table)): ip = data_table[i][1] ping = get_ping_result(ip) receive_count = ping[0] min_time = ping[1] max_time = ping[2] avg_time = ping[3] if receive_count == 0: failed = failed + 1 if min_time == '' and max_time == '' and avg_time == '': failed = failed + 1 writer_table.modify_cell(i, col_Num, receive_count) writer_table.modify_cell(i, col_Num + 1, min_time) writer_table.modify_cell(i, col_Num + 2, max_time) writer_table.modify_cell(i, col_Num + 3, avg_time) ret_file = writer_table.save('test112.xls') log.info('Execl文件数据保存成功<%s>' % ret_file) if failed > 0: mail = SendEmail() mail.send_mail(files=[ret_file], subject='注意:监控的设备列表中有设备不在线')
def setUpClass(self): self.dr = PySelenium() self.dr.openUrl('https://lbs.amap.com/console/show/picker') log.info('网约房爬虫数据坐标验证,以高德地图api查询结果为标准')
class Industry_Search(unittest.TestCase): '''企业变更''' #装载测试数据 execlName=os.path.join(getcwd.get_cwd(),"data\\place_modify_data.xlsx") caseData_excel = ExcelUtil(execlName, 'Sheet1') log.info('装载测试数据成功') @classmethod def setUpClass(self): self.dr = PySelenium() loginGo(self.dr).click_login()#登录系统 self.menu_page=leftPage(self.dr) #左边菜单元素 globals()['login_name']=self.menu_page.get_login_name() #登录用户名 globals()['node_name']=self.menu_page.get_node_name() #登录用户所属机构名 log.info('登录系统成功,开始测试...') @classmethod def tearDownClass(self): #self.menu_page.go_login_out() #退出登录 #self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器') def setUp(self): print('case_id: ',self.id(),'开始执行<br />') #固定格式,用于报表生成 self.menu_page.go_place_modify() #点击菜单到 企业变更 功能链接 self.dr.switchFrame(MAIN_IFRAME) #指向iframe页,中间数据展示位置 def tearDown(self): '''测试报错或者用例不通过则截图''' if not testPass(self): print('截图: ',self.dr.getScreenshot( self.id()),'<br />')#固定格式,用于报表生成 print('结束执行<br />')#固定格式,用于报表生成 self.dr.switchFrameOut() #指向iframe上一级,左边菜单位置 @ddt.data(*caseData_excel.next()) def test_index(self,test_data): self.page=centerPage(self.dr) '''企业查询''' search_dict={ 'place_name':test_data['place_name'].strip(), #企业名称 'industry_name':test_data['industry_name'].strip(), #所属行业 'region_name':test_data['region_name'].strip(), #管辖机构 'place_code':test_data['place_name'].strip(),#统一社会信用代码/注册号 #'region_police':test_data['region_police'].strip(), #责任民警 'person_name':test_data['person_name'].strip(), #法人姓名 #'person_id_card':test_data['person_id_card'].strip(), #法人证件号码 'place_type':test_data['place_type'].strip(), #企业类型 'operating_state':test_data['operating_state'].strip(), #营业状态 #'opening_date_from':test_data['opening_date_from'].strip(), #开业时间-开始 #'opening_date_to':test_data['opening_date_to'].strip() #开业时间-结束 } print('查询条件:',search_dict) self.page.input_place_name(search_dict['place_name'])#输入企业名称 self.page.select_industry(search_dict['industry_name'])#所属行业 if search_dict['region_name']!='': self.page.select_region_first_name(search_dict['region_name'])#管辖机构 #self.page.input_region_police(search_dict['region_police']) #责任民警/编号 self.page.input_person_name(search_dict['person_name'])#法人姓名 #self.page.input_person_id_card(search_dict['person_id_card'])#法人身份证 self.page.select_input_place_type(search_dict['place_type'])#企业类型 self.page.select_operating_state(search_dict['operating_state'])#经营状态 #self.page.input_opening_date_from(search_dict['opening_date_from']) #开业时间-开始 #self.page.input_opening_date_to(search_dict['opening_date_to'])#开业时间-结束 self.page.click_search_button() self.dr.waitSleep(2) '''断言查询结果: 1、只验证查询结果第一页数据,只对有查询结果的数据进行准确性验证 2、根据显示数据,只做部分查询条件验证: 场所名称、所属行业、企业法人、企业类型、经营状态、统一社会信用代码/注册号 3、其他查询条件犹豫没有对应结果显示在页面,暂时无法验证 4、查询结果中只要有一条数据验证失败,则这条case不通过,只有全部数据验证通过,这条case才通过 5、这里只验证查询出来的数据是否正确,没有查询到数据的情况无法验证是否正确 ''' if search_dict['place_name']=='' and search_dict['industry_name']=='' and search_dict['person_name']=='' \ and search_dict['place_type']=='所有' and search_dict['region_name']=='' and search_dict['operating_state']=='所有' \ and search_dict['place_code']=='' : self.assertTrue(1==2,'查询条件(场所名称、所属行业、企业法人、企业类型、管辖机构、经营状态、统一社会信用代码/注册号)为空,不做变更操作!') table_data=self.page.get_table_data() # 获取查询结果table内的所有数据 #print(len(table_data),table_data) okFlag = -1 for i in range(len(table_data)): #print(search_dict['place_name'],industry_name,': ',table_data[i]) if int(len(table_data[i])>1): okFlag = 0 if (table_data[i][0].lower().find(search_dict['place_name'].lower()) != -1 and len(search_dict['place_name']) >0) \ or ( table_data[i][3].lower() == search_dict['place_code'].lower() and search_dict['place_code']!=''):#验证输入了企业名称时,查询结果企业名称(或者统一社会信用代码/注册号)包含输入的企业名称信息 okFlag=1 if search_dict['industry_name'].lower().find(table_data[i][1].lower()) != -1 and len(search_dict['industry_name'])>0:#验证输入了所属行业时,查询结果包含输入的所属行业信息 okFlag=1 if search_dict['place_type']==table_data[i][2] and search_dict['place_type']!='所有' :#验证输入了企业类型时,查询结果等于输入的企业类型信息 okFlag=1 if table_data[i][4].lower().find(search_dict['person_name'].lower()) != -1 and len(search_dict['person_name'])>0:#验证输入了企业法人时,查询结果包含输入的企业法人信息 okFlag=1 if table_data[i][5].lower().find(search_dict['region_name'].lower()) != -1 and search_dict['region_name']!='':#验证输入了管辖机构时,查询结果包含输入的管辖机构信息,不包含该管辖机构的下属机构 okFlag=1 if search_dict['operating_state'] == table_data[i][6] and search_dict['operating_state']!='所有' :#验证输入了经营状态时,查询结果等于输入的经营状态信息 okFlag=1 if okFlag == 0: self.assertTrue(1==2,'查询结果验证有错!'+str(table_data[i])) if okFlag == -1: self.assertTrue(1==2,'查询结果为空,不做变更操作!') #变更,只选取列表的第一条数据 for i in range(len(table_data)): if int(len(table_data[i])>1 ): self.page.select_modify_button(i)#选择点击变更按钮 self.dr.waitSleep(3) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_second_button()#点击填写基本信息页面,下一步按钮 self.dr.waitSleep(3) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_third_button()#点击填写附加信息页面,下一步按钮 self.dr.waitSleep(2) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_save_button()#点击填写设备信息页面,保存按钮 if self.page.success_name_is_enabled(): self.assertTrue(1==1,'企业变更成功') log.info("企业变更成功,操作员:%s,%s;注销信息:%s,%s,%s,%s" %(globals()['node_name'],globals()['login_name'],table_data[i][0],table_data[i][2],table_data[i][3],table_data[i][4])) else: self.assertTrue(1==2,"企业变更失败:%s"%self.page.get_fail_text()) break
def test_index(self, test_data): self.page = centerPage(self.dr) '''人员查询''' search_dict = { 'place_name': test_data['place_name'].strip(), #所属企业名称 'industry_name': test_data['industry_name'].strip(), #所属行业 'region_name': globals()['node_name'].strip(), #所属辖区 'person_name': test_data['person_name'].strip(), #从业人员姓名 'person_sex': test_data['person_sex'].strip(), #从业人员性别 'person_id_card': test_data['person_id_card'].strip(), #从业人员证件号码 'phone_number': test_data['phone_number'].strip(), #联系电话 'apply_date_from': test_data['apply_date_from'].strip(), #备案时间-开始 'apply_date_to': test_data['apply_date_to'].strip() #备案时间-结束 } print('查询条件:', search_dict) self.page.input_place_name(search_dict['place_name']) #所属企业名称 self.page.select_industry(search_dict['industry_name']) #所属行业 #self.page.select_region_name(search_dict['region_name'])#所属辖区 self.page.input_person_name(search_dict['person_name']) #从业人员姓名 self.page.select_person_sex(search_dict['person_sex']) #从业人员性别 self.page.input_person_id_card( search_dict['person_id_card']) #从业人员证件号码 self.page.input_phone_number(search_dict['phone_number']) #联系电话 self.page.input_apply_date_from( search_dict['apply_date_from']) #备案时间-开始 self.page.input_apply_date_to(search_dict['apply_date_to']) #备案时间-结束 self.page.click_search_button() self.dr.waitSleep(2) '''断言查询结果: 1、只验证查询结果第一页数据,只对有查询结果的数据进行准确性验证 2、根据显示数据,只做部分查询条件验证:所属企业,所属行业,人员姓名,性别,证件号码,联系电话,备案时间 3、其他查询条件犹豫没有对应结果显示在页面,暂时无法验证 4、查询结果中只要有一条数据验证失败,则这条case不通过,只有全部数据验证通过,这条case才通过 5、这里只验证查询出来的数据是否正确,没有查询到数据的情况无法验证是否正确 ''' if search_dict['place_name']=='' and search_dict['industry_name']=='' and search_dict['person_name']=='' \ and search_dict['person_sex']=='' and search_dict['person_id_card']=='' and search_dict['phone_number']=='' \ and search_dict['apply_date_from']=='' and search_dict['apply_date_to']=='': self.assertTrue( 1 == 2, '查询条件(所属企业,所属行业,人员姓名,性别,证件号码,联系电话,备案时间)为空,不做变更操作!') table_data = self.page.get_table_data() # 获取查询结果table内的所有数据 #print(len(table_data),table_data) okFlag = -1 for i in range(len(table_data)): #print(search_dict['place_name'],industry_name,': ',table_data[i]) if int(len(table_data[i]) > 1): okFlag = 0 if table_data[i][0].lower().find( search_dict['person_name'].lower()) != -1 and len( search_dict['person_name'] ) > 0: #验证输入了从业人员姓名时,查询结果包含输入的从业人员姓名信息 okFlag = 1 if search_dict['person_sex'].lower() == table_data[i][1].lower( ) and len(search_dict['person_sex'] ) > 0: #验证输入了从业人员性别时,查询结果等于输入的从业人员性别 okFlag = 1 if search_dict['person_id_card'].lower( ) == table_data[i][2].lower() and len( search_dict['person_id_card'] ) > 0: #验证输入了从业人员证件号码时,查询结果等于输入的从业人员证件号码 okFlag = 1 if table_data[i][3].lower( ) == search_dict['phone_number'].lower() and len( search_dict['phone_number'] ) > 0: #验证输入了联系电话时,查询结果等于输入的联系电话信息 okFlag = 1 if table_data[i][4].lower().find( search_dict['place_name'].lower()) != -1 and len( search_dict['place_name'] ) > 0: #验证输入了企业名称时,查询结果包含输入的企业名称信息 okFlag = 1 if search_dict['industry_name'].lower().find( table_data[i][5].lower()) != -1 and len( search_dict['industry_name'] ) > 0: #验证输入了所属行业时,查询结果包含输入的所属行业信息 okFlag = 1 if table_data[i][6].lower( ) >= search_dict['apply_date_from'].lower() and len( search_dict['apply_date_from'] ) > 0: #验证输入了备案开始时间时,查询结果》=备案开始时间 okFlag = 1 if table_data[i][6].lower( ) <= search_dict['apply_date_to'].lower() and len( search_dict['apply_date_to'] ) > 0: #验证输入了备案结束时间时,查询结果《=备案结束时间 okFlag = 1 if okFlag == 0: self.assertTrue(1 == 2, '查询结果有错!' + str(table_data[i])) if okFlag == -1: self.assertTrue(1 == 2, '查询结果为空,不做变更操作!') #变更,只变更列表的第一条数据 for i in range(len(table_data)): if int(len(table_data[i]) > 1): self.page.select_modify_button(i) #选择点击变更按钮 self.dr.waitSleep(2) self.dr.mouseScroll(-1000) #滚动鼠标,到页面底部 self.page.click_save_button() #点击人员信息页面,保存按钮 if self.page.success_name_is_enabled(): self.assertTrue(1 == 1, '人员变更成功') log.info("人员变更成功,操作员:%s,%s;变更信息:%s,%s,%s,%s" % (globals()['node_name'], globals()['login_name'], table_data[i][0], table_data[i][2], table_data[i][3], table_data[i][4])) else: self.assertTrue(1 == 2, "人员变更失败:%s" % self.page.get_fail_text()) break
class Industry_Search(unittest.TestCase): '''人员变更''' #装载测试数据 execlName = os.path.join(getcwd.get_cwd(), "data\\person_modify_data.xlsx") caseData_excel = ExcelUtil(execlName, 'Sheet1') log.info('装载测试数据成功') @classmethod def setUpClass(self): self.dr = PySelenium() loginGo(self.dr).click_login() #登录系统 self.menu_page = leftPage(self.dr) #左边菜单元素 globals()['login_name'] = self.menu_page.get_login_name() #登录用户名 globals()['node_name'] = self.menu_page.get_node_name() #登录用户所属机构名 log.info('登录系统成功,开始测试...') @classmethod def tearDownClass(self): #self.menu_page.go_login_out() #退出登录 #self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器') def setUp(self): print('case_id: ', self.id(), '开始执行<br />') #固定格式,用于报表生成 self.menu_page.go_person_modify() #点击菜单到 人员变更 功能链接 self.dr.switchFrame(MAIN_IFRAME) #指向iframe页,中间数据展示位置 def tearDown(self): '''测试报错或者用例不通过则截图''' if not testPass(self): print('截图: ', self.dr.getScreenshot(self.id()), '<br />') #固定格式,用于报表生成 print('结束执行<br />') #固定格式,用于报表生成 self.dr.switchFrameOut() #指向iframe上一级,左边菜单位置 @ddt.data(*caseData_excel.next()) def test_index(self, test_data): self.page = centerPage(self.dr) '''人员查询''' search_dict = { 'place_name': test_data['place_name'].strip(), #所属企业名称 'industry_name': test_data['industry_name'].strip(), #所属行业 'region_name': globals()['node_name'].strip(), #所属辖区 'person_name': test_data['person_name'].strip(), #从业人员姓名 'person_sex': test_data['person_sex'].strip(), #从业人员性别 'person_id_card': test_data['person_id_card'].strip(), #从业人员证件号码 'phone_number': test_data['phone_number'].strip(), #联系电话 'apply_date_from': test_data['apply_date_from'].strip(), #备案时间-开始 'apply_date_to': test_data['apply_date_to'].strip() #备案时间-结束 } print('查询条件:', search_dict) self.page.input_place_name(search_dict['place_name']) #所属企业名称 self.page.select_industry(search_dict['industry_name']) #所属行业 #self.page.select_region_name(search_dict['region_name'])#所属辖区 self.page.input_person_name(search_dict['person_name']) #从业人员姓名 self.page.select_person_sex(search_dict['person_sex']) #从业人员性别 self.page.input_person_id_card( search_dict['person_id_card']) #从业人员证件号码 self.page.input_phone_number(search_dict['phone_number']) #联系电话 self.page.input_apply_date_from( search_dict['apply_date_from']) #备案时间-开始 self.page.input_apply_date_to(search_dict['apply_date_to']) #备案时间-结束 self.page.click_search_button() self.dr.waitSleep(2) '''断言查询结果: 1、只验证查询结果第一页数据,只对有查询结果的数据进行准确性验证 2、根据显示数据,只做部分查询条件验证:所属企业,所属行业,人员姓名,性别,证件号码,联系电话,备案时间 3、其他查询条件犹豫没有对应结果显示在页面,暂时无法验证 4、查询结果中只要有一条数据验证失败,则这条case不通过,只有全部数据验证通过,这条case才通过 5、这里只验证查询出来的数据是否正确,没有查询到数据的情况无法验证是否正确 ''' if search_dict['place_name']=='' and search_dict['industry_name']=='' and search_dict['person_name']=='' \ and search_dict['person_sex']=='' and search_dict['person_id_card']=='' and search_dict['phone_number']=='' \ and search_dict['apply_date_from']=='' and search_dict['apply_date_to']=='': self.assertTrue( 1 == 2, '查询条件(所属企业,所属行业,人员姓名,性别,证件号码,联系电话,备案时间)为空,不做变更操作!') table_data = self.page.get_table_data() # 获取查询结果table内的所有数据 #print(len(table_data),table_data) okFlag = -1 for i in range(len(table_data)): #print(search_dict['place_name'],industry_name,': ',table_data[i]) if int(len(table_data[i]) > 1): okFlag = 0 if table_data[i][0].lower().find( search_dict['person_name'].lower()) != -1 and len( search_dict['person_name'] ) > 0: #验证输入了从业人员姓名时,查询结果包含输入的从业人员姓名信息 okFlag = 1 if search_dict['person_sex'].lower() == table_data[i][1].lower( ) and len(search_dict['person_sex'] ) > 0: #验证输入了从业人员性别时,查询结果等于输入的从业人员性别 okFlag = 1 if search_dict['person_id_card'].lower( ) == table_data[i][2].lower() and len( search_dict['person_id_card'] ) > 0: #验证输入了从业人员证件号码时,查询结果等于输入的从业人员证件号码 okFlag = 1 if table_data[i][3].lower( ) == search_dict['phone_number'].lower() and len( search_dict['phone_number'] ) > 0: #验证输入了联系电话时,查询结果等于输入的联系电话信息 okFlag = 1 if table_data[i][4].lower().find( search_dict['place_name'].lower()) != -1 and len( search_dict['place_name'] ) > 0: #验证输入了企业名称时,查询结果包含输入的企业名称信息 okFlag = 1 if search_dict['industry_name'].lower().find( table_data[i][5].lower()) != -1 and len( search_dict['industry_name'] ) > 0: #验证输入了所属行业时,查询结果包含输入的所属行业信息 okFlag = 1 if table_data[i][6].lower( ) >= search_dict['apply_date_from'].lower() and len( search_dict['apply_date_from'] ) > 0: #验证输入了备案开始时间时,查询结果》=备案开始时间 okFlag = 1 if table_data[i][6].lower( ) <= search_dict['apply_date_to'].lower() and len( search_dict['apply_date_to'] ) > 0: #验证输入了备案结束时间时,查询结果《=备案结束时间 okFlag = 1 if okFlag == 0: self.assertTrue(1 == 2, '查询结果有错!' + str(table_data[i])) if okFlag == -1: self.assertTrue(1 == 2, '查询结果为空,不做变更操作!') #变更,只变更列表的第一条数据 for i in range(len(table_data)): if int(len(table_data[i]) > 1): self.page.select_modify_button(i) #选择点击变更按钮 self.dr.waitSleep(2) self.dr.mouseScroll(-1000) #滚动鼠标,到页面底部 self.page.click_save_button() #点击人员信息页面,保存按钮 if self.page.success_name_is_enabled(): self.assertTrue(1 == 1, '人员变更成功') log.info("人员变更成功,操作员:%s,%s;变更信息:%s,%s,%s,%s" % (globals()['node_name'], globals()['login_name'], table_data[i][0], table_data[i][2], table_data[i][3], table_data[i][4])) else: self.assertTrue(1 == 2, "人员变更失败:%s" % self.page.get_fail_text()) break
def tearDownClass(cls): log.info(u'接口测试结束')
def setUpClass(cls): log.info('http-post接口测试: http://honlp.angliancd.com:2358/semantic')
class TestSuite(unittest.TestCase): #装载测试数据 execlName = os.path.join(getcwd.get_cwd(), "data\\PostTestCase.xlsx") caseData_excel = ExcelUtil(execlName, 'Sheet1') log.info('装载测试数据成功') @classmethod def setUpClass(cls): log.info('http-post接口测试: http://honlp.angliancd.com:2358/semantic') @classmethod def tearDownClass(cls): log.info(u'接口测试结束') def setUp(self): print('case_id: ', self.id(), '开始执行<br />') #固定格式,用于报表生成 def tearDown(self): print('结束执行<br />') #固定格式,用于报表生成 def test_01(self): print('test_01') self.assertEqual('pass', 'pass', 'pass') def test_02(self): print('test_02') self.assertEqual('pass', 'fail', 'fail') @ddt.data(*caseData_excel.next()) def test_case(self, data_): #接收数据 text_ = str(data_['text']) intent_ = str(data_['intent']) movie_name_ = str(data_['movie_name']) movie_category_ = str(data_['movie_category']) movie_actor_director_ = str(data_['movie_actor_director']) movie_season_ = str(data_['movie_season']) movie_episodes_ = str(data_['movie_episodes']) song_category_ = str(data_['song_category']) song_name_ = str(data_['song_name']) song_singer_ = str(data_['song_singer']) #数据整理,将测试数据中数字进行转换 2.0 -> 2 if len(movie_season_) > 0 and movie_season_.find('.') > 0: movie_season_ = movie_season_[0:movie_season_.find('.')] if len(movie_episodes_) > 0 and movie_episodes_.find('.') > 0: movie_episodes_ = movie_episodes_[0:movie_episodes_.find('.')] #调用接口 print(text_, ' 开始测试') post_data = { 'appkey': 'yousibo389793@567~7', 'action': 'semantic', 'text': '' + text_ + '' } post_data = json.dumps(post_data) post_url = 'http://honlp.angliancd.com:2358/semantic' header = { "Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain" } r = requests.post(post_url, post_data, headers=header) json_data = r.json() #print(type(r.json_data()),r.json_data()) print('接口返回结果:', json_data) #根据接口定义,取出json格式数据中用于断言的信息 json_str = 'intent-' + str(json_data['semantic']["intent"]) + '-' for slots in json_data['semantic']['slots']: json_str = json_str + str(slots['name']) + '-' + str( slots['value']) + '-' #print('\n格式化后的字符串:',json_str) #断言 ifStr = '(1==1' if len(intent_) > 0: ifStr = ifStr + ' and json_str.find("intent-' + intent_ + '") != -1' if len(movie_name_) > 0: ifStr = ifStr + ' and json_str.find("movieName-' + movie_name_ + '") != -1' if len(movie_category_) > 0: ifStr = ifStr + ' and json_str.find("movieCategory-' + movie_category_ + '") != -1' if len(movie_actor_director_) > 0: ifStr = ifStr + ' and (json_str.find("actor-' + movie_actor_director_ + '") != -1' ifStr = ifStr + ' or json_str.find("director-' + movie_actor_director_ + '") != -1' ifStr = ifStr + ' or json_str.find("actor_director-' + movie_actor_director_ + '") != -1)' if len(movie_season_) > 0: ifStr = ifStr + ' and json_str.find("movieSeason-' + movie_season_ + '") != -1' if len(movie_episodes_) > 0: ifStr = ifStr + ' and json_str.find("movieEpisodes-' + movie_episodes_ + '") != -1' ifStr = ifStr + ')' #print('\n断言规则:',ifStr) if eval(ifStr): print("测试结果:", "pass") self.assertEqual('pass', 'pass', '测试通过') else: print("测试结果:", "fail") self.assertEqual('pass', 'fail', '测试失败')
def tearDownClass(self): #self.page.set_iframe_out() #指向iframe上一级,左边菜单位置 #self.menu_page.go_login_out() #退出登录 self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器')
def setUpClass(self): self.dr = PySelenium() loginGo(self.dr).click_login() #登录系统 log.info('登录系统成功,开始测试...')
def tearDownClass(self): #self.menu_page.go_login_out() #退出登录 #self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器')
class TestSuite(unittest.TestCase): #装载测试数据 execlName = os.path.join(getcwd.get_cwd(), "data\\spider_house.xls") caseData_excel = ExcelUtil(execlName, 'spider_house') #打开execl文件 writer_table = ExcelAdd(execlName, sheet='spider_house') col_Num = writer_table.get_cols() #写入表头 writer_table.modify_cell(0, col_Num, 'gd_lon') writer_table.modify_cell(0, col_Num + 1, 'gd_lat') writer_table.modify_cell(0, col_Num + 2, 'distance') log.info('装载测试数据成功') @classmethod def setUpClass(self): self.dr = PySelenium() self.dr.openUrl('https://lbs.amap.com/console/show/picker') log.info('网约房爬虫数据坐标验证,以高德地图api查询结果为标准') @classmethod def tearDownClass(self): self.writer_table.save() #保存测试结果 self.dr.quit() #关闭浏览器 log.info('测试结束,关闭浏览器') def setUp(self): print('case_id: ', self.id(), '开始执行<br />') #固定格式,用于报表生成 self.dr.F5() def tearDown(self): '''测试报错或者用例不通过则截图''' if not func.testPass(self): print('截图: ', self.dr.getScreenshot(self.id()), '<br />') #固定格式,用于报表生成 print('结束执行<br />') #固定格式,用于报表生成 @ddt.data(*caseData_excel.next()) def test_case(self, data_): #接收测试数据 cur_row = data_['curRow'] lon = str(data_['lon']) lat = str(data_['lat']) address = str(data_['address']) #页面元素封装 txtSearch = 'id=>txtSearch' btnSearch = 'class=>btn-search' #divCoordinate='id=>divCoordinate' picker_copy = 'class=>picker-copy' #模拟查询操作 self.dr.inputText(txtSearch, address) #self.dr.clear(id_Coordinate) self.dr.click(btnSearch) self.dr.waitSleep(2) self.dr.click(picker_copy) coordinate = str(func.get_clipBoard_text()) func.set_clipBoard_text("b'0,0'") #coordinate=self.dr.getText(divCoordinate) gd_lon = coordinate[coordinate.find("'") + 1:coordinate.find(",")] gd_lat = coordinate[coordinate.find(",") + 1:len(coordinate) - 1] #print(lat, lon, gd_lat, gd_lon) distance = func.get_distance_hav(float(lat), float(lon), float(gd_lat), float(gd_lon)) * 1000 #断言,写入数据到execl文件 self.writer_table.modify_cell(cur_row, self.col_Num, gd_lon) self.writer_table.modify_cell(cur_row, self.col_Num + 1, gd_lat) self.writer_table.modify_cell(cur_row, self.col_Num + 2, distance)
def tearDownClass(self): self.dr.quit() log.info('登录功能测试完成')
def setUpClass(self): self.dr = PySelenium() self.page=pageElements(self.dr) self.page.open_browser() log.info('测试系统登录功能')
def test_index(self,test_data): self.page=centerPage(self.dr) '''企业查询''' search_dict={ 'place_name':test_data['place_name'].strip(), #企业名称 'industry_name':test_data['industry_name'].strip(), #所属行业 'region_name':test_data['region_name'].strip(), #管辖机构 'place_code':test_data['place_name'].strip(),#统一社会信用代码/注册号 #'region_police':test_data['region_police'].strip(), #责任民警 'person_name':test_data['person_name'].strip(), #法人姓名 #'person_id_card':test_data['person_id_card'].strip(), #法人证件号码 'place_type':test_data['place_type'].strip(), #企业类型 'operating_state':test_data['operating_state'].strip(), #营业状态 #'opening_date_from':test_data['opening_date_from'].strip(), #开业时间-开始 #'opening_date_to':test_data['opening_date_to'].strip() #开业时间-结束 } print('查询条件:',search_dict) self.page.input_place_name(search_dict['place_name'])#输入企业名称 self.page.select_industry(search_dict['industry_name'])#所属行业 if search_dict['region_name']!='': self.page.select_region_first_name(search_dict['region_name'])#管辖机构 #self.page.input_region_police(search_dict['region_police']) #责任民警/编号 self.page.input_person_name(search_dict['person_name'])#法人姓名 #self.page.input_person_id_card(search_dict['person_id_card'])#法人身份证 self.page.select_input_place_type(search_dict['place_type'])#企业类型 self.page.select_operating_state(search_dict['operating_state'])#经营状态 #self.page.input_opening_date_from(search_dict['opening_date_from']) #开业时间-开始 #self.page.input_opening_date_to(search_dict['opening_date_to'])#开业时间-结束 self.page.click_search_button() self.dr.waitSleep(2) '''断言查询结果: 1、只验证查询结果第一页数据,只对有查询结果的数据进行准确性验证 2、根据显示数据,只做部分查询条件验证: 场所名称、所属行业、企业法人、企业类型、经营状态、统一社会信用代码/注册号 3、其他查询条件犹豫没有对应结果显示在页面,暂时无法验证 4、查询结果中只要有一条数据验证失败,则这条case不通过,只有全部数据验证通过,这条case才通过 5、这里只验证查询出来的数据是否正确,没有查询到数据的情况无法验证是否正确 ''' if search_dict['place_name']=='' and search_dict['industry_name']=='' and search_dict['person_name']=='' \ and search_dict['place_type']=='所有' and search_dict['region_name']=='' and search_dict['operating_state']=='所有' \ and search_dict['place_code']=='' : self.assertTrue(1==2,'查询条件(场所名称、所属行业、企业法人、企业类型、管辖机构、经营状态、统一社会信用代码/注册号)为空,不做变更操作!') table_data=self.page.get_table_data() # 获取查询结果table内的所有数据 #print(len(table_data),table_data) okFlag = -1 for i in range(len(table_data)): #print(search_dict['place_name'],industry_name,': ',table_data[i]) if int(len(table_data[i])>1): okFlag = 0 if (table_data[i][0].lower().find(search_dict['place_name'].lower()) != -1 and len(search_dict['place_name']) >0) \ or ( table_data[i][3].lower() == search_dict['place_code'].lower() and search_dict['place_code']!=''):#验证输入了企业名称时,查询结果企业名称(或者统一社会信用代码/注册号)包含输入的企业名称信息 okFlag=1 if search_dict['industry_name'].lower().find(table_data[i][1].lower()) != -1 and len(search_dict['industry_name'])>0:#验证输入了所属行业时,查询结果包含输入的所属行业信息 okFlag=1 if search_dict['place_type']==table_data[i][2] and search_dict['place_type']!='所有' :#验证输入了企业类型时,查询结果等于输入的企业类型信息 okFlag=1 if table_data[i][4].lower().find(search_dict['person_name'].lower()) != -1 and len(search_dict['person_name'])>0:#验证输入了企业法人时,查询结果包含输入的企业法人信息 okFlag=1 if table_data[i][5].lower().find(search_dict['region_name'].lower()) != -1 and search_dict['region_name']!='':#验证输入了管辖机构时,查询结果包含输入的管辖机构信息,不包含该管辖机构的下属机构 okFlag=1 if search_dict['operating_state'] == table_data[i][6] and search_dict['operating_state']!='所有' :#验证输入了经营状态时,查询结果等于输入的经营状态信息 okFlag=1 if okFlag == 0: self.assertTrue(1==2,'查询结果验证有错!'+str(table_data[i])) if okFlag == -1: self.assertTrue(1==2,'查询结果为空,不做变更操作!') #变更,只选取列表的第一条数据 for i in range(len(table_data)): if int(len(table_data[i])>1 ): self.page.select_modify_button(i)#选择点击变更按钮 self.dr.waitSleep(3) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_second_button()#点击填写基本信息页面,下一步按钮 self.dr.waitSleep(3) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_third_button()#点击填写附加信息页面,下一步按钮 self.dr.waitSleep(2) self.dr.mouseScroll(-1000)#滚动鼠标,到页面底部 self.page.click_save_button()#点击填写设备信息页面,保存按钮 if self.page.success_name_is_enabled(): self.assertTrue(1==1,'企业变更成功') log.info("企业变更成功,操作员:%s,%s;注销信息:%s,%s,%s,%s" %(globals()['node_name'],globals()['login_name'],table_data[i][0],table_data[i][2],table_data[i][3],table_data[i][4])) else: self.assertTrue(1==2,"企业变更失败:%s"%self.page.get_fail_text()) break
def tearDownClass(self): self.writer_table.save() #保存测试结果 self.dr.quit() #关闭浏览器 log.info('测试结束,关闭浏览器')
def tearDownClass(self): #self.dr.quit() #关闭浏览器 log.info('测试完成,退出系统,关闭浏览器')
def setUpClass(self): warnings.simplefilter('ignore', ResourceWarning) self.dr = AppDriver() self.page = pageElements(self.dr) log.info('测试我页面功能')
def set_config(self, field, key, value): '''修改config.ini信息''' fd = open(configPath, "w") self.cf.set(field, key, value) self.cf.write(fd) log.info('%s的%s修改成功 ,value=%s' % (field, key, value))
def tearDownClass(self): self.dr.quit() log.info('联系人页测试完成')