def AbNormalTestInterface_LostParamsObject(self, second_url,body,params={},bodyType='form',platfom='SAAS',liwai=[],request_type='post',login_body={}): logger.debug('*** Params中缺少必传参数,请求失败 ***') if login_body != {}: self.ses.holdCookie(login_body) self.ses.setBody(body) if params != {} and params != None: wrong_count = 0 wrong_key = [] exceptions = 'EXCEPTION List ... \n' for key,value in params.items(): if key not in self.params_CanLost_object_key and key not in liwai: new_params = params new_params.pop(key) self.ses.setParams(new_params) requstsFunc = getattr(self.ses, request_type) result = requstsFunc(second_url, bodyType=bodyType, platfom=platfom) logger.debug('params:%s 缺少' % key) logger.debug(self.ses.result.text) new_params[key] = value try: self.assert_Equal(self.ses.result.status_code, 200, '---> 缺少参数 %s 请求失败!\n' % key) if request_type == 'get': self.assert_Not_Equal(result['status'], 0, '---> 缺少参数 %s 请求返回不正确!\n' % key) else: self.assert_Not_Equal(result['status'], 0, '---> 缺少参数 %s 请求返回不正确!\n' % key) except Exception as e: wrong_count += 1 wrong_key.append(key) exceptions += str(e) + self.ses.result.text + '\n' if wrong_count > 0: raise Exception(exceptions) else: logger.info('params 为空,无需再进行不传部分必传的验证!')
def AbNormalTestInterface_isWrongType(self, second_url,body,params={},bodyType='form',platfom='SAAS',liwai=[],request_type='post'): logger.debug('*** Body中参数分别为错误的数据类型,请求失败 ***') self.ses.setParams(params) if body != {} and body != None: wrong_count = 0 wrong_key = [] exceptions = 'EXCEPTION List ... \n' for key,value in body.items(): if key not in self.body_CanLost_object_key and key not in liwai: new_value = self.returnTargetWrongType(value) new_body = body new_body[key] = new_value self.ses.setBody(new_body) requstsFunc = getattr(self.ses, request_type) result = requstsFunc(second_url, bodyType=bodyType, platfom=platfom) logger.debug('body:%s 为错误的数据类型' % key) logger.debug(self.ses.result.text) new_body[key] = value try: self.assert_Equal(self.ses.result.status_code, 200, '---> 参数 %s 为错误的数据类型 请求失败!\n' % key) if request_type == 'get': self.assert_Not_Equal(result['status'], 0, '---> 参数 %s 为错误的数据类型 请求返回不正确!\n' % key) self.assert_isnotNone(result['result']['error_description'], '---> 参数 %s 为错误的数据类型 请求返回不正确!\n' % key) else: self.assert_Not_Equal(result['status'], 0, '---> 参数 %s 为错误的数据类型 请求返回不正确!\n' % key) self.assert_isnotNone(result['result']['error_description'], '---> 参数 %s 为错误的数据类型 请求返回不正确!\n' % key) except Exception as e: wrong_count += 1 wrong_key.append(key) exceptions += str(e) + self.ses.result.text + '\n' if wrong_count > 0: raise Exception(exceptions) else: logger.info('body 为空,无需再进行部分参数类型不正确的验证!')
def initTestInterface(self): ms = ManageSqlite(DB_FILE_PATH) # 判断如果数据库已有 token和providerid 就不用再次访问了 try: ms.DropTable(LOGIN_TABLE_NAME) ms.CreateTable(self.create_apitoken_table_str) except: s = ms.Select_Sql('select providerId,token,userid from %s' % LOGIN_TABLE_NAME) logger.info(s) ms.Close() return s[0] myses = session() # 客服登录 try: interface_dict = V0_Interface.api_login logger.info(interface_dict['describtion'],printstatus=True) myses.setBody(interface_dict['body']) myses.changeBody('email', user_saas) myses.changeBody('password', pwd_saas) result = myses.post(interface_dict['second_url'],printtype=True) # print result code = result['result']['code'] user_id = result['result']['user_id'] except Exception as e: logger.error("%s ERROE, please check service or http agent is open!\n" % (interface_dict['second_url'])) raise(e) # 获取token try: interface_dict = V0_Interface.api_token logger.info(interface_dict['describtion'],printstatus=False) myses.setBody(interface_dict['body']) myses.changeBody('code', code) result = myses.post(interface_dict['second_url'],printtype=False) # print result token = result['result']['token'] except Exception as e: logger.error("get user token ERROE, please check service!\n") raise e # 获取provider id interface_dict = V0_Interface.api2_OpenHelpCenterApi_getCurrentUserInfo logger.info(interface_dict['describtion'],printstatus=False) myses.setParams(interface_dict['params']) myses.changeParams('_token', token) result = myses.post(interface_dict['second_url'],printtype=False) # print result providerid = result['result']['providerId'] myses.close() # 写入数据库 providerid、token # ms = ManageSqlite(DB_FILE_PATH) # ms.DropTable(LOGIN_TABLE_NAME) # ms.CreateTable(createtable_str) insert_dict = {'providerId':providerid,'token':token, 'userid':user_id, 'status':'1'} ms.Insert_Sql(LOGIN_TABLE_NAME,insert_dict) s = ms.Select_Sql('select providerId,token,userid from %s' % LOGIN_TABLE_NAME) logger.info(s) ms.Close() return s[0]
def test_Sample_1(self): self.logCaseID(MyTestCase.get_current_function_name()) # self.url_apr = 'http://10.40.10.154:8091/apr/login' # self.user = '******' # self.password = '******' # ses = MyTestCase.requests.session() # # ses. # dict_data = {} # r = ses.post(self.url_apr,dict_data) # logger.info(r.url + " : %s" % r.status_code) # ss = r.content # print r.text # ses.close() mid = time.ctime() logger.info("testSample1 mid time is : %s " % mid) time.sleep(1)
def AbNormalTestInterface_LostParamsAllObject(self, second_url,params={},body={},bodyType='form',platfom='SAAS',request_type='post'): logger.debug('*** Params缺少所有参数,请求失败 ***') self.ses.setParams({}) if params != {} and params != None: self.ses.setBody(body) requstsFunc = getattr(self.ses, request_type) result = requstsFunc(second_url, bodyType=bodyType, platfom=platfom) logger.debug(self.ses.result.text) self.assert_Equal(self.ses.result.status_code, 200, self.ses.result.url) if request_type == 'get': self.assert_Not_Equal(result['status'], 0, self.ses.result.content) else: self.assert_Not_Equal(result['status'], 0, self.ses.result.content) return result else: logger.info('body 本就为空,无需再进行不传所有参数的验证!')
def AbNormalTestInterface_isParamsEmptyObject(self, second_url,body,params,bodyType='form',platfom='SAAS',liwai=[],request_type='post',login_body={}): logger.debug('*** Params中参数分别为Empty,请求失败 ***') if login_body != {}: self.ses.holdCookie(login_body) self.ses.setBody(body) if params != {} and params != None: wrong_count = 0 wrong_key = [] exceptions = 'EXCEPTION List ... \n' for key,value in params.items(): if key not in self.params_CanLost_object_key and key not in liwai: new_value = self.returnTargetEmptyObject(value) new_params = params new_params[key] = new_value self.ses.setParams(new_params) requstsFunc = getattr(self.ses, request_type) result = requstsFunc(second_url, bodyType=bodyType, platfom=platfom) logger.debug('params:%s 为Empty' % key) logger.debug(self.ses.result.text) new_params[key] = value try: self.assert_Equal(self.ses.result.status_code, 200, '---> 参数 %s 为Empty 请求失败!\n' % key) if key in self.params_MustAndCanEmpty_object_key: if request_type == 'get': self.assert_Equal(result['status'], 0, '---> 参数 %s 可以为Empty 请求返回不正确!\n' % key) else: self.assert_Equal(result['status'], 0, '---> 参数 %s 可以为Empty 请求返回不正确!\n' % key) else: if request_type == 'get': self.assert_Not_Equal(result['status'], 0, '---> 参数 %s 为Empty 请求返回不正确!\n' % key) self.assert_isnotNone(result['result']['error_description'], '---> 参数 %s 为Empty 请求返回不正确!\n' % key) else: self.assert_Not_Equal(result['status'], 0, '---> 参数 %s 为Empty 请求返回不正确!\n' % key) self.assert_isnotNone(result['result']['error_description'], '---> 参数 %s 为Empty 请求返回不正确!\n' % key) except Exception as e: wrong_count += 1 wrong_key.append(key) exceptions += str(e) + self.ses.result.text + '\n' else: logger.info('params: %s 可以空,无需再进行部分必传参数为空的验证!' % key) if wrong_count > 0: raise Exception(exceptions) else: logger.info('params 为空,无需再进行部分必传参数为空的验证!')
def engineerLogin(self,providerid,user_id): # 客服登录并建立长连接传到push上(主要保证会话发起能成功) logger.info('ws://push.itkeeping.com/cometd; providerid:%s, userid:%s' % (providerid,user_id)) ws = create_connection('ws://push.itkeeping.com/cometd',timeout=600) msg = [{ 'user': { 'id': user_id, 'providerId': providerid, 'platform': "web_console" }, 'advice': { 'timeout': 60000, 'interval': 0 }, 'supportedConnectionTypes': ["websocket", "long-polling", "callback-polling"], 'channel': "/meta/handshake", 'id': "1", 'minimumVersion': "1.0", 'version': "1.0" }] ws.send(json.dumps(msg)) # ws.send(msg) logger.info("Receiving...") result = ws.recv() logger.info(str(result)) new_result = json.loads(result) self.assert_Equal(new_result[0]['successful'],True) session_id = new_result[0]['clientId'] return session_id
def user_Login(cls, user, pwd): myses = InterfaceSession() # 登录 interface_dict = V0_Interface.api_login logger.info(interface_dict['describtion']) myses.setBody(interface_dict['body']) myses.changeBody('email', user) myses.changeBody('password', pwd) result = myses.post(interface_dict['second_url']) # print result code = result['result']['code'] # 获取token interface_dict = V0_Interface.api_token logger.info(interface_dict['describtion']) myses.setBody(interface_dict['body']) myses.changeBody('code', code) result = myses.post(interface_dict['second_url']) # print result token = result['result']['token'] # 获取provider id interface_dict = V0_Interface.api2_OpenHelpCenterApi_getCurrentUserInfo logger.info(interface_dict['describtion']) myses.setParams(interface_dict['params']) myses.changeParams('_token', token) result = myses.post(interface_dict['second_url']) # print result providerid = result['result']['providerId'] myses.close() return {'token': token, 'provider_id': providerid}
def tearDown(self): after = time.ctime() logger.info("testSample1 after time is : %s " % after)
def tearDown(self): logger.info( "------------------------ tearDown Start -----------------------")
def tearDownClass(cls): logger.info( "==================== TearDown Class Start =====================")
def setUpClass(cls): # 单个用例unittest调试时,将必须初始化logger # logger.initLogger() logger.info( "======================= SetUp Class Start =====================")
def setUp(self): logger.info( "------------------------- SetUp Start -------------------------") self.exe_status = 0
def logStep(self, msg): logger.info("[Step]:" + msg)
def logCaseID(self, casename): logger.info('[CaseID]:' + casename)
def setUp(self): print('\n================================================>') before = time.ctime() logger.info("testSample1 before time is : %s " % before)
def test_Sample_2(self): time.sleep(1) mid = time.ctime() self.assertEqual(4, 5, "4,5 Not equal") logger.info("testSample2 mid time is : %s " % mid) time.sleep(1)
def take_screenshot(self, save_fn="capture.png"): picpath = os.path.join( self.pic_dir, "{}_({}){}.png".format(Get_Now_TimeStr(), random_strs(6), save_fn)) logger.info("log picture at; %s" % (picpath)) self.save_screenshot(picpath)