class TestProductChannelCreate(unittest.TestCase): """产品渠道添加接口""" API_URL = Config().get('OpenPlatform_API').get('ProductChannel').get('ProductChannelCreate') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') self.mid = OpenPlatformCommon.getmid() self.cid = OpenPlatformCommon.getcid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ProductChannelCreate01(self): """简单验证添加产品渠道接口容错""" datas = ExcelReader(self.excel,sheet='ProductChannel').data for d in range(0,len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo']+datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['productId'] == '{pid}': datas[d]['productId'] = OpenPlatformCommon.getpid(self.mid) if datas[d]['channelId'] == '{cid}': datas[d]['channelId'] = self.cid #转换为json格式 params = json.dumps(datas[d]) headers={'Content-Type': "application/json"} res = self.client.send(data=params,headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:'+ res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(),msg=msg) self.assertNotIn('未知错误', str(message),msg=msg) self.tearDown() def test_ProductChannelCreate02(self): """验证添加产品渠道成功后返回""" data = {"productId": "39ef52a391245e17ae89d8166ddfd666", "channelId": "39ef52a390e53c09739be5209d765d6b"} params = json.dumps(data) headers={'Content-Type': "application/json"} res = self.client.send(data=params,headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:'+ res.url + '\n请求数据:' + params + '\n返回结果:' + res.text
class TestMall(unittest.TestCase): """统一订单接口""" API_URL = Config().get('API_URL').get('Pay') excel = DATA_PATH + '\PayTest.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') def tearDown(self): logger.info('测试结束') def test_productlist(self): """钻石商城商品信息查询接口""" datas = ExcelReader(self.excel, sheet='ProductList').data for d in range(0, len(datas)): with self.subTest(data=datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expectation'] #请求的参数剔除期望值列、描述列 datas[d].pop('expectation') datas[d].pop('describe') params = datas[d] res = self.client.send(data=params) # logger.debug(res.text) # result = JMESPathExtractor().extract(query='[0].itemName', body=res.text) self.assertEqual(expect, res.text) self.tearDown()
def getmcode(mid): """获取商户编号,商户名称,商户简称,商户类型,商户状态""" params = {"id": mid} url = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantGet') client = HTTPClient(url=url, method='GET') res = client.send(params=params) mcode = JMESPathExtractor().extract(query='data.code', body=res.text) mname = JMESPathExtractor().extract(query='data.name', body=res.text) mshortname = JMESPathExtractor().extract(query='data.shortName', body=res.text) #返回的商户类型 mtype = JMESPathExtractor().extract(query='data.type', body=res.text) #返回的商户类型名称 mtypename = JMESPathExtractor().extract(query='data.typeName', body=res.text) #返回的商户状态值 mstate = JMESPathExtractor().extract(query='data.state', body=res.text) #返回的商户状态 mstatename = JMESPathExtractor().extract(query='data.stateName', body=res.text) #返回的商户主体 mprincipal = JMESPathExtractor().extract(query='data.principal', body=res.text) #返回的社会统一信用码 mcreditcode = JMESPathExtractor().extract(query='data.creditCode', body=res.text) #返回的法人信息 mlegalrepresentative = JMESPathExtractor().extract( query='data.legalRepresentative', body=res.text) return mcode, mname, mshortname, mtype, mtypename, mstate, mstatename
def getpid(mid, category=1, platform=0): """ -----获取产品id----- 参数-mid:所属商户id 参数-category:产品类型 1-APP 2-H5 3-小程序 参数-platform:产品APP平台 0-安卓 1-苹果 """ datas = { "merchantId": mid, "introduction": "Autotest自动化自动创建产品", "name": "Autotest测试", "department": "Web研发部门", "ecology": 0, "iconUrl": "Autotest", "category": category, "state": 1, "setting": { "platform": platform, "packageName": "Autotest", "signature": "Autotest", "bundleID": "Autotest.bundleID", "appId": "Autotest.appId", "h5Type": 0, "h5PlatformName": "AutotestH5", "h5Address": "Autotest.H5", "smallProgramId": "AutotestsmallProgramId", "smallPlatformType": 0 } } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('Product').get('Product') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) pid = JMESPathExtractor().extract(query='data', body=res.text) return pid
class TestDeviceList(unittest.TestCase): """查询用户常用设备列表接口""" API_URL = Config().get('OpenPlatform_API').get('User2').get('DeviceList') excel = DATA_PATH + '/OpenPlatform_Player.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_DeviceList01(self): """简单验证查询用户常用设备列表接口容错""" datas = ExcelReader(self.excel, sheet='UserSearch').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = json.loads( ast.literal_eval(json.dumps(datas[d]['expection']))) casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') params = datas[d] res = self.client.send(params=params) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract( query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text if 'message' in expect.keys(): self.assertEqual(expect['message'], res_message, msg=msg) if 'error' in expect.keys(): self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) if 'data' in expect.keys() and expect['data']: self.assertEqual(expect['data'], res_data, msg=msg) self.tearDown()
def get_registinfo(): """ -----获取游客注册信息----- """ datas = { "type": 1, "channelNo": 81036962, "packageNo": 81036962001, "ip": "59.41.117.126", "machineCode": "AotutestRegister", "appId": "8103xqzESJOPvBzwHikLWwTXHfF6iZzE", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": {}, "networkState": 0, "wifiName": "MISnet" } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('Player').get('Regist') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) if JMESPathExtractor().extract(query='success', body=res.text): # res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) # res_unionId = JMESPathExtractor().extract(query='data.unionId', body=res.text) # res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) # res_account = JMESPathExtractor().extract(query='data.account', body=res.text) # res_password = JMESPathExtractor().extract(query='data.password', body=res.text) msg = JMESPathExtractor().extract(query='data', body=res.text) else: msg = "注册失败" return msg
class TestPlayerQuestion(unittest.TestCase): """设置玩家问题接口""" API_URL = Config().get('OpenPlatform_API').get('SecurityQuestion').get('PlayerQuestion') excel = DATA_PATH + '/OpenPlatform_PlayerQuestion.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_PlayerQuestion01(self): """批量验证设置玩家问题接口容错""" datas = ExcelReader(self.excel,sheet='PlayerQuestion').data for d in range(0,len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo']+datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = json.loads(ast.literal_eval(json.dumps(datas[d]['expection']))) # expect = datas[d]['expection'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') params = json.dumps(datas[d]) # logger.debug(type(params)) headers={'Content-Type': "application/json"} res = self.client.send(data=params,headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:'+ res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect['success'], res_success, msg=msg) if 'message' in expect.keys(): self.assertEqual(expect['message'], res_message, msg=msg) if 'error' in expect.keys(): self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) if 'data' in expect.keys() and expect['data']: self.assertEqual(32, len(res_data), msg=msg) self.tearDown()
class TestBaiDuHTTP(unittest.TestCase): URL = Config().get('URL_BD') def setUp(self): self.client = HTTPClient(url=self.URL, method='GET') def test_baidu_http(self): res = self.client.send() logger.debug(res.text) assertHTTPCode(res, [400]) self.assertIn('百度一下,你就知道', res.text)
class TestPay(unittest.TestCase): """统一订单接口""" API_URL = Config().get('API_URL').get('Pay') excel = DATA_PATH + '\PayAPI.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') def tearDown(self): logger.info('测试结束') def test_pay(self): """新平台""" datas = ExcelReader(self.excel, sheet='Pay').data resultdata = list() resultdata.insert(0, ["用例名称", "支付网关", "网站商务识别号", "返回结果"]) for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) paygateway = str(datas[d]['gateway']) webid = str(datas[d]['identity']) # logger.debug('{0} {1} '.format(resultlist,paygateway)) #随机生成订单号:13位时间戳+随机6个数字 datas[d]['orderNO'] = str(int(time.time() * 1000)) + str( random_number()) #请求的参数剔除期望值列、描述列、结果列,是否执行列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('result') #转换为json格式 params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) resultlist = [casename, paygateway, webid, res.text] resultdata.append(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='code', body=res.text) self.assertEqual(expect, result) self.tearDown() # logger.debug(resultdata) writeExcel(path=resultpath, data=resultdata)
def getmid(): """获取商户id""" datas = { "name": "中顺网络公司", "shortName": "ZS棋牌", "type": 1, "state": 1, "principal": "中顺棋牌", "creditCode": "91440106589536704F", "legalRepresentative": "李石头", "mobile": "39956888", "address": "广东省广州市天河区天河软件园建中路50号多玩游戏大厦4楼", "contactName": "王小姐", "contactMobile": 19978953221, "email": "*****@*****.**", "qq": 54321, "weChat": "qkagame", "businessLicense": "20190722/953ba822fb8643b282e6102712d96c24.jpg", "classicalChinese": "20190722/c5e60fd2961b97aca2ea3ec735892a40.jpg", "icp": "20190722/056fa26e44814b1ea36b288df9523f2f.jpeg", "corporateIdentityCard": "20190722/9fc2f9a61ae8486084f69ea6393f637d.jpeg" } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantCreate') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) mid = JMESPathExtractor().extract(query='data', body=res.text) return mid
def getcid(): """ -----获取渠道id----- """ datas = { "name": "Autotest渠道测试", "type": 1, "developerPlatform": "Autotest开发者平台" } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('Channel').get( 'ChannelCreate') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) cid = JMESPathExtractor().extract(query='data', body=res.text) return cid
def get_smscode(mobile): """ -----获取手机验证码----- """ datas = { "sesskey": "1", "mobile": mobile, "imgVerifyCode": "string", "smsProvider": 0 } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('VerifyCode').get('sms') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) if JMESPathExtractor().extract(query='success', body=res.text): msg = JMESPathExtractor().extract(query='error', body=res.text) else: msg = "获取验证码失败" return msg
def getaid(mid): """获取管理员id, 传入的登录账户名""" account = random_password(length=10, special_chars=False, digits=True, upper_case=True, lower_case=True) datas = { "mid": mid, "loginAccount": account, "loginPassword": "******", "verifyPassword": "******", "position": "", "operator": "", "realName": "", "roleId": 3, "state": 1 } headers = {'Content-Type': "application/json"} url = Config().get('OpenPlatform_API').get('Admin').get('AdminAdd') client = HTTPClient(url=url, method='POST') res = client.send(data=json.dumps(datas), headers=headers) aid = JMESPathExtractor().extract(query='data', body=res.text) return aid, account
class TestGetChannelTypeByCode(unittest.TestCase): """产品渠道添加接口""" API_URL = Config().get('OpenPlatform_API').get('ProductChannel').get( 'GetChannelType') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_GetChannelTypeByCode01(self): """简单验证获取渠道类型接口容错""" datas = ExcelReader(self.excel, sheet='GetChannelTypeByCode').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') params = datas[d] res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_GetChannelTypeByCode02(self): """验证获取渠道类型成功返回""" data = {"channelCode": 81026963} params = data res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_type = JMESPathExtractor().extract(query='data.type', body=res.text) res_id = JMESPathExtractor().extract(query='data.id', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.assertEqual(2, res_type, msg=msg) self.assertEqual('39ef7c14c2ae6187df4be0281eca0beb', res_id, msg=msg) self.tearDown()
class TestPlayerRegist(unittest.TestCase): """玩家注册接口""" API_URL = Config().get('OpenPlatform_API').get('Player').get('Regist') excel = DATA_PATH + '/OpenPlatform_Player.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_PlayerRegist01(self): """批量验证玩家注册接口容错""" datas = ExcelReader(self.excel, sheet='Regist').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = json.loads( ast.literal_eval(json.dumps(datas[d]['expection']))) # expect = datas[d]['expection'] # logger.debug(expect) # logger.debug(type(expect)) casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') datas[d]['payload'] = ast.literal_eval(datas[d]['payload']) params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract( query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract( query='data.openId', body=res.text) res_unionId = JMESPathExtractor().extract( query='data.unionId', body=res.text) res_nickname = JMESPathExtractor().extract( query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract( query='data.account', body=res.text) res_password = JMESPathExtractor().extract( query='data.password', body=res.text) res_picture = JMESPathExtractor().extract( query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect['success'], res_success, msg=msg) if 'message' in expect.keys(): self.assertEqual(expect['message'], res_message, msg=msg) if 'error' in expect.keys(): self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) if 'data' in expect.keys() and expect['data']: self.assertGreater(len(res_openId), 0, msg=msg) self.assertGreater(len(res_unionId), 0, msg=msg) self.assertIn('游客', res_nickname, msg=msg) if datas[d]['type'] == 2: mobile = datas[d]['payload']['Mobile'] self.assertEqual(mobile, res_account, msg=msg) else: self.assertEqual(10, len(res_account), msg=msg) self.assertEqual(18, len(res_password), msg=msg) # self.assertIsNotNone(res_picture, msg=msg) self.tearDown() def test_PlayerRegist02(self): """验证手机验证码注册:单个在有效期内的验证码""" mobile = 19925757088 code = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "type": 2, "channelNo": 81026962, "packageNo": 81026962001, "ip": "58.63.60.133", "machineCode": "autotest8888", "appId": "8103xqzESJOPvBzwHikLWwTXHfF6iZzE", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_unionId = JMESPathExtractor().extract(query='data.unionId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_password = JMESPathExtractor().extract(query='data.password', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) self.assertGreater(len(res_openId), 0, msg=msg) self.assertGreater(len(res_unionId), 0, msg=msg) self.assertIn('游客', res_nickname, msg=msg) self.assertEqual(str(mobile), res_account, msg=msg) self.assertEqual(18, len(res_password), msg=msg) def test_PlayerRegist03(self): """验证手机验证码注册:多个在有效期内验证码,输入最新的""" mobile = 19925757099 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "type": 2, "channelNo": 81026962, "packageNo": 81026962001, "ip": "58.63.60.133", "machineCode": "autotest8888", "appId": "8103xqzESJOPvBzwHikLWwTXHfF6iZzE", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code2 }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_unionId = JMESPathExtractor().extract(query='data.unionId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_password = JMESPathExtractor().extract(query='data.password', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) self.assertGreater(len(res_openId), 0, msg=msg) self.assertGreater(len(res_unionId), 0, msg=msg) self.assertIn('游客', res_nickname, msg=msg) self.assertEqual(str(mobile), res_account, msg=msg) self.assertEqual(18, len(res_password), msg=msg) def test_PlayerRegist04(self): """验证手机验证码注册:验证码超出有效期(2分钟)""" mobile = 19925757199 code = OpenPlatformCommon.get_smscode(mobile=mobile) time.sleep(120) datas = { "type": 2, "channelNo": 81026962, "packageNo": 81026962001, "ip": "58.63.60.133", "machineCode": "autotest8888", "appId": "8103xqzESJOPvBzwHikLWwTXHfF6iZzE", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_unionId = JMESPathExtractor().extract(query='data.unionId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_password = JMESPathExtractor().extract(query='data.password', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('手机验证码错误', res_error, msg=msg) self.assertEqual(10, res_code, msg=msg) self.assertIsNone(res_data, msg=msg) def test_PlayerRegist05(self): """验证手机验证码注册:有效期内多次请求验证码,输入的不是最新的""" mobile = 19925757299 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "type": 2, "channelNo": 81026962, "packageNo": 81026962001, "ip": "58.63.60.133", "machineCode": "autotest8888", "appId": "8103xqzESJOPvBzwHikLWwTXHfF6iZzE", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code1 }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_unionId = JMESPathExtractor().extract(query='data.unionId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_password = JMESPathExtractor().extract(query='data.password', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('手机验证码错误', res_error, msg=msg) self.assertEqual(10, res_code, msg=msg) self.assertIsNone(res_data, msg=msg)
class TestProductModify(unittest.TestCase): """产品修改接口""" API_URL = Config().get('OpenPlatform_API').get('Product').get('Product') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='PATCH') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ProductModify01(self): """简单验证修改产品接口容错""" datas = ExcelReader(self.excel, sheet='ModifyProduct').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['productId'] == '{pid1-0}': datas[d]['productId'] = OpenPlatformCommon.getpid( self.mid, category=1, platform=0) elif datas[d]['productId'] == '{pid1-1}': datas[d]['productId'] = OpenPlatformCommon.getpid( self.mid, category=1, platform=1) elif datas[d]['productId'] == '{pid2}': datas[d]['productId'] = OpenPlatformCommon.getpid( self.mid, category=2) elif datas[d]['productId'] == '{pid3}': datas[d]['productId'] = OpenPlatformCommon.getpid( self.mid, category=3) datas[d]['settings'] = ast.literal_eval( datas[d]['settings']) # logger.debug(type(datas[d]['setting'])) # logger.debug(datas[d]['setting']) #转换为json格式 # json.dumps(datas[d]['settings']) params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ProductModify02(self): """验证修改产品接口-传入产品id不存在返回信息是否正确""" datas = { "productId": "39ef3eb319f97c3de783c27e5c47f908", "name": "AutoTest修改测试", "iconUrl": "", "department": "", "introduction": "", "state": 2, "settings": { "packageName": "AutoTest", "signature": "AutoTest" } } headers = {'Content-Type': "application/json"} res = self.client.send(data=json.dumps(datas), headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) error = JMESPathExtractor().extract(query='error', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + json.dumps( datas) + '\n返回结果:' + res.text self.assertEqual('false', str(result).lower(), msg=msg) self.assertEqual('修改产品失败,不存在编号为39ef3eb319f97c3de783c27e5c47f908的产品', str(error), msg=msg) self.assertIn(date, str(responseTime), msg=msg) def test_ProductModify03(self): """验证修改产品成功时返回信息是否正确""" pid = OpenPlatformCommon.getpid(self.mid, category=3) datas = { "productId": pid, "name": "AutoTest修改测试", "iconUrl": "", "department": "", "introduction": "", "state": 2, "settings": { "packageName": "AutoTest", "signature": "AutoTest", "smallProgramId": "AutoTestEdit", "smallPlatformType": 0 } } headers = {'Content-Type': "application/json"} res = self.client.send(data=json.dumps(datas), headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + json.dumps( datas) + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知', str(message), msg=msg) self.assertIn(date, str(responseTime), msg=msg)
class TestChannelModify(unittest.TestCase): """渠道修改接口""" API_URL = Config().get('OpenPlatform_API').get('Channel').get( 'ChannelModify') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') self.cid = OpenPlatformCommon.getcid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ChannelModify01(self): """简单验证修改渠道接口容错""" datas = ExcelReader(self.excel, sheet='ModifyChannel').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['id'] == '{cid}': datas[d]['id'] = self.cid #转换为json格式 params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ChannelModify02(self): """验证修改渠道成功后返回""" datas = { "id": self.cid, "name": "ModifyAotuTest", "type": 4, "developerPlatform": "ModifyAotuTestChannel888" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) #data返回大于0,代表成功 re_cid = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.assertLess(0, re_cid, msg=msg) self.assertIn(date, str(responseTime), msg=msg) def test_ChannelModify03(self): """验证异常:修改渠道ID不存在""" datas = { "id": "39ef53f9be032af7676a724617fa5142", "name": "ModifyAotuTest", "type": 1, "developerPlatform": "ModifyAotuTestChannel888" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) error = JMESPathExtractor().extract(query='error', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) re_cid = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('false', str(result).lower(), msg=msg) self.assertEqual('编辑失败!', str(error), msg=msg) self.assertEqual(0, re_cid, msg=msg) self.assertIn(date, str(responseTime), msg=msg)
def test_ProductGet03(self): """验证修改产品成功后获取产品信息是否正确""" pid = OpenPlatformCommon.getpid(self.mid) edit_datas = { "productId": pid, "name": "编辑产品名Autotest", "iconUrl": "iconUrl.modify", "department": "modify部门", "introduction": "modify介绍", "state": 2, "settings": { "packageName": "modify包名", "signature": "modifysignature", "bundleID": "modifybundleID", "appId": "modifyAPPID", "h5PlatformName": "modifyH5平台名", "h5Address": "modifyH5.Address", "smallProgramId": "modifysmallProgramId" } } edit_url = Config().get('OpenPlatform_API').get('Product').get( 'Product') edit_headers = {'Content-Type': "application/json"} edit_client = HTTPClient(url=self.API_URL, method='PATCH') edit_client.send(data=json.dumps(edit_datas), headers=edit_headers) #查询编辑后的产品信息 params = {"ProductId": pid} res = self.client.send(params=params) msg = '\n请求地址:' + res.url + '\n请求数据:' + str(pid) + '\n返回结果:' + res.text #获取返回信息 result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.productId', body=res.text) res_pname = JMESPathExtractor().extract(query='data.productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.productCategory', body=res.text) res_pecology = JMESPathExtractor().extract(query='data.productEcology', body=res.text) res_pmname = JMESPathExtractor().extract(query='data.merchantName', body=res.text) res_department = JMESPathExtractor().extract(query='data.department', body=res.text) res_psecret = JMESPathExtractor().extract(query='data.productSecret', body=res.text) res_pintroduction = JMESPathExtractor().extract( query='data.introduction', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.state', body=res.text) res_psettings_platform = JMESPathExtractor().extract( query='data.settings.platform', body=res.text) res_psettings_packagename = JMESPathExtractor().extract( query='data.settings.packageName', body=res.text) res_psettings_signature = JMESPathExtractor().extract( query='data.settings.signature', body=res.text) res_psettings_bundleID = JMESPathExtractor().extract( query='data.settings.bundleID', body=res.text) res_psettings_appID = JMESPathExtractor().extract( query='data.settings.appId', body=res.text) res_psettings_h5type = JMESPathExtractor().extract( query='data.settings.h5Type', body=res.text) res_psettings_h5platformname = JMESPathExtractor().extract( query='data.settings.h5PlatformName', body=res.text) res_psettings_h5address = JMESPathExtractor().extract( query='data.settings.h5Address', body=res.text) res_psettings_smallProgramId = JMESPathExtractor().extract( query='data.settings.smallProgramId', body=res.text) res_psettings_smallPlatformType = JMESPathExtractor().extract( query='data.settings.smallPlatformType', body=res.text) self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('编辑产品名Autotest', res_pname, msg=msg) self.assertIn('key=iconUrl.modify', str(res_iconurl), msg=msg) self.assertEqual(1, res_pcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('modify部门', res_department, msg=msg) self.assertEqual('modify介绍', res_pintroduction, msg=msg) self.assertEqual(2, res_pstate, msg=msg) self.assertEqual(0, res_psettings_platform, msg=msg) self.assertEqual('modify包名', res_psettings_packagename, msg=msg) self.assertEqual('modifysignature', res_psettings_signature, msg=msg) self.assertEqual('modifybundleID', res_psettings_bundleID, msg=msg) self.assertEqual('modifyAPPID', res_psettings_appID, msg=msg) self.assertEqual(0, res_psettings_h5type, msg=msg) self.assertEqual('modifyH5平台名', res_psettings_h5platformname, msg=msg) self.assertEqual('modifyH5.Address', res_psettings_h5address, msg=msg) self.assertEqual('modifysmallProgramId', res_psettings_smallProgramId, msg=msg) self.assertEqual(0, res_psettings_smallPlatformType, msg=msg)
class TestMerchantEdit(unittest.TestCase): """商户编辑接口""" API_URL = Config().get('OpenPlatform_API').get('Merchant').get('MerchantEdit') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_EditMerchant01(self): """简单验证商户编辑接口容错""" datas = ExcelReader(self.excel,sheet='EditMerchant').data for d in range(0,len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo']+datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['id'] == '{mid}': datas[d]['id'] = OpenPlatformCommon.getmid() #转换为json格式 params = json.dumps(datas[d]) # logger.debug(type(params)) headers={'Content-Type': "application/json"} res = self.client.send(data=params,headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:'+ res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(),msg=msg) self.assertNotIn('未知错误', str(message),msg=msg) self.tearDown() def test_EditMerchant02(self): """验证正常编辑成功流程""" mid = OpenPlatformCommon.getmid() datas ={"id": mid, "name": "编辑网络公司", "shortName": "ZS", "state": 1, "principal": "", "creditCode": "", "legalRepresentative": "", "mobile": "", "address": "", "contactName": "张小金", "contactMobile": 19978953221, "email": "", "qq":"", "weChat": "weixin", "businessLicense": "", "classicalChinese": "", "icp": "", "corporateIdentityCard": ""} headers={'Content-Type': "application/json"} res = self.client.send(data=json.dumps(datas),headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) date = time.strftime('%Y-%m-%d',time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) re_mid = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:'+ res.url + '\n请求数据:' + json.dumps(datas) + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(res.text), msg=msg) self.assertEqual(mid, re_mid, msg=msg) self.assertIn(date, str(responseTime), msg=msg)
class TestAdminAdd(unittest.TestCase): """管理员创建接口""" API_URL = Config().get('OpenPlatform_API').get('Admin').get('AdminAdd') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_AdminAdd01(self): """简单验证新增管理员接口容错""" datas = ExcelReader(self.excel, sheet='AddAdmin').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['mid'] == '{mid}': datas[d]['mid'] = self.mid if datas[d]['loginAccount'] == '{str+num}': datas[d]['loginAccount'] = random_password( length=10, special_chars=False, digits=True, upper_case=True, lower_case=True) elif datas[d]['loginAccount'] == '{str}': datas[d]['loginAccount'] = random_password( length=10, special_chars=False, digits=False, upper_case=True, lower_case=True) elif datas[d]['loginAccount'] == '{num}': datas[d]['loginAccount'] = random_password( length=10, special_chars=False, digits=True, upper_case=False, lower_case=False) elif datas[d]['loginAccount'] == '{long}': datas[d]['loginAccount'] = random_password( length=100, special_chars=False, digits=True, upper_case=True, lower_case=True) elif datas[d]['loginAccount'] == '{chinese}': datas[d]['loginAccount'] = random_name() #转换为json格式 params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_AdminAdd02(self): """验证添加成功后返回是否正确""" account = random_password(length=10, special_chars=False, digits=True, upper_case=True, lower_case=True) datas = { "mid": self.mid, "loginAccount": account, "loginPassword": "******", "verifyPassword": "******", "position": "", "realName": "", "roleId": 1, "state": 1 } headers = {'Content-Type': "application/json"} date = time.strftime('%Y-%m-%d', time.localtime(time.time())) res = self.client.send(data=json.dumps(datas), headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_aid = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + json.dumps( datas) + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(res.text), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(32, len(res_aid), msg=msg) def test_AdminAdd03(self): """验证异常-同一商户新建2个商户管理员""" account1 = random_password(length=10, special_chars=False, digits=True, upper_case=True, lower_case=True) account2 = random_password(length=9, special_chars=False, digits=True, upper_case=True, lower_case=True) data1 = { "mid": self.mid, "loginAccount": account1, "loginPassword": "******", "verifyPassword": "******", "position": "", "realName": "", "roleId": 1, "state": 1 } data2 = { "mid": self.mid, "loginAccount": account2, "loginPassword": "******", "verifyPassword": "******", "position": "", "realName": "", "roleId": 1, "state": 1 } headers = {'Content-Type': "application/json"} date = time.strftime('%Y-%m-%d', time.localtime(time.time())) self.client.send(data=json.dumps(data1), headers=headers) res = self.client.send(data=json.dumps(data2), headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) # res_aid = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + json.dumps( data2) + '\n返回结果:' + res.text self.assertEqual('false', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(res.text), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertIsNone(res_data, msg=msg) # self.assertEqual(32, len(res_aid),msg=msg) def test_AdminAdd04(self): """验证异常-新建同名管理员""" account = random_password(length=10, special_chars=False, digits=True, upper_case=True, lower_case=True) data = { "mid": self.mid, "loginAccount": account, "loginPassword": "******", "verifyPassword": "******", "position": "", "realName": "", "roleId": 1, "state": 1 } headers = {'Content-Type': "application/json"} date = time.strftime('%Y-%m-%d', time.localtime(time.time())) self.client.send(data=json.dumps(data), headers=headers) res = self.client.send(data=json.dumps(data), headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + json.dumps( data) + '\n返回结果:' + res.text self.assertEqual('false', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(res.text), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual('该账号已存在!', res_error, msg=msg) self.assertIsNone(res_data, msg=msg)
class TestProductGet(unittest.TestCase): """产品详情接口""" API_URL = Config().get('OpenPlatform_API').get('Product').get('Product') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ProductGet01(self): """简单验证获取产品信息接口容错""" datas = ExcelReader(self.excel, sheet='ProductDetail').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['ProductId'] == '{pid}': datas[d]['ProductId'] = OpenPlatformCommon.getpid( self.mid) #转换为json格式 # json.dumps(datas[d]['settings']) params = datas[d] # logger.debug(type(params)) res = self.client.send(params=params) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ProductGet02(self): """验证新增产品成功后获取产品信息是否正确""" pid = OpenPlatformCommon.getpid(self.mid) params = {"ProductId": pid} res = self.client.send(params=params) msg = '\n请求地址:' + res.url + '\n请求数据:' + str(pid) + '\n返回结果:' + res.text #获取返回信息 result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.productId', body=res.text) res_pname = JMESPathExtractor().extract(query='data.productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.productCategory', body=res.text) res_pecology = JMESPathExtractor().extract(query='data.productEcology', body=res.text) res_pmname = JMESPathExtractor().extract(query='data.merchantName', body=res.text) res_department = JMESPathExtractor().extract(query='data.department', body=res.text) res_psecret = JMESPathExtractor().extract(query='data.productSecret', body=res.text) res_pintroduction = JMESPathExtractor().extract( query='data.introduction', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.state', body=res.text) res_psettings_platform = JMESPathExtractor().extract( query='data.settings.platform', body=res.text) res_psettings_packagename = JMESPathExtractor().extract( query='data.settings.packageName', body=res.text) res_psettings_signature = JMESPathExtractor().extract( query='data.settings.signature', body=res.text) res_psettings_bundleID = JMESPathExtractor().extract( query='data.settings.bundleID', body=res.text) res_psettings_appID = JMESPathExtractor().extract( query='data.settings.appId', body=res.text) res_psettings_h5type = JMESPathExtractor().extract( query='data.settings.h5Type', body=res.text) res_psettings_h5platformname = JMESPathExtractor().extract( query='data.settings.h5PlatformName', body=res.text) res_psettings_h5address = JMESPathExtractor().extract( query='data.settings.h5Address', body=res.text) res_psettings_smallProgramId = JMESPathExtractor().extract( query='data.settings.smallProgramId', body=res.text) res_psettings_smallPlatformType = JMESPathExtractor().extract( query='data.settings.smallPlatformType', body=res.text) self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('Autotest测试', res_pname, msg=msg) self.assertIn('key=Autotest', str(res_iconurl), msg=msg) self.assertEqual(1, res_pcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('Web研发部门', res_department, msg=msg) self.assertEqual('Autotest自动化自动创建产品', res_pintroduction, msg=msg) self.assertEqual(1, res_pstate, msg=msg) self.assertEqual(0, res_psettings_platform, msg=msg) self.assertEqual('Autotest', res_psettings_packagename, msg=msg) self.assertEqual('Autotest', res_psettings_signature, msg=msg) self.assertEqual('Autotest.bundleID', res_psettings_bundleID, msg=msg) self.assertEqual('Autotest.appId', res_psettings_appID, msg=msg) self.assertEqual(0, res_psettings_h5type, msg=msg) self.assertEqual('AutotestH5', res_psettings_h5platformname, msg=msg) self.assertEqual('Autotest.H5', res_psettings_h5address, msg=msg) self.assertEqual('AutotestsmallProgramId', res_psettings_smallProgramId, msg=msg) self.assertEqual(0, res_psettings_smallPlatformType, msg=msg) def test_ProductGet03(self): """验证修改产品成功后获取产品信息是否正确""" pid = OpenPlatformCommon.getpid(self.mid) edit_datas = { "productId": pid, "name": "编辑产品名Autotest", "iconUrl": "iconUrl.modify", "department": "modify部门", "introduction": "modify介绍", "state": 2, "settings": { "packageName": "modify包名", "signature": "modifysignature", "bundleID": "modifybundleID", "appId": "modifyAPPID", "h5PlatformName": "modifyH5平台名", "h5Address": "modifyH5.Address", "smallProgramId": "modifysmallProgramId" } } edit_url = Config().get('OpenPlatform_API').get('Product').get( 'Product') edit_headers = {'Content-Type': "application/json"} edit_client = HTTPClient(url=self.API_URL, method='PATCH') edit_client.send(data=json.dumps(edit_datas), headers=edit_headers) #查询编辑后的产品信息 params = {"ProductId": pid} res = self.client.send(params=params) msg = '\n请求地址:' + res.url + '\n请求数据:' + str(pid) + '\n返回结果:' + res.text #获取返回信息 result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.productId', body=res.text) res_pname = JMESPathExtractor().extract(query='data.productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.productCategory', body=res.text) res_pecology = JMESPathExtractor().extract(query='data.productEcology', body=res.text) res_pmname = JMESPathExtractor().extract(query='data.merchantName', body=res.text) res_department = JMESPathExtractor().extract(query='data.department', body=res.text) res_psecret = JMESPathExtractor().extract(query='data.productSecret', body=res.text) res_pintroduction = JMESPathExtractor().extract( query='data.introduction', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.state', body=res.text) res_psettings_platform = JMESPathExtractor().extract( query='data.settings.platform', body=res.text) res_psettings_packagename = JMESPathExtractor().extract( query='data.settings.packageName', body=res.text) res_psettings_signature = JMESPathExtractor().extract( query='data.settings.signature', body=res.text) res_psettings_bundleID = JMESPathExtractor().extract( query='data.settings.bundleID', body=res.text) res_psettings_appID = JMESPathExtractor().extract( query='data.settings.appId', body=res.text) res_psettings_h5type = JMESPathExtractor().extract( query='data.settings.h5Type', body=res.text) res_psettings_h5platformname = JMESPathExtractor().extract( query='data.settings.h5PlatformName', body=res.text) res_psettings_h5address = JMESPathExtractor().extract( query='data.settings.h5Address', body=res.text) res_psettings_smallProgramId = JMESPathExtractor().extract( query='data.settings.smallProgramId', body=res.text) res_psettings_smallPlatformType = JMESPathExtractor().extract( query='data.settings.smallPlatformType', body=res.text) self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('编辑产品名Autotest', res_pname, msg=msg) self.assertIn('key=iconUrl.modify', str(res_iconurl), msg=msg) self.assertEqual(1, res_pcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('modify部门', res_department, msg=msg) self.assertEqual('modify介绍', res_pintroduction, msg=msg) self.assertEqual(2, res_pstate, msg=msg) self.assertEqual(0, res_psettings_platform, msg=msg) self.assertEqual('modify包名', res_psettings_packagename, msg=msg) self.assertEqual('modifysignature', res_psettings_signature, msg=msg) self.assertEqual('modifybundleID', res_psettings_bundleID, msg=msg) self.assertEqual('modifyAPPID', res_psettings_appID, msg=msg) self.assertEqual(0, res_psettings_h5type, msg=msg) self.assertEqual('modifyH5平台名', res_psettings_h5platformname, msg=msg) self.assertEqual('modifyH5.Address', res_psettings_h5address, msg=msg) self.assertEqual('modifysmallProgramId', res_psettings_smallProgramId, msg=msg) self.assertEqual(0, res_psettings_smallPlatformType, msg=msg)
class TestMerchantList(unittest.TestCase): """商户列表接口""" API_URL = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantList') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_GetMerchantList01(self): """简单验证商户列表接口容错""" datas = ExcelReader(self.excel, sheet='MerchantList').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') #转换为json格式 # params = json.dumps(datas[d]) params = datas[d] # logger.debug(type(params)) # headers={'Content-Type': "application/json"} res = self.client.send(params=params) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_GetMerchantList02(self): """验证商户编号查询""" mid = OpenPlatformCommon.getmid() mcode, mname, mshortname, mtype, mtypename, mstate, mstatename = OpenPlatformCommon.getmcode( mid) params = {'keyword': mcode, 'pageIndex': 1, 'pageSize': 10} res = self.client.send(params=params) res_result = JMESPathExtractor().extract(query='success', body=res.text) res_datalength = JMESPathExtractor().extract(query='data.recordsTotal', body=res.text) res_mid = JMESPathExtractor().extract(query='data.data[0].id', body=res.text) res_mcode = JMESPathExtractor().extract(query='data.data[0].code', body=res.text) res_mname = JMESPathExtractor().extract(query='data.data[0].name', body=res.text) res_mshortname = JMESPathExtractor().extract( query='data.data[0].shortName', body=res.text) res_mtype = JMESPathExtractor().extract(query='data.data[0].type', body=res.text) #返回的商户类型名称 res_mtypename = JMESPathExtractor().extract( query='data.data[0].typeName', body=res.text) #返回的商户状态值 res_mstate = JMESPathExtractor().extract(query='data.data[0].state', body=res.text) #返回的商户状态 res_mstatename = JMESPathExtractor().extract( query='data.data[0].stateName', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(res_result).lower(), msg=msg) self.assertEqual(1, res_datalength, msg=msg) self.assertEqual(mid, str(res_mid), msg=msg) self.assertEqual(mname, str(res_mname), msg=msg) self.assertEqual(mshortname, str(res_mshortname), msg=msg) self.assertEqual(mtype, res_mtype, msg=msg) self.assertEqual(mtypename, str(res_mtypename), msg=msg) self.assertEqual(mstate, res_mstate, msg=msg) self.assertEqual(mstatename, str(res_mstatename), msg=msg) def test_GetMerchantList03(self): """验证商户名称查询""" mid = OpenPlatformCommon.getmid() mcode, mname, mshortname, mtype, mtypename, mstate, mstatename = OpenPlatformCommon.getmcode( mid) params = {'keyword': mname, 'pageIndex': 1, 'pageSize': 10} res = self.client.send(params=params) res_result = JMESPathExtractor().extract(query='success', body=res.text) res_datalength = JMESPathExtractor().extract(query='data.recordsTotal', body=res.text) res_data = JMESPathExtractor().extract(query='data.data', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(res_result).lower(), msg=msg) self.assertLessEqual(1, res_datalength, msg=msg) self.assertIn(mname, str(res_data), msg=msg) # self.assertIn(mcode, str(res_data),msg=res.text) def test_GetMerchantList04(self): """验证商户简称查询""" mid = OpenPlatformCommon.getmid() mcode, mname, mshortname, mtype, mtypename, mstate, mstatename = OpenPlatformCommon.getmcode( mid) params = {'keyword': mshortname, 'pageIndex': 1, 'pageSize': 10000} res = self.client.send(params=params) res_result = JMESPathExtractor().extract(query='success', body=res.text) res_datalength = JMESPathExtractor().extract(query='data.recordsTotal', body=res.text) res_data = JMESPathExtractor().extract(query='data.data', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(res_result).lower(), msg=msg) self.assertTrue(1 <= res_datalength, msg=msg) self.assertIn(mshortname, str(res_data), msg=msg) self.assertIn(mcode, str(res_data), msg=msg)
def test_GetMerchant03(self): """验证编辑成功后查询接口返回信息是否正确""" mid = OpenPlatformCommon.getmid() #编辑商户信息 edit_datas = { "id": mid, "name": "编辑网络公司", "shortName": "ZS", "state": 2, "principal": "", "creditCode": "", "legalRepresentative": "", "mobile": "19978953221", "address": "", "contactName": "张小金", "contactMobile": 13778953221, "email": "*****@*****.**", "qq": 123456, "weChat": "weixin", "businessLicense": "20190723/953ba822fb8643b282e6102712d00024.jpg", "classicalChinese": "20190723/c5e60fd2961b97aca2ea3ec735891111.jpg", "icp": "20190723/056fa26e44814b1ea36b288df9522222.jpeg", "corporateIdentityCard": "20190723/9fc2f9a61ae8486084f69ea6393f3333.jpeg" } edit_headers = {'Content-Type': "application/json"} edit_url = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantEdit') edit_client = HTTPClient(url=edit_url, method='POST') edit_client.send(data=json.dumps(edit_datas), headers=edit_headers) #查询商户信息 params = {"id": mid} res = self.client.send(params=params) #返回的success值 result = JMESPathExtractor().extract(query='success', body=res.text) #返回的商户id res_id = JMESPathExtractor().extract(query='data.id', body=res.text) #返回的商户名称 res_name = JMESPathExtractor().extract(query='data.name', body=res.text) #返回的商户简称 res_shortname = JMESPathExtractor().extract(query='data.shortName', body=res.text) #返回的商户类型 res_type = JMESPathExtractor().extract(query='data.type', body=res.text) #返回的商户类型名称 res_typename = JMESPathExtractor().extract(query='data.typeName', body=res.text) #返回的商户状态值 res_state = JMESPathExtractor().extract(query='data.state', body=res.text) #返回的商户状态 res_statename = JMESPathExtractor().extract(query='data.stateName', body=res.text) #返回的商户主体 res_principal = JMESPathExtractor().extract(query='data.principal', body=res.text) #返回的社会统一信用码 res_creditcode = JMESPathExtractor().extract(query='data.creditCode', body=res.text) #返回的法人信息 res_legalrepresentative = JMESPathExtractor().extract( query='data.legalRepresentative', body=res.text) #返回的联系电话 res_mobile = JMESPathExtractor().extract(query='data.mobile', body=res.text) #返回的地址 res_address = JMESPathExtractor().extract(query='data.address', body=res.text) #返回的联系人名称 res_contactname = JMESPathExtractor().extract(query='data.contactName', body=res.text) #返回的联系人手机 res_contactmobile = JMESPathExtractor().extract( query='data.contactMobile', body=res.text) #返回的联系人邮箱地址 res_email = JMESPathExtractor().extract(query='data.email', body=res.text) #返回的联系人QQ号码 res_qq = JMESPathExtractor().extract(query='data.qq', body=res.text) #返回的联系人微信号 res_wechat = JMESPathExtractor().extract(query='data.weChat', body=res.text) #返回的营业执照 res_businesslicense = JMESPathExtractor().extract( query='data.businessLicense', body=res.text) #返回的文网文 res_classicalchinese = JMESPathExtractor().extract( query='data.classicalChinese', body=res.text) #返回的ICP res_icp = JMESPathExtractor().extract(query='data.icp', body=res.text) #返回的法人身份证 res_corporateidentitycard = JMESPathExtractor().extract( query='data.corporateIdentityCard', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertEqual(mid, str(res_id), msg=msg) self.assertEqual('编辑网络公司', str(res_name), msg=msg) self.assertEqual('ZS', str(res_shortname), msg=msg) self.assertEqual('1', str(res_type), msg=msg) self.assertEqual('自研', str(res_typename), msg=msg) self.assertEqual('2', str(res_state), msg=msg) self.assertEqual('禁用', str(res_statename), msg=msg) self.assertEqual('', str(res_principal), msg=msg) self.assertEqual('', str(res_creditcode), msg=msg) self.assertEqual('', str(res_legalrepresentative), msg=msg) self.assertEqual('19978953221', str(res_mobile), msg=msg) self.assertEqual('', str(res_address), msg=msg) self.assertEqual('张小金', str(res_contactname), msg=msg) self.assertEqual('13778953221', str(res_contactmobile), msg=msg) self.assertEqual('*****@*****.**', str(res_email), msg=msg) self.assertEqual('123456', str(res_qq), msg=msg) self.assertEqual('weixin', str(res_wechat), msg=msg) self.assertIn('20190723/953ba822fb8643b282e6102712d00024.jpg', str(res_businesslicense), msg=msg) self.assertIn('20190723/c5e60fd2961b97aca2ea3ec735891111.jpg', str(res_classicalchinese), msg=msg) self.assertIn('20190723/056fa26e44814b1ea36b288df9522222.jpeg', str(res_icp), msg=msg) self.assertIn('20190723/9fc2f9a61ae8486084f69ea6393f3333.jpeg', str(res_corporateidentitycard), msg=msg)
class TestChannelList(unittest.TestCase): """渠道列表接口""" API_URL = Config().get('OpenPlatform_API').get('Channel').get( 'ChannelList') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ChannelList01(self): """简单验证渠道列表接口容错""" datas = ExcelReader(self.excel, sheet='ChannelList').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') #转换为json格式 params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ChannelList02(self): """验证渠道名称查询""" datas = {"keyword": "官方", "pageIndex": 1, "pageSize": 10} params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_id = JMESPathExtractor().extract(query='data.data[0].id', body=res.text) res_code = JMESPathExtractor().extract(query='data.data[0].code', body=res.text) res_name = JMESPathExtractor().extract(query='data.data[0].name', body=res.text) res_type = JMESPathExtractor().extract(query='data.data[0].type', body=res.text) res_developerPlatform = JMESPathExtractor().extract( query='data.data[0].developerPlatform', body=res.text) res_createTime = JMESPathExtractor().extract( query='data.data[0].createTime', body=res.text) res_loginModeId = JMESPathExtractor().extract( query='data.data[0].loginModeId', body=res.text) res_loginMethod = JMESPathExtractor().extract( query='data.data[0].loginMethod', body=res.text) res_paymentTemplateId = JMESPathExtractor().extract( query='data.data[0].paymentTemplateId', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual('39ef7c11112bcb0abb399595e966846e', res_id, msg=msg) self.assertEqual('6962', res_code, msg=msg) self.assertEqual('测试基础数据_官方渠道', res_name, msg=msg) self.assertEqual(1, res_type, msg=msg) self.assertEqual('test', res_developerPlatform, msg=msg) self.assertEqual('2019-08-08T16:12:13', res_createTime, msg=msg) self.assertIsNone(res_loginMethod, msg=msg) self.assertIsNone(res_loginModeId, msg=msg) self.assertIsNone(res_paymentTemplateId, msg=msg) def test_ChannelList03(self): """验证渠道编码查询""" datas = {"keyword": "6963", "pageIndex": 1, "pageSize": 10} params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_id = JMESPathExtractor().extract(query='data.data[0].id', body=res.text) res_code = JMESPathExtractor().extract(query='data.data[0].code', body=res.text) res_name = JMESPathExtractor().extract(query='data.data[0].name', body=res.text) res_type = JMESPathExtractor().extract(query='data.data[0].type', body=res.text) res_developerPlatform = JMESPathExtractor().extract( query='data.data[0].developerPlatform', body=res.text) res_createTime = JMESPathExtractor().extract( query='data.data[0].createTime', body=res.text) res_loginModeId = JMESPathExtractor().extract( query='data.data[0].loginModeId', body=res.text) res_loginMethod = JMESPathExtractor().extract( query='data.data[0].loginMethod', body=res.text) res_paymentTemplateId = JMESPathExtractor().extract( query='data.data[0].paymentTemplateId', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual('39ef7c14c2ae6187df4be0281eca0beb', res_id, msg=msg) self.assertEqual('6963', res_code, msg=msg) self.assertEqual('测试基础数据_联运渠道', res_name, msg=msg) self.assertEqual(2, res_type, msg=msg) self.assertEqual('test', res_developerPlatform, msg=msg) self.assertEqual('2019-08-08T16:12:13', res_createTime, msg=msg) self.assertEqual('测试基础数据_登录方式_联运SDK', res_loginMethod, msg=msg) self.assertEqual('39ef7c13f0e8827efe3fae844d518713', res_loginModeId, msg=msg) # self.assertEqual('7d518dfd-62c3-4636-8909-15be17d964be',res_paymentTemplateId, msg=msg) self.assertIsNone(res_paymentTemplateId, msg=msg) def test_ChannelList04(self): """验证渠道id查询""" datas = { "keyword": "39ef7c14c2ae6187df4be0281eca0beb", "pageIndex": 1, "pageSize": 10 } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_id = JMESPathExtractor().extract(query='data.data[0].id', body=res.text) res_code = JMESPathExtractor().extract(query='data.data[0].code', body=res.text) res_name = JMESPathExtractor().extract(query='data.data[0].name', body=res.text) res_type = JMESPathExtractor().extract(query='data.data[0].type', body=res.text) res_developerPlatform = JMESPathExtractor().extract( query='data.data[0].developerPlatform', body=res.text) res_createTime = JMESPathExtractor().extract( query='data.data[0].createTime', body=res.text) res_loginModeId = JMESPathExtractor().extract( query='data.data[0].loginModeId', body=res.text) res_loginMethod = JMESPathExtractor().extract( query='data.data[0].loginMethod', body=res.text) res_paymentTemplateId = JMESPathExtractor().extract( query='data.data[0].paymentTemplateId', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual('39ef7c14c2ae6187df4be0281eca0beb', res_id, msg=msg) self.assertEqual('6963', res_code, msg=msg) self.assertEqual('测试基础数据_联运渠道', res_name, msg=msg) self.assertEqual(2, res_type, msg=msg) self.assertEqual('test', res_developerPlatform, msg=msg) self.assertEqual('2019-08-08T16:12:13', res_createTime, msg=msg) self.assertEqual('测试基础数据_登录方式_联运SDK', res_loginMethod, msg=msg) self.assertEqual('39ef7c13f0e8827efe3fae844d518713', res_loginModeId, msg=msg) # self.assertEqual('7d518dfd-62c3-4636-8909-15be17d964be',res_paymentTemplateId, msg=msg) self.assertIsNone(res_paymentTemplateId, msg=msg)
class TestProductList(unittest.TestCase): """产品列表接口""" API_URL = Config().get('OpenPlatform_API').get('Product').get( 'ProductList') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ProductList01(self): """简单验证产品列表接口容错""" datas = ExcelReader(self.excel, sheet='ProductList').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['MerchantId'] == '{mid}': datas[d]['MerchantId'] = self.mid #转换为json格式 # json.dumps(datas[d]['settings']) params = datas[d] # logger.debug(type(params)) res = self.client.send(params=params) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.data[0].qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ProductList02(self): """验证产品列表-产品名称搜索""" pid = OpenPlatformCommon.getpid(self.mid, category=2, platform=1) params = { 'MerchantId': self.mid, 'Condition': 'Autotest测试', 'PageIndex': 1, 'PageSize': 1 } res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.data[0].productId', body=res.text) res_pname = JMESPathExtractor().extract( query='data.data[0].productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.data[0].iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.data[0].productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.data[0].productCategory', body=res.text) res_psubcategory = JMESPathExtractor().extract( query='data.data[0].subCategory', body=res.text) res_pecology = JMESPathExtractor().extract( query='data.data[0].productEcology', body=res.text) res_pmname = JMESPathExtractor().extract( query='data.data[0].merchantName', body=res.text) res_department = JMESPathExtractor().extract( query='data.data[0].department', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.data[0].state', body=res.text) res_recordsTotal = JMESPathExtractor().extract( query='data.recordsTotal', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('Autotest测试', res_pname, msg=msg) self.assertIn('key=Autotest', str(res_iconurl), msg=msg) self.assertEqual(2, res_pcategory, msg=msg) self.assertEqual('单网页形态', res_psubcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('Web研发部门', res_department, msg=msg) self.assertEqual(1, res_pstate, msg=msg) self.assertEqual(1, res_recordsTotal, msg=msg) def test_ProductList03(self): """验证异常:产品列表-关键字匹配不到数据""" pid = OpenPlatformCommon.getpid(self.mid, category=2, platform=1) params = { 'MerchantId': self.mid, 'Condition': 'Autotest测试12', 'PageIndex': 1, 'PageSize': 1 } res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) # res_pid = JMESPathExtractor().extract(query='data.data[0].productId', body=res.text) # res_pname = JMESPathExtractor().extract(query='data.data[0].productName', body=res.text) # res_iconurl = JMESPathExtractor().extract(query='data.data[0].iconUrl', body=res.text) # res_pnum = JMESPathExtractor().extract(query='data.data[0].productNum', body=res.text) # res_pcategory = JMESPathExtractor().extract(query='data.data[0].productCategory', body=res.text) # res_psubcategory = JMESPathExtractor().extract(query='data.data[0].subCategory', body=res.text) # res_pecology = JMESPathExtractor().extract(query='data.data[0].productEcology', body=res.text) # res_pmname = JMESPathExtractor().extract(query='data.data[0].merchantName', body=res.text) # res_department = JMESPathExtractor().extract(query='data.data[0].department', body=res.text) # res_pstate = JMESPathExtractor().extract(query='data.data[0].state', body=res.text) res_recordsTotal = JMESPathExtractor().extract( query='data.recordsTotal', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.assertIn(date, str(responseTime), msg=msg) # self.assertEqual(pid, res_pid, msg=msg) # self.assertEqual('Autotest测试', res_pname, msg=msg) # self.assertIn('key=Autotest', str(res_iconurl), msg=msg) # self.assertEqual(2, res_pcategory, msg=msg) # self.assertEqual('单网页形态', res_psubcategory, msg=msg) # self.assertEqual(0, res_pecology, msg=msg) # self.assertEqual('中顺网络公司', res_pmname, msg=msg) # self.assertEqual('Web研发部门', res_department, msg=msg) # self.assertEqual(1, res_pstate, msg=msg) self.assertEqual(0, res_recordsTotal, msg=msg) def test_ProductList04(self): """验证产品列表-产品ID搜索""" pid = OpenPlatformCommon.getpid(self.mid, category=2, platform=1) params = { 'MerchantId': self.mid, 'Condition': pid, 'PageIndex': 1, 'PageSize': 1 } res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.data[0].productId', body=res.text) res_pname = JMESPathExtractor().extract( query='data.data[0].productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.data[0].iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.data[0].productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.data[0].productCategory', body=res.text) res_psubcategory = JMESPathExtractor().extract( query='data.data[0].subCategory', body=res.text) res_pecology = JMESPathExtractor().extract( query='data.data[0].productEcology', body=res.text) res_pmname = JMESPathExtractor().extract( query='data.data[0].merchantName', body=res.text) res_department = JMESPathExtractor().extract( query='data.data[0].department', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.data[0].state', body=res.text) res_recordsTotal = JMESPathExtractor().extract( query='data.recordsTotal', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('Autotest测试', res_pname, msg=msg) self.assertIn('key=Autotest', str(res_iconurl), msg=msg) self.assertEqual(2, res_pcategory, msg=msg) self.assertEqual('单网页形态', res_psubcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('Web研发部门', res_department, msg=msg) self.assertEqual(1, res_pstate, msg=msg) self.assertEqual(1, res_recordsTotal, msg=msg) def test_ProductList05(self): """验证产品列表-商户名称搜索""" pid = OpenPlatformCommon.getpid(self.mid, category=2, platform=1) params = { 'MerchantId': self.mid, 'Condition': "中顺网络公司", 'PageIndex': 1, 'PageSize': 1 } res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_pid = JMESPathExtractor().extract(query='data.data[0].productId', body=res.text) res_pname = JMESPathExtractor().extract( query='data.data[0].productName', body=res.text) res_iconurl = JMESPathExtractor().extract(query='data.data[0].iconUrl', body=res.text) res_pnum = JMESPathExtractor().extract(query='data.data[0].productNum', body=res.text) res_pcategory = JMESPathExtractor().extract( query='data.data[0].productCategory', body=res.text) res_psubcategory = JMESPathExtractor().extract( query='data.data[0].subCategory', body=res.text) res_pecology = JMESPathExtractor().extract( query='data.data[0].productEcology', body=res.text) res_pmname = JMESPathExtractor().extract( query='data.data[0].merchantName', body=res.text) res_department = JMESPathExtractor().extract( query='data.data[0].department', body=res.text) res_pstate = JMESPathExtractor().extract(query='data.data[0].state', body=res.text) res_recordsTotal = JMESPathExtractor().extract( query='data.recordsTotal', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(pid, res_pid, msg=msg) self.assertEqual('Autotest测试', res_pname, msg=msg) self.assertIn('key=Autotest', str(res_iconurl), msg=msg) self.assertEqual(2, res_pcategory, msg=msg) self.assertEqual('单网页形态', res_psubcategory, msg=msg) self.assertEqual(0, res_pecology, msg=msg) self.assertEqual('中顺网络公司', res_pmname, msg=msg) self.assertEqual('Web研发部门', res_department, msg=msg) self.assertEqual(1, res_pstate, msg=msg) self.assertEqual(1, res_recordsTotal, msg=msg)
class TestPlayerLogin(unittest.TestCase): """玩家登录接口""" API_URL = Config().get('OpenPlatform_API').get('Player').get('Login') excel = DATA_PATH + '/OpenPlatform_Player.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_PlayerLogin01(self): """批量验证玩家登录接口容错""" datas = ExcelReader(self.excel, sheet='Login').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = json.loads( ast.literal_eval(json.dumps(datas[d]['expection']))) # expect = datas[d]['expection'] # logger.debug(expect) # logger.debug(type(expect)) casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') datas[d]['payload'] = ast.literal_eval(datas[d]['payload']) params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract( query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract( query='data.openId', body=res.text) res_nickname = JMESPathExtractor().extract( query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract( query='data.account', body=res.text) res_mobile = JMESPathExtractor().extract( query='data.mobile', body=res.text) res_picture = JMESPathExtractor().extract( query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect['success'], res_success, msg=msg) if 'message' in expect.keys(): self.assertEqual(expect['message'], res_message, msg=msg) if 'error' in expect.keys(): self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) if 'data' in expect.keys() and expect['data']: self.assertEqual(expect['data']['openId'], res_openId, msg=msg) self.assertEqual(expect['data']['account'], res_account, msg=msg) self.assertEqual(expect['data']['nickname'], res_nickname, msg=msg) self.assertEqual(expect['data']['mobile'], res_mobile, msg=msg) # self.assertIsNotNone(res_picture, msg=msg) self.tearDown() def test_PlayerLogin02(self): """验证手机验证码登录:单个在有效期内的验证码""" mobile = 17712345678 code = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "channelNo": 81026962, "packageNo": 81026962001, "type": 1, "ip": "58.63.60.71", "machineCode": "s0qO3Jz9TLeM2CtQ50x", "appId": "8102Fv0aBOMJ5lbt6mMSrqBSPE7cpI8A", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_mobile = JMESPathExtractor().extract(query='data.mobile', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) self.assertEqual('jpSeis_Pz8_Pz8_Hzs_NxsrHyMiHu76v', res_openId, msg=msg) self.assertEqual('游客23113470', res_nickname, msg=msg) self.assertEqual(str(mobile), res_account, msg=msg) self.assertEqual(str(mobile), res_mobile, msg=msg) def test_PlayerLogin03(self): """验证手机验证码登录:多个在有效期内验证码,输入最新的""" mobile = 17712345678 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "channelNo": 81026962, "packageNo": 81026962001, "type": 1, "ip": "58.63.60.71", "machineCode": "s0qO3Jz9TLeM2CtQ50x", "appId": "8102Fv0aBOMJ5lbt6mMSrqBSPE7cpI8A", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code2 }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) res_openId = JMESPathExtractor().extract(query='data.openId', body=res.text) res_nickname = JMESPathExtractor().extract(query='data.nickname', body=res.text) res_account = JMESPathExtractor().extract(query='data.account', body=res.text) res_mobile = JMESPathExtractor().extract(query='data.mobile', body=res.text) res_picture = JMESPathExtractor().extract(query='data.picture', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) self.assertEqual('jpSeis_Pz8_Pz8_Hzs_NxsrHyMiHu76v', res_openId, msg=msg) self.assertEqual('游客23113470', res_nickname, msg=msg) self.assertEqual(str(mobile), res_account, msg=msg) self.assertEqual(str(mobile), res_mobile, msg=msg) def test_PlayerLogin04(self): """验证手机验证码登录:验证码超出有效期(2分钟)""" mobile = 17712345678 code = OpenPlatformCommon.get_smscode(mobile=mobile) time.sleep(120) datas = { "channelNo": 81026962, "packageNo": 81026962001, "type": 1, "ip": "58.63.60.71", "machineCode": "s0qO3Jz9TLeM2CtQ50x", "appId": "8102Fv0aBOMJ5lbt6mMSrqBSPE7cpI8A", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('验证码已过期', res_error, msg=msg) self.assertEqual(5, res_code, msg=msg) self.assertIsNone(res_data, msg=msg) def test_PlayerLogin05(self): """验证手机验证码注册:有效期内多次请求验证码,输入的不是最新的""" mobile = 17712345678 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "channelNo": 81026962, "packageNo": 81026962001, "type": 1, "ip": "58.63.60.71", "machineCode": "s0qO3Jz9TLeM2CtQ50x", "appId": "8102Fv0aBOMJ5lbt6mMSrqBSPE7cpI8A", "terminalType": 1, "osVersion": "Android.8.3.1", "machineModel": "MI 9", "payload": { "Mobile": mobile, "SmsKey": "1", "SmsCode": code1 }, "networkState": 0, "wifiName": "MISnet" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('验证码错误', res_error, msg=msg) self.assertEqual(10, res_code, msg=msg) self.assertIsNone(res_data, msg=msg)
class TestMerchantGet(unittest.TestCase): """商户查询接口""" API_URL = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantGet') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_GetMerchant01(self): """简单验证商户查询接口容错""" datas = ExcelReader(self.excel, sheet='GetMerchant').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['id'] == '{mid}': datas[d]['id'] = OpenPlatformCommon.getmid() #转换为json格式 # params = json.dumps(datas[d]) params = datas[d] # logger.debug(type(params)) # headers={'Content-Type': "application/json"} res = self.client.send(params=params) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知', str(message), msg=msg) self.tearDown() def test_GetMerchant02(self): """验证创建成功后查询接口返回信息是否正确""" mid = OpenPlatformCommon.getmid() params = {"id": mid} res = self.client.send(params=params) #返回的success值 result = JMESPathExtractor().extract(query='success', body=res.text) #返回的商户id res_id = JMESPathExtractor().extract(query='data.id', body=res.text) #返回的商户名称 res_name = JMESPathExtractor().extract(query='data.name', body=res.text) #返回的商户简称 res_shortname = JMESPathExtractor().extract(query='data.shortName', body=res.text) #返回的商户类型 res_type = JMESPathExtractor().extract(query='data.type', body=res.text) #返回的商户类型名称 res_typename = JMESPathExtractor().extract(query='data.typeName', body=res.text) #返回的商户状态值 res_state = JMESPathExtractor().extract(query='data.state', body=res.text) #返回的商户状态 res_statename = JMESPathExtractor().extract(query='data.stateName', body=res.text) #返回的商户主体 res_principal = JMESPathExtractor().extract(query='data.principal', body=res.text) #返回的社会统一信用码 res_creditcode = JMESPathExtractor().extract(query='data.creditCode', body=res.text) #返回的法人信息 res_legalrepresentative = JMESPathExtractor().extract( query='data.legalRepresentative', body=res.text) #返回的联系电话 res_mobile = JMESPathExtractor().extract(query='data.mobile', body=res.text) #返回的地址 res_address = JMESPathExtractor().extract(query='data.address', body=res.text) #返回的联系人名称 res_contactname = JMESPathExtractor().extract(query='data.contactName', body=res.text) #返回的联系人手机 res_contactmobile = JMESPathExtractor().extract( query='data.contactMobile', body=res.text) #返回的联系人邮箱地址 res_email = JMESPathExtractor().extract(query='data.email', body=res.text) #返回的联系人QQ号码 res_qq = JMESPathExtractor().extract(query='data.qq', body=res.text) #返回的联系人微信号 res_wechat = JMESPathExtractor().extract(query='data.weChat', body=res.text) #返回的营业执照 res_businesslicense = JMESPathExtractor().extract( query='data.businessLicense', body=res.text) #返回的文网文 res_classicalchinese = JMESPathExtractor().extract( query='data.classicalChinese', body=res.text) #返回的ICP res_icp = JMESPathExtractor().extract(query='data.icp', body=res.text) #返回的法人身份证 res_corporateidentitycard = JMESPathExtractor().extract( query='data.corporateIdentityCard', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertEqual(mid, str(res_id), msg=msg) self.assertEqual('中顺网络公司', str(res_name), msg=msg) self.assertEqual('ZS棋牌', str(res_shortname), msg=msg) self.assertEqual('1', str(res_type), msg=msg) self.assertEqual('自研', str(res_typename), msg=msg) self.assertEqual('1', str(res_state), msg=msg) self.assertEqual('正常', str(res_statename), msg=msg) self.assertEqual('中顺棋牌', str(res_principal), msg=msg) self.assertEqual('91440106589536704F', str(res_creditcode), msg=msg) self.assertEqual('李石头', str(res_legalrepresentative), msg=msg) self.assertEqual('39956888', str(res_mobile), msg=msg) self.assertEqual('广东省广州市天河区天河软件园建中路50号多玩游戏大厦4楼', str(res_address), msg=msg) self.assertEqual('王小姐', str(res_contactname), msg=msg) self.assertEqual('19978953221', str(res_contactmobile), msg=msg) self.assertEqual('*****@*****.**', str(res_email), msg=msg) self.assertEqual('54321', str(res_qq), msg=msg) self.assertEqual('qkagame', str(res_wechat), msg=msg) self.assertIn('20190722/953ba822fb8643b282e6102712d96c24.jpg', str(res_businesslicense), msg=msg) self.assertIn('20190722/c5e60fd2961b97aca2ea3ec735892a40.jpg', str(res_classicalchinese), msg=msg) self.assertIn('20190722/056fa26e44814b1ea36b288df9523f2f.jpeg', str(res_icp), msg=msg) self.assertIn('20190722/9fc2f9a61ae8486084f69ea6393f637d.jpeg', str(res_corporateidentitycard), msg=msg) def test_GetMerchant03(self): """验证编辑成功后查询接口返回信息是否正确""" mid = OpenPlatformCommon.getmid() #编辑商户信息 edit_datas = { "id": mid, "name": "编辑网络公司", "shortName": "ZS", "state": 2, "principal": "", "creditCode": "", "legalRepresentative": "", "mobile": "19978953221", "address": "", "contactName": "张小金", "contactMobile": 13778953221, "email": "*****@*****.**", "qq": 123456, "weChat": "weixin", "businessLicense": "20190723/953ba822fb8643b282e6102712d00024.jpg", "classicalChinese": "20190723/c5e60fd2961b97aca2ea3ec735891111.jpg", "icp": "20190723/056fa26e44814b1ea36b288df9522222.jpeg", "corporateIdentityCard": "20190723/9fc2f9a61ae8486084f69ea6393f3333.jpeg" } edit_headers = {'Content-Type': "application/json"} edit_url = Config().get('OpenPlatform_API').get('Merchant').get( 'MerchantEdit') edit_client = HTTPClient(url=edit_url, method='POST') edit_client.send(data=json.dumps(edit_datas), headers=edit_headers) #查询商户信息 params = {"id": mid} res = self.client.send(params=params) #返回的success值 result = JMESPathExtractor().extract(query='success', body=res.text) #返回的商户id res_id = JMESPathExtractor().extract(query='data.id', body=res.text) #返回的商户名称 res_name = JMESPathExtractor().extract(query='data.name', body=res.text) #返回的商户简称 res_shortname = JMESPathExtractor().extract(query='data.shortName', body=res.text) #返回的商户类型 res_type = JMESPathExtractor().extract(query='data.type', body=res.text) #返回的商户类型名称 res_typename = JMESPathExtractor().extract(query='data.typeName', body=res.text) #返回的商户状态值 res_state = JMESPathExtractor().extract(query='data.state', body=res.text) #返回的商户状态 res_statename = JMESPathExtractor().extract(query='data.stateName', body=res.text) #返回的商户主体 res_principal = JMESPathExtractor().extract(query='data.principal', body=res.text) #返回的社会统一信用码 res_creditcode = JMESPathExtractor().extract(query='data.creditCode', body=res.text) #返回的法人信息 res_legalrepresentative = JMESPathExtractor().extract( query='data.legalRepresentative', body=res.text) #返回的联系电话 res_mobile = JMESPathExtractor().extract(query='data.mobile', body=res.text) #返回的地址 res_address = JMESPathExtractor().extract(query='data.address', body=res.text) #返回的联系人名称 res_contactname = JMESPathExtractor().extract(query='data.contactName', body=res.text) #返回的联系人手机 res_contactmobile = JMESPathExtractor().extract( query='data.contactMobile', body=res.text) #返回的联系人邮箱地址 res_email = JMESPathExtractor().extract(query='data.email', body=res.text) #返回的联系人QQ号码 res_qq = JMESPathExtractor().extract(query='data.qq', body=res.text) #返回的联系人微信号 res_wechat = JMESPathExtractor().extract(query='data.weChat', body=res.text) #返回的营业执照 res_businesslicense = JMESPathExtractor().extract( query='data.businessLicense', body=res.text) #返回的文网文 res_classicalchinese = JMESPathExtractor().extract( query='data.classicalChinese', body=res.text) #返回的ICP res_icp = JMESPathExtractor().extract(query='data.icp', body=res.text) #返回的法人身份证 res_corporateidentitycard = JMESPathExtractor().extract( query='data.corporateIdentityCard', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertEqual(mid, str(res_id), msg=msg) self.assertEqual('编辑网络公司', str(res_name), msg=msg) self.assertEqual('ZS', str(res_shortname), msg=msg) self.assertEqual('1', str(res_type), msg=msg) self.assertEqual('自研', str(res_typename), msg=msg) self.assertEqual('2', str(res_state), msg=msg) self.assertEqual('禁用', str(res_statename), msg=msg) self.assertEqual('', str(res_principal), msg=msg) self.assertEqual('', str(res_creditcode), msg=msg) self.assertEqual('', str(res_legalrepresentative), msg=msg) self.assertEqual('19978953221', str(res_mobile), msg=msg) self.assertEqual('', str(res_address), msg=msg) self.assertEqual('张小金', str(res_contactname), msg=msg) self.assertEqual('13778953221', str(res_contactmobile), msg=msg) self.assertEqual('*****@*****.**', str(res_email), msg=msg) self.assertEqual('123456', str(res_qq), msg=msg) self.assertEqual('weixin', str(res_wechat), msg=msg) self.assertIn('20190723/953ba822fb8643b282e6102712d00024.jpg', str(res_businesslicense), msg=msg) self.assertIn('20190723/c5e60fd2961b97aca2ea3ec735891111.jpg', str(res_classicalchinese), msg=msg) self.assertIn('20190723/056fa26e44814b1ea36b288df9522222.jpeg', str(res_icp), msg=msg) self.assertIn('20190723/9fc2f9a61ae8486084f69ea6393f3333.jpeg', str(res_corporateidentitycard), msg=msg)
class TestProductChannelList(unittest.TestCase): """产品渠道添加接口""" API_URL = Config().get('OpenPlatform_API').get('ProductChannel').get( 'ProductChannelList') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='GET') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ProductChannelList01(self): """简单验证添加产品渠道接口容错""" datas = ExcelReader(self.excel, sheet='ProductChannelList').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['ProductId'] == '{pid}': datas[d]['ProductId'] = OpenPlatformCommon.getpid( self.mid) # #转换为json格式 # params = json.dumps(datas[d]) params = datas[d] # headers={'Content-Type': "application/json"} res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ProductChannelList02(self): """验证产品渠道列表成功返回""" data = {"ProductId": "39ef7c0979b17b02ec4616b4384ff1c8"} params = data res = self.client.send(params=params) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) res_data = JMESPathExtractor().extract(query='data', body=res.text) msg = '\n请求地址:' + res.url + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.assertEqual(4, len(res_data), msg=msg) self.tearDown()
class TestPlayerPromote(unittest.TestCase): """玩家转正接口""" API_URL = Config().get('OpenPlatform_API').get('Player').get('Promote') excel = DATA_PATH + '/OpenPlatform_Player.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_PlayerPromote01(self): """批量验证玩家转正接口容错""" datas = ExcelReader(self.excel, sheet='Promote').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = json.loads( ast.literal_eval(json.dumps(datas[d]['expection']))) # expect = datas[d]['expection'] # logger.debug(expect) # logger.debug(type(expect)) casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') datas[d]['payload'] = ast.literal_eval(datas[d]['payload']) params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract( query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect['success'], res_success, msg=msg) if 'message' in expect.keys(): self.assertEqual(expect['message'], res_message, msg=msg) if 'error' in expect.keys(): self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) self.tearDown() def test_PlayerPromote02(self): """验证手机验证码转正:单个在有效期内的验证码""" if OpenPlatformCommon.get_registinfo() != '注册失败': openId = OpenPlatformCommon.get_registinfo()['openId'] unionId = OpenPlatformCommon.get_registinfo()['unionId'] nickname = OpenPlatformCommon.get_registinfo()['nickname'] account = OpenPlatformCommon.get_registinfo()['account'] password = OpenPlatformCommon.get_registinfo()['password'] mobile = 13225757037 code = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "openId": openId, "packageNo": 81036962002, "type": 1, "payload": { "mobile": mobile, "smsKey": "1", "smsCode": code, "password": "******" } } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) def test_PlayerPromote03(self): """验证手机验证码转正:多个在有效期内验证码,输入最新的""" if OpenPlatformCommon.get_registinfo() != '注册失败': openId = OpenPlatformCommon.get_registinfo()['openId'] unionId = OpenPlatformCommon.get_registinfo()['unionId'] nickname = OpenPlatformCommon.get_registinfo()['nickname'] account = OpenPlatformCommon.get_registinfo()['account'] password = OpenPlatformCommon.get_registinfo()['password'] mobile = 13225757099 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "openId": openId, "packageNo": 81036962002, "type": 1, "payload": { "mobile": mobile, "smsKey": "1", "smsCode": code2, "password": "******" } } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertTrue(res_success, msg=msg) self.assertIsNone(res_error, msg=msg) self.assertEqual(0, res_code, msg=msg) def test_PlayerPromote04(self): """验证手机验证码转正:验证码超出有效期(2分钟)""" if OpenPlatformCommon.get_registinfo() != '注册失败': openId = OpenPlatformCommon.get_registinfo()['openId'] unionId = OpenPlatformCommon.get_registinfo()['unionId'] nickname = OpenPlatformCommon.get_registinfo()['nickname'] account = OpenPlatformCommon.get_registinfo()['account'] password = OpenPlatformCommon.get_registinfo()['password'] mobile = 13225757199 code = OpenPlatformCommon.get_smscode(mobile=mobile) time.sleep(120) datas = { "openId": openId, "packageNo": 81036962002, "type": 1, "payload": { "mobile": mobile, "smsKey": "1", "smsCode": code, "password": "******" } } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('验证短信失败', res_error, msg=msg) self.assertEqual(10, res_code, msg=msg) def test_PlayerPromote05(self): """验证手机验证码转正:有效期内多次请求验证码,输入的不是最新的""" if OpenPlatformCommon.get_registinfo() != '注册失败': openId = OpenPlatformCommon.get_registinfo()['openId'] unionId = OpenPlatformCommon.get_registinfo()['unionId'] nickname = OpenPlatformCommon.get_registinfo()['nickname'] account = OpenPlatformCommon.get_registinfo()['account'] password = OpenPlatformCommon.get_registinfo()['password'] mobile = 19925757299 code1 = OpenPlatformCommon.get_smscode(mobile=mobile) code2 = OpenPlatformCommon.get_smscode(mobile=mobile) datas = { "openId": openId, "packageNo": 81036962002, "type": 1, "payload": { "mobile": mobile, "smsKey": "1", "smsCode": code1, "password": "******" } } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) res_success = JMESPathExtractor().extract(query='success', body=res.text) res_message = JMESPathExtractor().extract(query='message', body=res.text) res_error = JMESPathExtractor().extract(query='error', body=res.text) res_code = JMESPathExtractor().extract(query='code', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertFalse(res_success, msg=msg) self.assertEqual('验证短信失败', res_error, msg=msg) self.assertEqual(10, res_code, msg=msg)
class TestChannelCreate(unittest.TestCase): """渠道添加接口""" API_URL = Config().get('OpenPlatform_API').get('Channel').get( 'ChannelCreate') excel = DATA_PATH + '/OpenPlatform_Merchant.xlsx' def setUp(self): self.client = HTTPClient(url=self.API_URL, method='POST') self.mid = OpenPlatformCommon.getmid() logger.info('开始测试') def tearDown(self): logger.info('结束测试') def test_ChannelCreate01(self): """简单验证添加渠道接口容错""" datas = ExcelReader(self.excel, sheet='CreateChannel').data for d in range(0, len(datas)): if datas[d]['is_execute'] == 'N': continue else: with self.subTest(data=datas[d]['CaseNo'] + datas[d]['describe']): self.setUp() # logger.debug(datas[d]) expect = datas[d]['expect_code'] casename = str(datas[d]['describe']) caseNo = str(datas[d]['CaseNo']) #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expect_code') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') if datas[d]['id'] == '{mid}': datas[d]['id'] = self.mid #转换为json格式 params = json.dumps(datas[d]) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) # resultlist =[caseNo,casename,params,expect,res.text] # resultdata.qppend(resultlist) # logger.debug(res.text) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual(expect, str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.tearDown() def test_ChannelCreate02(self): """验证创建成功后返回""" datas = { "name": "Autotest渠道创建成功", "type": 1, "developerPlatform": "Autotest自动化" } params = json.dumps(datas) headers = {'Content-Type': "application/json"} res = self.client.send(data=params, headers=headers) result = JMESPathExtractor().extract(query='success', body=res.text) message = JMESPathExtractor().extract(query='message', body=res.text) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) res_cid = JMESPathExtractor().extract(query='data', body=res.text) responseTime = JMESPathExtractor().extract(query='responseTime', body=res.text) msg = '\n请求地址:' + res.url + '\n请求数据:' + params + '\n返回结果:' + res.text self.assertEqual('true', str(result).lower(), msg=msg) self.assertNotIn('未知错误', str(message), msg=msg) self.assertIn(date, str(responseTime), msg=msg) self.assertEqual(32, len(res_cid), msg=msg)