class API_HY(unittest.TestCase): '''好友类api接口测试''' @classmethod def setUpClass(self): self.log = LogTools() self.yaml = YamlTools() self.req = RequestTools() self.db = DataBaseTools() self.api = CommonApiTools() self.api.login_api_pwd() # 密码登陆 self.log.info( '>>>>>>>>>>>>>>>>>>>>>[HY_api_start]<<<<<<<<<<<<<<<<<<<<') @classmethod def tearDownClass(self): self.api.logout_api() # 注销退出 self.log.info('>>>>>>>>>>>>>>>>>>>>>[HY_api_end]<<<<<<<<<<<<<<<<<<<<') def test_001_friendsinfo_userid(self): '''好友类-获取好友信息(通过userid)''' casename = '获取好友信息-userid' api = self.yaml.get_HYapi(6) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) userid = sqldata[3] token = sqldata[6] data = {'userid': userid, 'token': token} # 发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['result']['userid'], userid) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_002_friendinfo_mobile(self): '''好友类-获取好友信息(通过mobile)''' casename = '获取好友信息-mobile' api = self.yaml.get_HYapi(6) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] mobile = sqldata[0] data = {'token': token, 'mobile': mobile} # 发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['result']['mobile'], mobile) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_003_friendinfo_useridmobile(self): '''好友类-获取好友信息(通过userid/mobile)''' casename = '获取好友信息-userid/mobile' api = self.yaml.get_HYapi(6) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] userid = sqldata[3] mobile = sqldata[0] data = {'token': token, 'userid': userid, 'mobile': mobile} # 发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual( result['errorCode'], 0) and self.assertSequenceEqual( result['isTrue'], True) and self.assertSequenceEqual( result['result']['userid'], userid) and self.assertSequenceEqual( result['result']['mobile'], mobile) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_004_addfriends(self): '''好友类-向指定用户申请成为好友''' casename = '向指定用户申请成为好友' api = self.yaml.get_HYapi(0) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] friendid = 'user10020' info = '123' data = 'token=%s&friendid=%s&info=%s' % ('123456', friendid, info) #发送请求 try: result = self.req.put_method(api, casename, data=data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertSequenceEqual( result['errorMessage'], '申请成功,请耐心等待对方确认。') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_005_myaddlist(self): '''好友类-取得向我提出加好友申请的用户列表''' casename = '获取添加自己的用户列表' api = self.yaml.get_HYapi(1) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] userid = sqldata[3] data = {'token': '123456', 'userid': userid} #发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 10304) and self.assertEqual( result['isTrue'], False) and self.assertSequenceEqual( result['errorMessage'], '用户不存在') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_006_deletefriend(self): '''好友类-删除指定好友''' casename = '删除指定好友' api = self.yaml.get_HYapi(5) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] friendid = 'user10001' data = 'token=%s&friendid=%s' % (token, friendid) #发送请求 try: result = self.req.delete_method(api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['errorMessage'], '删除好友成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_007_getfriendslist(self): '''好友类-获得我的好友列表''' casename = '获得我的好友列表' api = self.yaml.get_HYapi(7) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] userid = sqldata[3] data = {'token': token, 'userid': userid} #发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 10306) and self.assertEqual( result['errorMessage'], '好友不存在') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_008_nickname(self): '''好友类-为我的好友设置昵称''' casename = '为我的好友设置昵称' api = self.yaml.get_HYapi(8) sql = 'select * from userlogin;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[6] userid = sqldata[3] friendid = 'user10033' name = '戴眼镜的熊' data = 'token=%s&friendid=%s&name=%s' % (token, friendid, name) #发送请求 try: result = self.req.put_method(api, casename, data=data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['errorMessage'], '更新昵称成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_009_newmessage(self): '''好友类-取得待处理好友消息''' casename = '取得待处理好友消息' api = self.yaml.get_HYapi(11) sql = 'select * from userlogin;' #获取数据 token = self.db.get_specific_data(sql, 0, 6) data = {'token': token} #发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 10811) and self.assertEqual( result['errorMessage'], '没有新的朋友消息') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_010_search(self): '''好友类-搜索引擎''' casename = '搜索引擎' api = self.yaml.get_HYapi(12) sql = 'select * from userlogin;' #获取数据 token = self.db.get_specific_data(sql, 0, 6) type = 'all' key = '王' data = {'token': token, 'type': type, 'key': key} #发送请求 try: result = self.req.get_method(api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) self.log.info('[%s]-[Result]:PASS' % casename) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) raise
class ExcelTestTools: def __init__(self, reportname=None): '''初始化''' datafile = os.path.join(data_path, 'Data_API.xlsx') #定位API数据文件 self.readexcel = ExcelReadTools(datafile) self.writeexcel = ExcelWriteTools(reportname) self.req = RequestTools() self.log = LogTools() #self.db=DataBaseTools() #统计测试用例数量信息 def get_sheet_nrows(self, sheetname): ''' 获取sheet行数 :param sheetname: 工作表sheet :return: 行数 ''' return self.readexcel.get_nrows(sheetname) def read_sheet(self, sheetname): ''' 读取指定sheet中的每行的数据信息并保存在字典中 :param sheetname: sheet名称 :return: 返回一个装有对应sheet的所有参数数据字典 ''' data_dict = {} #获取指定sheet的行数 getrows = self.get_sheet_nrows(sheetname) #获取每行的值 for i in range(1, getrows): get_data = self.readexcel.get_row_values(sheetname, i) #获取当行 data_dict[i] = get_data #行数:参数值 return data_dict def get_param_dict(self, sheetname, key): ''' 获取data_dict中指定key对应的参数 :param data_dict: 数据字典 :param key: key值(1、2、3...) :return: 参数字典 ''' param_dict = {} data_dict = self.read_sheet(sheetname) param_list = data_dict[key] #获取参数组合成字典 param_dict['test_class'] = param_list[0] param_dict['test_title'] = param_list[1] param_dict['api'] = param_list[2] param_dict['request_type'] = param_list[3] param_dict['post_type'] = param_list[4] param_dict['url_param'] = param_list[5] param_dict['data_param'] = param_list[6] param_dict['headers'] = param_list[7] param_dict['errorCode'] = param_list[8] param_dict['isTrue'] = param_list[9] param_dict['errorMessage'] = param_list[10] return param_dict def send_request(self, param_dict, worksheet, cellid): ''' 根据参数字典发送请求 :param param_dict : 参数字典 :param worksheet : 工作sheet ''' #统计用例总数 self.sumnum += 1 #获取参数字典各类参数值 test_class = param_dict['test_class'] test_title = param_dict['test_title'] api = param_dict['api'] request_type = param_dict['request_type'] post_type = param_dict['post_type'] url_param = param_dict['url_param'] data_param = param_dict['data_param'] headers = param_dict['headers'] errorCode = param_dict['errorCode'] isTrue = param_dict['isTrue'] errorMessage = param_dict['errorMessage'] #转换url_param参数 if url_param == '': url_param = None elif '=' in url_param: url_param = url_param else: url_param = eval(url_param) #转换data_param参数 if data_param == '': data_param = None else: data_param = eval(data_param) #转换errorCode' errorCode = int(errorCode) #转换isTrue参数 if isTrue == 'True': isTrue = True elif isTrue == 'False': isTrue = False #设定单元格样式 body_format = self.writeexcel.set_cellformat(font_size=10) #判断发送类型并调用请求函数 #get请求 if request_type == 'get': #发送请求 try: result = self.req.get_method(api, test_title, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) #插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) #响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) #实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) #实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) #实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) #PASS self.successnum += 1 #记录成功用例个数 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) #响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 #记录失败用例个数 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) #N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) #put请求 elif request_type == 'put': #发送请求 try: result = self.req.put_method(api, test_title, data_param, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) # PASS self.successnum += 1 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) # N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) #delete请求 elif request_type == 'delete': #发送请求 try: result = self.req.delete_method(api, test_title, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) # PASS self.successnum += 1 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell(worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) # N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) #post请求 elif request_type == 'post': # post类型为urlencode if post_type == 'urlencode': try: result = self.req.post_method('urlencode', api, test_title, data_param, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) # PASS self.successnum += 1 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) # N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) # post类型为form elif post_type == 'form': try: result = self.req.post_method('form', api, test_title, data_param, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) # PASS self.successnum += 1 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) # N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) # post类型为json elif post_type == 'json': try: result = self.req.post_method('json', api, test_title, data_param, url_param) if result['errorCode'] == errorCode and result[ 'isTrue'] == isTrue and result[ 'errorMessage'] == errorMessage: self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_pass(worksheet, 'P%d' % cellid) # PASS self.successnum += 1 else: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) # 插入相关结果到excel表 self.writeexcel.write_cell(worksheet, 'I%d' % cellid, str(result), body_format) # 响应信息 self.writeexcel.write_cell(worksheet, 'K%d' % cellid, result['errorCode'], body_format) # 实际errorCode self.writeexcel.write_cell(worksheet, 'M%d' % cellid, result['isTrue'], body_format) # 实际isTrue self.writeexcel.write_cell( worksheet, 'O%d' % cellid, result['errorMessage'], body_format) # 实际errorMessage self.writeexcel.write_fail(worksheet, 'P%d' % cellid) # FAIL self.failnum += 1 except Exception as e: self.writeexcel.write_na(worksheet, 'P%d' % cellid) # N/A self.log.error('[%s]-[Error]:%s' % (test_title, e)) else: print('POST请求类型设置错误!') else: print('无对应请求的封装函数,请核实!') def write_cover_info(self, worksheet, title, sumnum, successnum, failnum, skipnum, usetime): ''' 构造封面 :param title: 封面主题 :param sumnum: 用例总数 :param successnum: 成功用例数量 :param failnum: 失败用例数量 :param skipnum: 跳过用例数量 :param usetime: 执行时间 ''' self.writeexcel.create_cover_gui(worksheet, title, sumnum, successnum, failnum, skipnum, usetime) def write_basic_info(self, sheetname): ''' 将基本信息写入到指定的sheet中 :param sheetname: 工作表名称 ''' data_list = [] #读取对应sheet的所有数据信息 sumrows = self.readexcel.get_nrows(sheetname) #循环获取每行的数据(字典类型),然后存放于列表中 for i in range(1, sumrows): param_dict = self.get_param_dict(sheetname, i) data_list.append(param_dict) #创建sheet self.sheet = self.writeexcel.add_worksheet(sheetname) #写入基础信息框架 self.writeexcel.create_table_gui(self.sheet) #设定单元格样式 body_format = self.writeexcel.set_cellformat(font_size=10) #循环写入信息 for k in range(1, len(data_list) + 1): self.writeexcel.write_cell(self.sheet, 'A%d' % (k + 1), k, body_format) #用例ID self.writeexcel.write_cell(self.sheet, 'B%d' % (k + 1), data_list[k - 1]['test_class'], body_format) #模块名称 self.writeexcel.write_cell(self.sheet, 'C%d' % (k + 1), data_list[k - 1]['test_title'], body_format) #用例内容 self.writeexcel.write_cell(self.sheet, 'D%d' % (k + 1), data_list[k - 1]['api'], body_format) #URL self.writeexcel.write_cell(self.sheet, 'E%d' % (k + 1), data_list[k - 1]['request_type'], body_format) #请求方式 self.writeexcel.write_cell(self.sheet, 'F%d' % (k + 1), data_list[k - 1]['headers'], body_format) #headers self.writeexcel.write_cell(self.sheet, 'G%d' % (k + 1), data_list[k - 1]['url_param'], body_format) #url参数 self.writeexcel.write_cell(self.sheet, 'H%d' % (k + 1), data_list[k - 1]['data_param'], body_format) #data参数 self.writeexcel.write_cell(self.sheet, 'J%d' % (k + 1), data_list[k - 1]['errorCode'], body_format) #预期errorCode self.writeexcel.write_cell(self.sheet, 'L%d' % (k + 1), data_list[k - 1]['isTrue'], body_format) #预期isTrue self.writeexcel.write_cell(self.sheet, 'N%d' % (k + 1), data_list[k - 1]['errorMessage'], body_format) #预期errorMessage return self.sheet def do_excel_alltests(self, sheetname): ''' 执行excel所有的测试用例,步骤如下: 1、通过sheetname参数去默认的路径下生成ExcelReport文件,并构建sheet框架 2、通过sheetname参数去数据驱动Data_API.xlsx文件中找到对应的sheet并获取总行数 3、根据总行数循环获取Data_API.xlsx对应sheet的数据,对每行数据进行数据重组为param_dict 4、send_request对param_dict的数据进行抓取,同时组合接口请求参数发起接口请求(判断请求类型) 5、send_request对返回值与excel表的预期值进行对比,对比通过则pass,不通过则fail 6、send_request将返回值中的相关要素插入到ExcelReport中对应的sheet中 :param sheetname: 工作表名称 :return:返回sumnum总执行用例、successnum成功用例、failnum失败用例 ''' try: sheet = self.write_basic_info(sheetname) nrows = self.get_sheet_nrows(sheetname) for i in range(1, nrows): param_dict = self.get_param_dict(sheetname, i) self.send_request(param_dict, sheet, i + 1) #保存数据 num_dict = {} num_dict['sumnum'] = self.sumnum num_dict['successnum'] = self.successnum num_dict['failnum'] = self.failnum #初始化数据 self.sumnum = 0 self.successnum = 0 self.failnum = 0 return num_dict except Exception: print('执行失败,请检查sheetname是否在Data_API.xlsx中存在.') raise def closeTools(self): '''关闭ExcelWriter''' self.writeexcel.close_workbook()
class API_SJCJ(unittest.TestCase): '''数据采集类api接口测试''' @classmethod def setUpClass(self): self.log = LogTools() self.yaml = YamlTools() self.req = RequestTools() self.db = DataBaseTools() self.api = CommonApiTools() self.api.login_api_pwd() # 密码登陆 self.log.info( '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_start]<<<<<<<<<<<<<<<<<<<<') @classmethod def tearDownClass(self): self.api.logout_api() # 注销退出 self.log.info( '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_end]<<<<<<<<<<<<<<<<<<<<') def test_001_position(self): '''数据采集类-提交用户位置信息''' casename = '提交用户位置信息' api = self.yaml.get_SJCJapi(0) sql = 'select * from userlogin;' #获取数据信息 userid = self.db.get_specific_data(sql, 0, 3) longitude = '126.23435' #经度 latitude = '31.4343' #纬度 body = {'userid': userid, 'longitude': longitude, 'latitude': latitude} # 发送请求 try: result = self.req.put_method(api, casename, body) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['errorMessage'], '信息更新成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_002_mobileinfo(self): '''数据采集类-提交用户手机信息''' casename = '提交用户手机信息' api = self.yaml.get_SJCJapi(1) sql = 'select * from userlogin;' #获取数据信息 phoneid = self.db.get_specific_data(sql, 0, 4) phonetype = 0 #0:为ios,1:为android,2:为其它 detail = { 'brand': 'Iphone', 'version': '6', '运营商': '中国电信', 'osversion': 'ios12' } #配置参数 body = {'phoneid': phoneid, 'phonetype': phonetype, 'detail': detail} # 发送请求 try: result = self.req.put_method(api, casename, body) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['errorMessage'], '信息更新成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) raise def test_003_networkflow(self): '''数据采集类-提交用户使用流量信息''' casename = '提交用户使用流量信息' api = self.yaml.get_SJCJapi(2) sql = 'select * from userlogin;' #获取数据信息--整行 sqldata = self.db.get_selectdata_row(sql, 0) #获取单个数据信息 userid = sqldata[3] phoneid = sqldata[4] starttime = '1487727617982' #统计开始时间,单位:毫秒数 endtime = '1487727634678' #统计截止时间,单位:毫秒数 flow = 34434388 #使用的3G/4G流量(不含WiFi),单位:字节Byte navtime = 2103 #导航功能实际使用时间(不含目的地搜索和路线规划时间);单位:秒 chattime = 107 #使用对讲功能的时间(不含聊天机器人,不计算听别人说话的时间);单位:秒 usetime = 5609 #使用嘟嘟的时间(app启动开始计算,切换或者关掉则停止计算);单位:秒 sharetimes = 4 #分享图片的次数;单位:次数 data = { 'userid': userid, 'starttime': starttime, 'endtime': endtime, 'phoneid': phoneid, 'flow': flow, 'navtime': navtime, 'chattime': chattime, 'usetime': usetime, 'sharetimes': sharetimes } # 发送请求 try: result = self.req.post_method('json', api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) and self.assertEqual( result['errorMessage'], '信息更新成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_004_deletefile(self): '''数据采集类-用户删除上传到服务器的文件''' casename = '用户删除上传到服务器的文件' api = self.yaml.get_SJCJapi(5) sql = 'select * from userlogin;' #获取数据 userid = self.db.get_specific_data(sql, 0, 3) fileid = 'mro6vatc6fgflnrj54nqtixlyvn21r1r' data = 'userid=%s&fileid=%s' % (userid, fileid) # 发送请求 try: result = self.req.delete_method(api, casename, data) self.assertEqual(result['errorCode'], 0) and self.assertEqual( result['isTrue'], True) self.log.info('[%s]-[Result]:PASS' % casename) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) raise
class API_PDDT(unittest.TestCase): '''频道电台类api接口测试''' @classmethod def setUpClass(self): self.log = LogTools() self.yaml = YamlTools() self.req = RequestTools() self.db = DataBaseTools() self.api = CommonApiTools() self.api.login_api_pwd() # 密码登陆 self.log.info('>>>>>>>>>>>>>>>>>>>>>[PDDT_api_start]<<<<<<<<<<<<<<<<<<<<') @classmethod def tearDownClass(self): self.api.logout_api() # 注销退出 self.log.info('>>>>>>>>>>>>>>>>>>>>>[PDDT_api_end]<<<<<<<<<<<<<<<<<<<<') def test_001_makechannel(self): '''频道电台类-创建频道(普通频道)''' casename='创建频道(普通频道)' api=self.yaml.get_PDDTapi(0) sql='select * from userlogin;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[6] userid=sqldata[3] data={"channelid" : "","channelname" : "接口测试","channelremark" : "","autoname" : 0,"ispublic" : 0,"logoid" : "","memberids" : ["user10400","user10430"],"owner" : userid,"token" : token} #发送请求 try: result=self.req.post_method('json',api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) #更新数据库信息--channel sql2='update channel set channelid=\'%s\',owner=\'%s\',token=\'%s\',channelname=\'%s\' where cid=1'%\ (result['result']['channelid'],result['result']['owner'],result['result']['token'],result['result']['channelname']) self.db.execute_sql(sql2) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_002_changenickname(self): '''频道电台类-更新自己的昵称''' casename='更新自己的昵称' api=self.yaml.get_PDDTapi(1) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] userid=sqldata[2] name='王大锤' data='token=%s&channelid=%s&name=%s'%(token,channelid,name) #发送请求 try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_003_changechannelname(self): '''频道电台类-管理员更新频道名称''' casename='管理员更新频道名称' api=self.yaml.get_PDDTapi(2) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] userid=sqldata[2] name='我心飞翔' data='token=%s&channelid=%s&name=%s'%(token,channelid,name) #发送请求 try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid) self.log.info('[%s]-[nfResult]:PASS'%casename) self.log.info('-'*60) #更新数据库--channel sql2='update channel set channelname=\'%s\' where owner=\'%s\';'%(name,userid) self.db.execute_sql(sql2) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-' * 60) raise def test_004_changeremark(self): '''频道电台类-管理员更新频道简介''' casename='管理员更新频道简介' api=self.yaml.get_PDDTapi(3) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] userid=sqldata[2] remark='简介更新,接口测试!' data='token=%s&channelid=%s&remark=%s'%(token,channelid,remark) #发送请求 try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) #更新数据库--channel sql2='update channel set remark=\'%s\' where owner=\'%s\';'%(remark,userid) self.db.execute_sql(sql2) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_005_ispublic_yes(self): '''频道电台类-管理员更新频道不需验证申请''' casename='管理员更新频道不需验证申请' api=self.yaml.get_PDDTapi(4) sql='select * from channel;' # 获取数据 sqldata=self.db.get_selectdata_row(sql, 0) token=sqldata[3] channelid=sqldata[1] userid=sqldata[2] ispublic=1 data='token=%s&channelid=%s&ispublic=%s'%(token,channelid,ispublic) #发送请求 try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and \ self.assertEqual(result['errorMessage'],'更新频道成功') and self.assertSequenceEqual(result['result'],userid) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_006_ispublic_no(self): '''频道电台类-管理员更新频道需要验证申请''' casename = '管理员更新频道需要验证申请' api = self.yaml.get_PDDTapi(4) sql = 'select * from channel;' # 获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[3] channelid = sqldata[1] userid = sqldata[2] ispublic = 0 data = 'token=%s&channelid=%s&ispublic=%s' % (token, channelid, ispublic) # 发送请求 try: result = self.req.put_method(api, casename, data=data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) and \ self.assertEqual(result['errorMessage'], '更新频道成功') and self.assertSequenceEqual(result['result'], userid) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_007_batchadd(self): '''频道电台类-批量增加成员到频道中''' casename='批量增加成员到频道中' api=self.yaml.get_PDDTapi(6) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] userid=sqldata[2] body={"channelid" : channelid,"memberlist" : ["user10400","user10430"],"userid" : userid,"token" : token} #发送请求 try: result=self.req.put_method(api,casename,body) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) \ and self.assertEqual(result['result'],userid) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_008_batchkick(self): '''频道电台类-从频道中批量删除成员''' casename='从频道中批量删除成员' api=self.yaml.get_PDDTapi(7) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] userid=sqldata[2] channelid=sqldata[1] body={"channelid" : channelid,"memberlist" : ["user10400","user10430"],"userid" : userid,"token" : token} #发送请求 try: result=self.req.delete_method(api,casename,body=body) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['result'], userid) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_009_applychannel(self): '''频道电台类-申请加入频道(需审核)''' casename='申请加入频道(需审核)' api=self.yaml.get_PDDTapi(8) sql = 'select * from channel;' # 获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token=sqldata[3] userid=sqldata[2] channelid='10404' reason='申请加入,接口测试!' data='token=%s&channelid=%s&reason=%s'%(token,channelid,reason) try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['result'], userid) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_010_addchannel(self): '''频道电台类-直接加入频道''' casename='直接加入频道' api=self.yaml.get_PDDTapi(9) sql='select * from channel;' #获取数据 sqldata = self.db.get_selectdata_row(sql, 0) token = sqldata[3] userid = sqldata[2] channelid='10404' data='token=%s&channelid=%s'%(token,channelid) #发送请求 try: result=self.req.put_method(api,casename,data=data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['result'], userid) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_011_getmychannellist(self): '''频道电台类-取得自己的频道列表''' casename='取得我的频道列表' api=self.yaml.get_PDDTapi(14) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) data={'token':token} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\ and self.assertEqual(result['errorMessage'],'操作成功') self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_012_getmember(self): '''频道电台类-取得指定频道的成员列表''' casename='取得指定频道的成员列表' api=self.yaml.get_PDDTapi(15) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] data={'token':token,'channelid':channelid} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\ and self.assertEqual(result['errorMessage'],'操作成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_013_applylist(self): '''频道电台类-获取所有自己创建的频道的相关信息''' casename='所有自己创建的频道的相关信息' api=self.yaml.get_PDDTapi(16) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) data={'token':token} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['errorMessage'], '操作成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_014_searchchannel(self): '''频道电台类-查找频道''' casename='查找频道' api=self.yaml.get_PDDTapi(17) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) key='罗' data={'token':token,'key':key} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue']) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_015_randomrecommend(self): '''频道电台类-随机推荐频道''' casename='随机推荐频道' api=self.yaml.get_PDDTapi(18) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) maxnum=3 data={'token':token,'maxnum':maxnum} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue']) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_016_getchannelinfo(self): '''频道电台类-获取指定频道详情''' casename='获取指定频道详情' api=self.yaml.get_PDDTapi(19) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] data={'token':token,'channelid':channelid} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\ and self.assertEqual(result['errorMessage'],'操作成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_017_getchannelstatus(self): '''频道电台类-用户取得自己的频道的活跃统计''' casename='用户取得自己的频道的活跃统计' api=self.yaml.get_PDDTapi(21) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) data={'token':token} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['errorMessage'], '操作成功') self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % casename) self.log.info('-' * 60) raise def test_018_getlogo(self): '''频道电台类-获取频道logo图片''' casename='获取频道logo图片' api=self.yaml.get_PDDTapi(22) #获取数据 channelid='10404' data={'channelid':channelid} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_019_assertinchannel(self): '''频道电台类-判断自己是否在特定频道内''' casename='判断自己是否在特定频道内' api=self.yaml.get_PDDTapi(23) sql='select * from channel;' #获取数据 sqldata=self.db.get_selectdata_row(sql,0) token=sqldata[3] channelid=sqldata[1] data={'token':token,'channelid':channelid} #发送请求 try: result=self.req.get_method(api,casename,data) #存在时反馈判断 try: self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\ and self.assertEqual(result['result'],True) self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) #不存在时反馈判断 except: self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \ and self.assertEqual(result['result'], False) self.log.info('[%s]-[Result]:PASS' % casename) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_020_allmember(self): '''频道电台类-取得和我相关的所有频道和频道成员列表(不包含自己)''' casename='取得和我相关的所有频道和频道成员列表(不包含自己)' api=self.yaml.get_PDDTapi(26) sql='select * from channel;' #获取数据 token=self.db.get_specific_data(sql,0,3) data={'token':'234123414'} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\ and self.assertEqual(result['errorMessage'],'操作成功') self.log.info('[%s]-[Result]:PASS'%casename) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) self.log.info('-'*60) raise def test_021_radionews(self): '''频道电台类-获取最新路况交通新闻''' casename='获取最新路况交通新闻' api=self.yaml.get_PDDTapi(27) sql='select * from channel;' #获取数据 userid=self.db.get_specific_data(sql,0,2) data={'userid':userid} #发送请求 try: result=self.req.get_method(api,casename,data) self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) self.log.info('[%s]-[Result]:PASS'%casename) except Exception: self.log.error('[%s]-[Result]:FAILED'%casename) raise
class ExcelDDTTools: def __init__(self): '''初始化''' datafile = os.path.join(data_path, 'Data_API.xlsx') # 定位数据文件 self.readexcel = ExcelReadTools(datafile) self.req = RequestTools() self.log = LogTools() self.db = DataBaseTools() def get_ddt_datalist(self,sheetname): ''' 获取指定sheet内的所有数据,并组合成ddt_data列表 :param sheetname: sheet表 :return: ddt_datalist ''' ddt_datalist=[] nrows=self.readexcel.get_nrows(sheetname) for i in range(1,nrows): param_dict=self._get_param_dict(sheetname,i) ddt_datalist.append(param_dict) return ddt_datalist def _read_sheet(self,sheetname): ''' 读取指定sheet中的每行的数据信息并保存在字典中 :param sheetname: sheet名称 :return: 返回一个装有对应sheet的所有参数数据字典 ''' data_dict={} #获取指定sheet的行数 getrows=self.readexcel.get_nrows(sheetname) #获取每行的值 for i in range(1,getrows): get_data=self.readexcel.get_row_values(sheetname,i) #获取当行 data_dict[i]=get_data #行数:参数值 return data_dict def _get_param_dict(self,sheetname,key): ''' 获取data_dict中指定key对应的参数 :param data_dict: 数据字典 :param key: key值(1、2、3...) :return: 参数字典 ''' param_dict={} data_dict=self._read_sheet(sheetname) param_list=data_dict[key] #获取token值 sql='select token from userlogin where telnum=17318971827;' token=self.db.get_selectdata_row(sql,0) #获取参数组合成字典 param_dict['test_class']=param_list[0] param_dict['test_title']=param_list[1] param_dict['api']=param_list[2] param_dict['request_type']=param_list[3] param_dict['post_type']=param_list[4] param_dict['url_param']=param_list[5] param_dict['data_param']=param_list[6] param_dict['headers']=param_list[7] param_dict['errorCode']=param_list[8] param_dict['isTrue']=param_list[9] param_dict['errorMessage']=param_list[10] param_dict['token']=token[0] return param_dict def send_request(self,param_dict): ''' 根据参数字典发送请求 :param param_dict : 参数字典 :param worksheet : 工作sheet ''' #获取参数字典各类参数值 test_class=param_dict['test_class'] test_title=param_dict['test_title'] api=param_dict['api'] request_type=param_dict['request_type'] post_type=param_dict['post_type'] url_param=param_dict['url_param'] data_param=param_dict['data_param'] headers=param_dict['headers'] errorCode=param_dict['errorCode'] isTrue=param_dict['isTrue'] errorMessage=param_dict['errorMessage'] #转换url_param参数 if url_param=='': url_param=None elif '=' in url_param: url_param=url_param else: url_param=eval(url_param) #转换data_param参数 if data_param=='': data_param=None else: data_param=eval(data_param) #转换errorCode' errorCode=int(errorCode) #转换isTrue参数 if isTrue == 'True': isTrue = True elif isTrue == 'False': isTrue = False #判断发送类型并调用请求函数 #get请求 if request_type=='get': #发送请求 try: result=self.req.get_method(api,test_title,url_param) #返回数据判断 assert result['errorCode']==errorCode assert result['isTrue']==isTrue assert result['errorMessage']==errorMessage self.log.info('[%s]-[Result]:PASS'%test_title) self.log.info('-'*60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise #put请求 elif request_type=='put': #发送请求 try: result=self.req.put_method(api,test_title,data_param,url_param) # 返回数据判断 assert result['errorCode'] == errorCode assert result['isTrue'] == isTrue assert result['errorMessage'] == errorMessage self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise #delete请求 elif request_type=='delete': #发送请求 try: result=self.req.delete_method(api,test_title,url_param) # 返回数据判断 assert result['errorCode'] == errorCode assert result['isTrue'] == isTrue assert result['errorMessage'] == errorMessage self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise #post请求 elif request_type=='post': # post类型为urlencode if post_type=='urlencode': try: result=self.req.post_method('urlencode',api,test_title,data_param,url_param) #返回数据判断 assert result['errorCode'] == errorCode assert result['isTrue'] == isTrue assert result['errorMessage'] == errorMessage self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise # post类型为form elif post_type=='form': try: result=self.req.post_method('form',api,test_title,data_param,url_param) # 返回数据判断 assert result['errorCode'] == errorCode assert result['isTrue'] == isTrue assert result['errorMessage'] == errorMessage self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise # post类型为json elif post_type=='json': try: result=self.req.post_method('json',api,test_title,data_param,url_param) # 返回数据判断 assert result['errorCode'] == errorCode assert result['isTrue'] == isTrue assert result['errorMessage'] == errorMessage self.log.info('[%s]-[Result]:PASS' % test_title) self.log.info('-' * 60) except Exception: self.log.error('[%s]-[Result]:FAILED' % test_title) self.log.info('-' * 60) raise else: print('POST请求类型设置错误!')