def execute_case(self, filename): """ 执行接口测试用例的方法 :param filename: 用例文件名称 :return: 测试结果 """ conf.get_config(filename) list = eval(conf.get_title_list()) for i in range(2, len(list)): title = list[i] number = conf.get_data(title, key=cs.NUMBER) name = conf.get_data(title, key=cs.NAME) method = conf.get_data(title, key=cs.METHOD) url = conf.get_data(title, key=cs.URL) data = eval(conf.get_data(title, key=cs.DATA)) _data = request.json.dumps(data,ensure_ascii=False,indent=4) headers = eval(conf.get_data(title, key=cs.HEADERS)) _headers = request.json.dumps(headers,ensure_ascii=False,indent=4) testUrl = cs.TEST_URL + url actualCode = request.api(method, testUrl, _data, headers) expectCode = conf.get_data(title, key=cs.CODE) if actualCode != expectCode: logging.info("新增一条接口失败报告") self.write_report( cs.API_TEST_FAIL % (name, number, method, testUrl, _headers,_data, expectCode, actualCode)) else: logging.info("新增一条接口成功报告") self.write_report(cs.API_TEST_SUCCESS % (name, number, method, testUrl, _headers,_data, expectCode, actualCode))
def run_test(self, sheet, url): """再执行测试用例""" rows = excel.get_rows(sheet) fail = 0 for i in range(2, rows): testNumber = str(int(excel.get_content(sheet, i, cs.CASE_NUMBER))) testData = excel.get_content(sheet, i, cs.CASE_DATA) testName = excel.get_content(sheet, i, cs.CASE_NAME) testUrl = excel.get_content(sheet, i, cs.CASE_URL) testUrl = url + testUrl testMethod = excel.get_content(sheet, i, cs.CASE_METHOD) testHeaders = eval(excel.get_content(sheet, i, cs.CASE_HEADERS)) testCode = excel.get_content(sheet, i, cs.CASE_CODE) actualCode = request.api(testMethod, testUrl, testData, testHeaders) expectCode = str(int(testCode)) failResults = PrettyTable(["Number", "Method", "Url", "Data", "ActualCode", "ExpectCode"]) failResults.align["Number"] = "l" failResults.padding_width = 1 failResults.add_row([testNumber, testMethod, testUrl, testData, actualCode, expectCode]) if actualCode != expectCode: logging.info("FailCase %s", testName) print "FailureInfo" print failResults fail += 1 else: logging.info("Number %s", testNumber) logging.info("TrueCase %s", testName) if fail > 0: return False return True
def run_test(self): """再执行测试用例""" # rows = excel.get_rows(sheet) app = xw.App(visible=False) wb = app.books.open(cs.FILE_NAME) sht = wb.sheets[0] rng = xw.Range('A2') rows = rng.end('down').last_cell.row fail = 0 for i in range(3, rows + 1): testNumber = int(sht.range(cs.CASE_NUMBER + str(i)).value) testName = sht.range(cs.CASE_NAME + str(i)).value testUrl = sht.range(cs.CASE_URL + str(i)).value testMethod = sht.range(cs.CASE_METHOD + str(i)).value testHeaders = eval(sht.range(cs.CASE_HEADERS + str(i)).value) testData = sht.range(cs.CASE_DATA + str(i)).value expectCode = sht.range(cs.CASE_CODE_EXP + str(i)).options(numbers=int).value actualResponse = request.api(testMethod, testUrl, testData, testHeaders) actualCode = actualResponse.status_code sht.range(cs.CASE_CODE_ACT + str(i)).value = actualCode if actualCode != expectCode: sht.range(cs.CASE_CODE_JUD + str(i)).value = 'NG' logging.info("FailCase %s", testName) print("FailureInfo") fail += 1 else: sht.range(cs.CASE_CODE_JUD + str(i)).value = 'OK' logging.info("Number %s", testNumber) logging.info("TrueCase %s", testName) soup = BeautifulSoup(actualResponse.content, "xml") actRescode = soup.find('e-ML').ResCode.string sht.range(cs.CASE_RESCODE_ACT + str(i)).value = actRescode expRescode = sht.range(cs.CASE_RESCODE_EXP + str(i)).options(numbers=int).value if actRescode != str(expRescode): sht.range(cs.CASE_RESCODE_JUD + str(i)).value = 'NG' logging.info("FailCase %s", testName) fail += 1 else: sht.range(cs.CASE_RESCODE_JUD + str(i)).value = 'OK' logging.info("Number %s", testNumber) logging.info("TrueCase %s", testName) # failResults = PrettyTable(["Number", "Name", "ActualCode", "ExpectCode","ActualResCode","ExpectResCode"]) # failResults.align["Number"] = "l" # failResults.padding_width = 1 # failResults.add_row([testNumber, testName, actualCode, expectCode,actRescode,expRescode]) wb.save(datetime.now().strftime('%Y%m%d%H%M%S') + 'TestResult.xlsx') wb.close() app.quit() if fail > 0: return False return True
def execute_case(filename): """ 执行接口测试用例的方法 :param filename: 用例文件名称 :return: 测试结果 """ conf.get_config(filename) list = eval(conf.get_title_list()) for i in range(1, len(list)): title = list[i] number = conf.get_data(title, key=cs.NUMBER) name = conf.get_data(title, key=cs.NAME) method = conf.get_data(title, key=cs.METHOD) url = conf.get_data(title, key=cs.URL) data = conf.get_data(title, key=cs.DATA) _data = request.json.dumps(data,ensure_ascii=False,indent=4) headers = eval(conf.get_data(title, key=cs.HEADERS)) # headers['Cookie']=cookie _headers = request.json.dumps(headers,ensure_ascii=False,indent=4) testUrl = cs.DOMAIN + url login = cs.LOGIN if(title == login): reponse = request.set_cookie_api(method, testUrl, data, headers) actualCode = str(reponse.get("code")) else: reponse = request.api(method, testUrl, data, headers) actualCode = str(reponse.get("code")) expectCode = str(conf.get_data(title, key=cs.CODE)) if actualCode != expectCode: logging.info("新增一条接口失败报告") write_report(cs.API_TEST_FAIL % (name, number, method, testUrl, headers, data, reponse, expectCode, actualCode)) else: logging.info("新增一条接口成功报告") write_report(cs.API_TEST_SUCCESS % (name, number, method, testUrl, headers, data, reponse, expectCode, actualCode))