def test_AdminGet01(self): """简单验证获取管理员信息接口容错""" datas = ExcelReader(self.excel, sheet='GetAdmin').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'] == '{aid}': datas[d]['id'] = OpenPlatformCommon.getaid(self.mid)[0] res = self.client.sendbyurl(datas[d]['id']) # 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_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_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_UserList01(self): """批量验证账号列表接口容错""" datas = ExcelReader(self.excel, sheet='UserList').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') 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) 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.data', body=res.text) res_recordsTotal = JMESPathExtractor().extract( query='data.recordsTotal', body=res.text) msg = '\n请求地址:' + res.url + '\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']['data']: for i in range(0, len(expect['data']['data'])): self.assertIn(expect['data']['data'][i], res_data, msg=msg) self.assertLessEqual(1, res_recordsTotal, msg=msg) self.tearDown()
def test_ProductPackageSimpleInfo01(self): """批量验证获取分包号的简单信息接口容错""" datas = ExcelReader(self.excel, sheet='ProductPackageSimpleInfo').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') 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) 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_packageId = JMESPathExtractor().extract( query='data.packageId', body=res.text) res_packageCount = JMESPathExtractor().extract( query='data.packageCount', body=res.text) msg = '\n请求地址:' + res.url + '\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'], res_data, msg=msg) self.tearDown()
def test_DeviceSet01(self): """批量验证设置用户常用设备接口容错""" datas = ExcelReader(self.excel, sheet='deviceNo').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']) playerId = datas[d]['playerId'] #请求的参数剔除期望值列、是否执行列、描述列、用例编号列 datas[d].pop('expection') datas[d].pop('is_execute') datas[d].pop('describe') datas[d].pop('CaseNo') datas[d].pop('playerId') datas[d]['deviceNo'] = ast.literal_eval( datas[d]['deviceNo']) url = "%s%s" % (self.API_URL, playerId) params = json.dumps(datas[d]) # logger.debug(type(params)) headers = {'Content-Type': "application/json"} self.client = HTTPClient(url=url, method='POST') 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_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_search_po(self): datas = ExcelReader(self.excel).data for d in datas: with self.subTest(data=d): self.sub_setUp_po() self.page.search(d['search']) time.sleep(2) self.page = BaiDuResultPage(self.page) #页面跳转到result页面 self.page.save_screen_shot() links = self.page.result_links for link in links: logger.info(link.text) self.sub_tearDown_po()
def test_search(self): datas = ExcelReader(self.excel).data for d in datas: with self.subTest(data=d): self.sub_setUp() self.driver.find_element(*self.locator_kw).send_keys( d['search']) self.driver.find_element(*self.locator_su).click() time.sleep(2) links = self.driver.find_elements(*self.locator_result) for link in links: logger.info(link.text) self.sub_tearDown()
def test_DeviceInfo01(self): """简单验证查询用户常用设备详情接口容错""" datas = ExcelReader(self.excel, sheet='UserDetails').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]['playerId'] res = self.client.sendbyurl(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) 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 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 TestData(): '''数据驱动数据函数''' try: from src.utils.ddt_testdata import testData from src.utils.file_reader import ExcelReader excelpath = DATA_PATH + "/xstz.xlsx" AssertData = ExcelReader(excelpath).data testData1 = [] for i in AssertData: for testdata in testData: if testdata["P_name"] == i["P_name"]: testdata["locator"] = i["locator"] testdata["element"] = i["element"] testData1.append(testdata) return testData1 except TimeoutError: return None print("服务器超时!")
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 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_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_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()
# -*- coding: utf-8 -*- # @Time : 2018/4/12 16:29 # @Author : huanghe # @Site : # @File : test_baidu.py # @Software: PyCharm import time import unittest from src.test.suit.baidu.search_page import SearchPage from src.utils.browser import Browser from src.utils.config import Config from src.utils.file_reader import ExcelReader from src.utils.config import DATA_PATH excel = DATA_PATH dates = ExcelReader(DATA_PATH).data class SearchTest(unittest.TestCase): def setUp(self): self.driver = Browser().get_browserdriver() self.search_page = SearchPage(self.driver) self.search_page.url = Config().get('BaiDuURl') self.search_page.visit() def tearDown(self): pass #self.search_page.quit_browser() def test_search(self): self.search_page.set_value(element=self.search_page.rec_search_input(),
def test_checkinfo(self): datas = ExcelReader(self.excel).data print(datas)
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(BASE_PATH) from src.utils.file_reader import YamlReader from src.utils.file_reader import ExcelReader # 通过当前文件的绝对路径,其父级目录一定是框架的base目录,然后确定各层的绝对路径。如果你的结构不同,可自行修改。 # 之前直接拼接的路径,修改了一下,用现在下面这种方法,可以支持linux和windows等不同的平台,也建议大家多用os.path.split()和os.path.join(),不要直接+'\\xxx\\ss'这样 CONFIG_FILE = os.path.join(BASE_PATH, 'config', 'config.yml') DATA_PATH = os.path.join(BASE_PATH, 'data') DRIVER_PATH = os.path.join(BASE_PATH, 'drivers') LOG_PATH = os.path.join(BASE_PATH, 'log') REPORT_PATH = os.path.join(BASE_PATH, 'report') CASE_PATH = os.path.join(BASE_PATH, 'src', 'test', 'case') INTERFACE_PATH = os.path.join(BASE_PATH, 'src', 'test', 'interface') _reader = ExcelReader(os.path.join(DATA_PATH, '测试用例.xlsx'), sheet='all', title_line=True).data # 数据路径 #获取需测试的模块 def get_test(): data = [] for datatest in _reader: data.append((datatest.get('测试模块'), datatest.get('是否测试'))) return data EXECEL_FILE = get_test() # EXECEL_FILE=[('发票提交','Y'),('特定城市报备','N')]
#coding=utf-8 import unittest import os, ddt from src.test.page.voince_page import Voince_page from src.utils.settings import DATA_PATH, Settings from src.utils.file_reader import ExcelReader _reader = ExcelReader(os.path.join(DATA_PATH, '测试用例.xlsx'), sheet='case1').data # 数据路径 @ddt.ddt class Invoice_test(unittest.TestCase): @classmethod def setUpClass(self): URL = Settings().get('url', index=0) self.driver = Voince_page(browser_type='chrome').get( URL, maximize_window=False) @classmethod def tearDownClass(self): self.driver.quit() def test_login(self): """ 登录 """ self.driver.login() @ddt.data(*_reader) def test_voince(self, data):
import unittest import requests, unittest, os, time, json sys.path.append(os.path.abspath(os.path.join(os.getcwd(), "../../.."))) # print (sys.path) from src.utils.config import Config, DATA_PATH, REPORT_PATH from src.utils.log import logger from src.utils.file_reader import ExcelReader from src.utils.HTMLTestRunner import HTMLTestRunner from src.utils.mail import Email from src.utils.client import HTTPClient def test_checkinfo(): pass # for d in range(0,len(datas)): # print (datas[d]) # res = client.send(params=datas[d]) # print(res) #self.assertEqual(0, res.code) if __name__ == '__main__': API_URL = Config().get('API_URL').get('sss') excel = DATA_PATH + '\APITest.xlsx' datas = ExcelReader(excel=excel, sheet='sss').data for d in range(0, len(datas)): print(datas[d]) res = client.send(params=datas[d]) print(res)
def test_VerifyCodeSMS01(self): """批量验证手机验证码信息接口容错""" datas = ExcelReader(self.excel, sheet='sms').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') 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_realName = JMESPathExtractor().extract( query='data.realName', 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(): if expect['success']: self.assertEqual(6, len(res_error), msg=msg) else: self.assertEqual(expect['error'], res_error, msg=msg) self.assertEqual(expect['code'], res_code, msg=msg) self.tearDown()
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()