å·¥ä½åç: æµè¯ç¨ä¾å¨excelä¸ç¼è¾ï¼ä½¿ç¨ç¬¬ä¸æ¹åºxlrdï¼è¯»åè¡¨æ ¼sheetåå
容ï¼sheetName对åºæ¨¡ååï¼Jenkinséææå¡åç°æå¡moduleNameæ¥æ¾å¯¹åºè¡¨åï¼è¿ç¨ç¬¬ä¸æ¹åºrequests请æ±æ¥å£ï¼æ ¹æ®ç»æåææå¼è¿è¡æè¨ï¼æ ¹æ®è¾åºæ¥åå¤ææ¥å£æµè¯æ¯å¦éè¿ã
1. æ°æ®åå¤
æ°æ®æå
¥ï¼å®¹æå®ç°çæµè¯åºæ¯ä¸æéå¤é¨æ°æ®)
åå¤sql ï¼æ¥å£éè¦éå¤ä½¿ç¨ï¼åæ°ä¸å®å¾æ¯åé)
2.éæé¨ç½²(è¿ç»´ç¸å
³äºè§£å³å¯)
å¹³æ»å级éªè¯èæ¬å å
¥èªå¨å
3.èªå¨åæ¡æ¶å®ç°
è°ç¨mysql
exceléåæµè¯ç¨ä¾
requestså®ç°æ¥å£è°ç¨
æ ¹æ®æ¥å£è¿åçcodeå¼åExcel对æ¯
æ¥ååé¦
æ´é²æå¡
åä¸ä¸ªç®åç»å½çæ¥å£èªå¨åæµè¯
代ç çåå±å¦ä¸å¾ï¼
coding.png
ä¸ãåä¸ä¸ªå°è£
çè·åexcelè¡¨æ ¼ç模å
excel.png
代ç å®ç°å¦ä¸ï¼
# !/usr/bin/python
# -*- coding: UTF-8 -*-
# åºç¡å
ï¼excelçå°è£
import xlrd
workbook = None
def open_excel(path):
"""æå¼excel"""
global workbook
if (workbook == None):
workbook = xlrd.open_workbook(path, on_demand=True)
def get_sheet(sheetName):
"""è·åè¡å·"""
global workbook
return workbook.sheet_by_name(sheetName)
def get_rows(sheet):
"""è·åè¡å·"""
return sheet.nrows
def get_content(sheet, row, col):
"""è·åè¡¨æ ¼ä¸å
容"""
return sheet.cell(row, col).value
def release(path):
"""éæ¾excelåå°å
å"""
global workbook
workbook.release_resources()
del workbook
代ç å°è£
åå½æ模åå¼ç¨ï¼è¿è¿æ¯æå¼å§å¢ã
äºãå¼ç¨log模åè·åæ¥å¿
åå¤å·¥ä½ï¼
éè¦ä¸ä¸ªæ¥å¿çæè·ï¼å
æ¬æ¡æ¶åæºç æåºçexpectionã
代ç å¦ä¸ï¼
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# åºç¡å
ï¼æ¥å¿æå¡
import logging
import time
def getLogger():
global tezLogPath
try:
tezLogPath
except NameError:
tezLogPath = "/data/log/apiTest/"
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# file = tezLogPath + time.strftime("%Y-%m-%d", time.localtime()) + ".log"
# logging.basicConfig(filename=file, level=logging.INFO, format=FORMAT)
# å¼åé¶æ®µä¸ºäºæ¹ä¾¿è°è¯ï¼å¯ä¸è¾åºå°æ件
logging.basicConfig(level=logging.INFO, format=FORMAT)
return logging
ä¸ãå¼ç¨requests模åæ¥å£æµè¯
åå¤å·¥ä½ï¼
éè¦ç请æ±ç±»ååæ§è¡æµè¯çæ¹æ³ã
代ç å¦ä¸ï¼
#!/usr/bin/python#
#-*- coding: UTF-8 -*-
# åºç¡å
ï¼æ¥å£æµè¯çå°è£
import requests
import tezLog as log
logging = log.getLogger()
def api_test(method, url, data ,headers):
"""
å®ä¹ä¸ä¸ªè¯·æ±æ¥å£çæ¹æ³åéè¦çåæ°
:Args:
method - ä¼ä¸å称 str
url - ç¨æ·æµç§° str
data - åæ° str
headers - 请æ±å¤´ä¿¡æ¯ dict
éRESTful API请æ±å¦å¤ç请æ±ç±»åå®é
ç¨ä¸å°ãä¹ä¸å®å
¨ã
"""
try:
if method == "post":
results = requests.post(url, data, headers=headers)
if method == "get":
results = requests.get(url, data, headers=headers)
# if method == "put":
# results = requests.put(url, data, headers=headers)
# if method == "delete":
# results = requests.delete(url, headers=headers)
# if method == "patch":
# results == requests.patch(url, data, headers=headers)
# if method == "options":
# results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")
return code
except Exception, e:
logging.error("service is error", e)
def run_test(sheet):
"""
å®ä¹ä¸ä¸ªæ§è¡åæè¨çæ¹æ³
:Args:
sheet - æå¡å称 strï¼excel页èå称è¯å«çï¼
"""
rows = excel.getRows(sheet)
fail = 0
for i in range(2, rows):
#è¿é为ä»ä¹ä»ç¬¬äºè¡å¼å§è·ï¼å 为ä¼å
æ§è¡SQLè¿è¡æ°æ®åå¤å¦ä¹åExcelå±ç¤ºç空ç½ä½ç½®
testData = excel.getContent(sheet, i, gl.CASE_DATA)
testUrl = excel.getContent(sheet, i, gl.CASE_URL)
testMethod = excel.getContent(sheet, i, gl.CASE_METHOD)
testHeaders = eval(excel.getContent(sheet, i, gl.CASE_HEADERS))
testCode = excel.getContent(sheet, i, gl.CASE_CODE)
actualCode = request.apiTest(testMethod, testUrl, testData, testHeaders)
expectCode = str(int(testCode))
failResults = ' url: ' + testUrl + ' params: ' + testData + ' actualCode: ' + actualCode + ' expectCode: ' + expectCode
if actualCode == expectCode:
logging.info("pass")
elif actualCode != expectCode:
logging.info("fail %s", failResults)
fail += 1
if fail > 0 :
return False
return True
åãå
³äºåæ°ä¸gl模å
åå¤å·¥ä½ï¼
ææçåæ°å常éæ们ä¼æ´çå°è¿ä¸ªæ件ä¸ï¼å 为设计ä¸å¡åæå¡å¯ç ãæ°æ®åºå¯ç è¿éå±ç¤ºä¸é¨åã
代ç å¦ä¸ï¼
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# èæ¬åè½ï¼å
¨é¨åé
import time
import uuid
CASE_NUMBER = 0 # ç¨ä¾ç¼å·
CASE_NAME = 1 # ç¨ä¾å称
CASE_DATA = 2 # ç¨ä¾åæ°
CASE_URL = 3 # ç¨ä¾æ¥å£å°å
CASE_METHOD = 4 # ç¨ä¾è¯·æ±ç±»å
CASE_CODE = 5 # ç¨ä¾code
CASE_HEADERS = 6 # ç¨ä¾headers
SQL_ROW = 0 # é¢æ§è¡SQLçè¡å·
SQL_COL = 1 # é¢æ§è¡SQLçåå·
äºãåä¸ä¸ªrunæ件ï¼åªæ¯ç¨æ¥æ§è¡çï¼ä¸å¡å代ç å¥ç¦»ã
代ç å¦ä¸ï¼
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# éªè¯å
ï¼æ¥å£æµè¯èæ¬
import sys
import core.tezLog as log
import function.common as common
logging = log.getLogger()
"""1.å¤é¨è¾å
¥åæ°"""
path = sys.path[0] # å½åè·¯å¾
module = sys.argv[1] # æå¡æ¨¡åå
url = sys.argv[2] # æå¡å°å
host = sys.argv[3] # æ°æ®åºå°å
user = sys.argv[4] # æ°æ®åºç¨æ·å
password = sys.argv[5] # æ°æ®åºå¯ç
db = sys.argv[6] # æ°æ®åºå称
"""2.æ ¹æ®moduleè·åSheet"""
logging.info("-------------- Execute TestCases ---------------")
sheet = common.get_excel_sheet(path + "/" + common.filename, module)
"""3.æ°æ®åå¤"""
logging.info("-------------- Prepare data through MysqlDB --------------")
sql = common.get_prepare_sql(sheet)
common.prepare_data(host=host, user=user, password=password, db=db, sql=sql)
"""4.æ§è¡æµè¯ç¨ä¾"""
res = common.run(sheet, url)
logging.info("-------------- Get the result ------------ %s", res)
"""è¿éçresæ¯æ们平æ»å级çæ¶åéè¦è¿åç»æ为TRUEæä¼ç»§ç»ä¸é¢èµ°ã"""
å
ãæ¥çæµè¯æ¥åï¼é¨ç½²å°jenkinsä¼éè¿æ§å¶å°æ¥çï¼
温馨提示:答案为网友推荐,仅供参考