Beispiel #1
0
    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))
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
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))