yaml读取用例title和用例参数:
#coding:utf-8
from common.configure_yaml import *
from common.edit_type_data import *
def get_testcase_params(file_name,case_type):
"""
该函数为测试用例yaml文件转换使用,任何测试用例都需要通过该函数重新组装数据类型
暂时为两种方式,一个是单校验,一个是双校验
单校验:params,check
双校验:params,set_check,get_check
必须严格按照格式编写yaml文件
:param file_name:
:param case_type:
:return:
"""
try:
case_data = get_case_yaml(file_name=file_name)["test_case_params"] # 获取测试用例文件
data_info = len(case_data[case_type])
# print(case_data[case_type])
if data_info == 3:#判断数量为3时默认存在cmd,params,check
data = list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["check"]))
elif data_info == 4:#判断数量为4时默认存在cmd,params,check,set_check
if "params_special" in case_data[case_type].keys():#如果包涵params_special则走这条
data = list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"],
case_data[case_type]["params_special"],
case_data[case_type]["check"]))
else:
data = list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["set_check"],
case_data[case_type]["get_check"]))
elif data_info == 5:#判断数量为5的时候默认存在cmd,params,params_special,check,set,get_check
data = list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["params_special"],
case_data[case_type]["set_check"], case_data[case_type]["get_check"]))
elif data_info == 6:#判断数量为5的时候默认存在cmd,params,params_special,params_special2,check,set,get_check
data = list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["params_special"],
case_data[case_type]["params_special2"],case_data[case_type]["set_check"], case_data[case_type]["get_check"]))
else:
return False
return data
except:
# print("请检查:"+case_type+"文件格式是否存在问题")
return "请检查:" + case_type + "文件格式是否存在问题"
def get_testcase_title(file_name):
case_title = get_case_yaml(file_name=file_name) # 获取测试用例名文件
#print(case_title)
return case_title
#if __name__ == '__main__':
# robot_get_status_params = get_testcase_params(file_name="SDK/robot_joint/joint.yaml", case_type="test_robot_joint")
# case_title = get_testcase_title(file_name="SDK/robot_joint/joint.yaml")["robot_joint_title"]
python读取yaml数据
#coding:utf-8
import yaml,json
route = "D:/EC_auto_test/common/"
case_route = "D:/EC_auto_test/case_parameter/"
#route = "/home/test/"
#print(route)
def get_yaml(file_name):
try:
yaml_path=open(route+"yaml_info/"+file_name,encoding="utf-8")
data = yaml.safe_load(stream=yaml_path)
print("文件名:",file_name)
print("文件内容:",data)
return data
except:
print("get_yaml函数查询的yaml文件名不存在")
def get_case_yaml(file_name):
try:
yaml_path=open(case_route+file_name,encoding="utf-8")
data = yaml.safe_load(stream=yaml_path)
print(yaml_path)
#print("文件名:",file_name)
#print("文件内容:",data)
return data
except:
print("get_yaml函数查询的yaml文件名不存在")
if __name__ == '__main__':
#ip = get_yaml("common.yaml")["ip"]
#port = get_yaml("common.yaml")["port"]
#print(ip,port)
case_parameters = get_case_yaml(file_name="SDK/robot_joint/joint.yaml")["title_case"]
print(case_parameters)
pytest装饰器参数化获取yaml参数
file_name_yaml = "SDK/robot_paramservice/test.yaml"
case_title = get_testcase_title(file_name=file_name_yaml)#获取测试用例名
case_params = get_testcase_params(file_name=file_name_yaml,
case_type="robot_getRobotState_params")#获取测试用例参数
@allure.story("测试用例名")
@pytest.mark.parametrize("case_params ,check",
getCurrentEncode_params,ids=case_title["test_title"])
def test_robot_getRobotState(self,case_params,check,servo):
result = function(case_params)
assert result == check