#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 业务包:通用函数
import core.tezMysql as mysql
import core.tezLog as log
import gl
import core.tezExcel as excel
import core.tezRequest as request
from prettytable import PrettyTable
filename = gl.FILE_NAME
logging = log.get_logger()
def prepare_data(host, user, password, db, sql):
"""数据准备,添加测试数据"""
mysql.connect(host, user, password, db)
res = mysql.execute(sql)
mysql.close()
logging.info("Run sql: the row number affected is %s", res)
return res
def get_excel_sheet(path, module):
"""依据模块名获取sheet"""
excel.open_excel(path)
return excel.get_sheet(module)
def replace_holder(value):
"""遍历字典替换占位符"""
for holder in gl.PLACE_HOLDER:
value = value.replace(holder, gl.PLACE_HOLDER[holder])
return value
def get_prepare_sql(sheet):
"""获取预执行SQL"""
return replace_holder(excel.get_content(sheet, gl.SQL_ROW, gl.SQL_COL))
def run_test(sheet, url):
"""再执行测试用例"""
rows = excel.get_rows(sheet)
fail = 0
for i in range(2, rows):
testNumber = str(int(excel.get_content(sheet, i, gl.CASE_NUMBER)))
testData = excel.get_content(sheet, i, gl.CASE_DATA)
testName = excel.get_content(sheet, i, gl.CASE_NAME)
testUrl = excel.get_content(sheet, i, gl.CASE_URL)
testUrl = url + testUrl
testMethod = excel.get_content(sheet, i, gl.CASE_METHOD)
testHeaders = str(excel.get_content(sheet, i, gl.CASE_HEADERS))
testHeaders = eval(replace_holder(testHeaders))
testCode = excel.get_content(sheet, i, gl.CASE_CODE)
actualCode = request.api_test(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