Jenkins執行python腳本


構建選擇Excute Windows batch command

 下面是python腳本,注意字符集 GBK

 

runtest.py

#-*-coding:GBK -*- 
import sys
import time
import pymysql
import requests


# print(sys.argv[1])

ids_out = []
# 用","分割,得到列表id_list
id_list = sys.argv[1].split(",")
for id_str in id_list:    
    # 用~分割,1001這種會變成['1001'],其他會變成['1003', '1005'],因為range不包含后面的值,所以要加1,取[1003,10006)
    for i in range(int(id_str.split("~")[0]), int(id_str.split("~")[-1]) + 1):
        ids_out.append(i)
        
print("需要執行的用例集:", ids_out)

json = {"ids": ids_out}

r = requests.post('http://10.138.60.185:9999/step_allexcute_data1/', json=json)

print(r.status_code, r.text)


# 遍歷列表,查詢出用例名和執行時間在10分鍾內的結果
print("\n")
print("序號   用例編號    用例名稱            執行結果")
suc_num = 0
sum_num = 1
for id in ids_out:
    try:
        sql = "select step_name,api_result,actual_params,expect_params from vcredit_resultdetail where step_id = %s and create_time > DATE_SUB(NOW(), INTERVAL 10 MINUTE)" % id
        # 執行第一次查詢
        conn = pymysql.connect(host="10.138.60.185", user="root", password="fyw554193", database="automate")
        cursor = conn.cursor()
        cursor.execute(sql)
        data = cursor.fetchone()
        cursor.close()
        conn.close()
        # 如果查詢不到結果,則10秒后再查,執行100次,打印"id,用例名:用例正在執行,10秒后繼續查詢"
        i = 0
        while (not data) and (i < 100):
            # print("%s: 未查到執行結果,10秒后繼續查詢。。。" % id)
            time.sleep(10)
            conn = pymysql.connect(host="10.138.60.185", user="root", password="fyw554193", database="automate")
            cursor = conn.cursor()
            cursor.execute(sql)
            data = cursor.fetchone()
            i += 1
        # 查詢到結果,則正常打印
        if data[1] == 1:
            suc_num += 1
            print("%s      %s        %s            用例執行通過" % (sum_num,id, data[0]))
        else:
            print("%s      %s        %s            用例執行未通過,實際結果為%s,預期結果為%s" % (sum_num,id, data[0], data[1], data[2]))
    # 失敗則打印異常
    except Exception:
        print("%s      %s                      接口發生異常" % (sum_num,id))
    sum_num += 1
print("\n")
print("總計運行%s個測試用例,成功%s個,失敗%s個" %(len(ids_out), suc_num, len(ids_out)-suc_num))

 

record.py

#-*-coding:GBK -*- 
import sys
import pymysql
import requests
import xml.dom.minidom
from requests.auth import HTTPBasicAuth

'''通過Jenkins API獲取項目構建結果'''
auth = HTTPBasicAuth('admin', 'admin')
url = "http://10.138.60.82:8080/api/python?pretty=true"
r = requests.get(url=url, auth=auth)
print(r.text)

dic = eval(r.text)

for i in dic["jobs"]:
    if i["name"] == 'build':
        bu_color = i["color"]
    elif i["name"] == 'scanning':
        sc_color = i["color"]

print(bu_color, sc_color)

'''通過pom.xml獲取版本信息'''
pom_path = sys.argv[1]
print(pom_path)
dom = xml.dom.minidom.parse(pom_path)
rootdata = dom.documentElement
itemlist = rootdata.getElementsByTagName('version')
version = itemlist[0].firstChild.data
print(version)

'''把結果轉化並插入數據庫'''
bu_status = 1 if bu_color == "blue" else 0
sc_status = 1 if sc_color == "blue" else 0

sql = "insert into vcredit_buildrecord(requireName,ProjectName,build,isCis,create_time) VALUE ('%s','%s',%s,%s,NOW())" \
      % (version, "ProjectName", bu_status, sc_status)

conn = pymysql.connect(host='10.138.30.104', user='root', password='080305', database='testquality', charset='UTF8')
cursor = conn.cursor()
cursor.execute(sql)
cursor.close()
conn.commit()
conn.close()

 

codeLine.py

#-*-coding:GBK -*- 
import re
import sys
import xml.dom.minidom
import pymysql

with open("D:\\jenkins\\jobs\\git\\gitlog.txt") as f:
    txt = f.read()

print(txt)

p1 = r"(?<= \| )\d+?(?= \+\+)"
pattern1 = re.compile(p1)
num = int(pattern1.findall(txt)[0])

print(num)

'''通過pom.xml獲取版本信息'''
pom_path = sys.argv[1]
print(pom_path)
dom = xml.dom.minidom.parse(pom_path)
rootdata = dom.documentElement
itemlist = rootdata.getElementsByTagName('version')
version = itemlist[0].firstChild.data
print(version)

'''更新數據庫'''
sql = "UPDATE `vcredit_requirequality` SET `codeLine`=%s WHERE `requireName`='%s'" % (num, version)

print(sql)

conn = pymysql.connect(host='10.138.30.104', user='root', password='080305', database='testquality', charset='UTF8')
cursor = conn.cursor()
cursor.execute(sql)
cursor.close()
conn.commit()
conn.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM