#coding:utf-8fromcommon.configure_yamlimport*fromcommon.edit_type_dataimport*defget_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])ifdata_info==3:#判断数量为3时默认存在cmd,params,checkdata=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["check"])) elifdata_info==4:#判断数量为4时默认存在cmd,params,check,set_checkif"params_special"incase_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"])) elifdata_info==5:#判断数量为5的时候默认存在cmd,params,params_special,check,set,get_checkdata=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"])) elifdata_info==6:#判断数量为5的时候默认存在cmd,params,params_special,params_special2,check,set,get_checkdata=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: returnFalsereturndataexcept: # print("请检查:"+case_type+"文件格式是否存在问题")return"请检查:"+case_type+"文件格式是否存在问题"defget_testcase_title(file_name): case_title=get_case_yaml(file_name=file_name) # 获取测试用例名文件#print(case_title)returncase_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-8importyaml,jsonroute="D:/EC_auto_test/common/"case_route="D:/EC_auto_test/case_parameter/"#route = "/home/test/"#print(route)defget_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) returndataexcept: print("get_yaml函数查询的yaml文件名不存在") defget_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)returndataexcept: 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")#获取测试用例参数story("测试用例名") .mark.parametrize("case_params ,check", .getCurrentEncode_params,ids=case_title["test_title"]) deftest_robot_getRobotState(self,case_params,check,servo): result=function(case_params) assertresult==check