自动化测试(pytest通过yaml文件来维护测试用例参数化,自动生成测试脚本)

 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

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stepan.jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值