105 lines
3.8 KiB
Python
105 lines
3.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
__author__ = 'huaxuemin'
|
||
|
||
import argparse
|
||
from runner9 import CaseRunner
|
||
usage_info = '''
|
||
usage:
|
||
$ case_runner.py -w %WORKSPACE% -c %case_path% -t tc1,tc2 -i p0,p1,p2 -e norun,del -r True
|
||
run tag cases in workspace
|
||
'''
|
||
|
||
|
||
def usage():
|
||
print(usage_info)
|
||
exit(-1)
|
||
|
||
|
||
def get_test_case_name(build_id):
|
||
try:
|
||
if build_id:
|
||
import pymysql
|
||
db = pymysql.connect(host="mysql.qa.huohua.cn", user="qa-dev", password="jaeg3SCQt0", database="sparkatp",
|
||
charset='utf8')
|
||
cursor = db.cursor()
|
||
get_sql = "SELECT test_case_id FROM sparkatp.build_params WHERE build_info_id={}".format(build_id)
|
||
cursor.execute(get_sql)
|
||
res = cursor.fetchone()
|
||
test_case_name = ""
|
||
if res:
|
||
test_case_name = res[0].replace("(", "*").replace(")", "*").replace(" ", "*")
|
||
cursor.close()
|
||
db.close()
|
||
return test_case_name
|
||
except Exception as e:
|
||
print(e)
|
||
return ""
|
||
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(description="This is for introduction parameter")
|
||
parser.add_argument("-w", dest='workspace', help="case_runner workspace")
|
||
parser.add_argument("-c", dest='case_path', help="case path")
|
||
parser.add_argument("-t", dest='test_case', default='', help="test case")
|
||
parser.add_argument("-i", dest='include', default='', help="include tag")
|
||
parser.add_argument("-e", dest='exclude', default='', help="exclude tag")
|
||
parser.add_argument("-r", dest='rerun', default='true', help="rerun failed case")
|
||
parser.add_argument("-env", dest='special_env', default='', help="special env")
|
||
parser.add_argument("-team", dest='team', default='', help="job name with team ")
|
||
parser.add_argument("-penv", dest='physics_env', help="QA or SIM", default='QA')
|
||
parser.add_argument("-b", dest='business', help="hh or hhi", default='hh')
|
||
parser.add_argument("-b_id", dest='build_info_id', help="build_info_id", default='')
|
||
parser.add_argument("-b_url", dest='build_url', help="build_url", default='')
|
||
parser.add_argument("-is_db", dest='is_use_db', help="is_use_db", default='0')
|
||
args = parser.parse_args()
|
||
|
||
if args.workspace is None:
|
||
usage()
|
||
|
||
workspace = args.workspace
|
||
case_path = args.case_path
|
||
test_case = args.test_case
|
||
include = args.include
|
||
exclude = args.exclude
|
||
rerun = args.rerun
|
||
special_env = args.special_env
|
||
team = args.team.split("-")[0]
|
||
physics_env = args.physics_env
|
||
business = args.business
|
||
build_info_id = args.build_info_id
|
||
build_url = args.build_url
|
||
is_use_db = args.is_use_db
|
||
if str(is_use_db) == "1" and build_info_id:
|
||
test_case_name = get_test_case_name(build_info_id)
|
||
test_case = test_case_name if test_case_name else test_case
|
||
|
||
# if team not in ["CC", "EN", "H2R", "LaLive", "SCM", "TMO", "TO", "ASOP", "ASTWB", "ASORG"]:
|
||
# team = ""
|
||
|
||
case_runner = CaseRunner(workspace, case_path, test_case, include, exclude, rerun, special_env, team, physics_env,
|
||
business)
|
||
try:
|
||
# 更新独立环境代号到配置文件
|
||
case_runner.update_platform()
|
||
# 检查工作目录名字对应的端口,有就使用,没有就分配
|
||
case_runner.assign_port()
|
||
# 查找对应端口进程并杀掉
|
||
case_runner.check_port()
|
||
# 更新KWL和RF中的端口
|
||
case_runner.update_port()
|
||
# 更新重名测试套
|
||
case_runner.update_suite()
|
||
# 启动KWL
|
||
case_runner.start_kwl()
|
||
# 构建用例
|
||
case_runner.run_cases()
|
||
# 构建完成后,停止KWL
|
||
case_runner.check_port()
|
||
except Exception as e:
|
||
print(e)
|
||
# 构建完成后,入库build_url
|
||
case_runner.record_build_url(build_info_id, build_url)
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main() |