Python中使用YAML编写测试用例

为什么选择yaml

    1. 方便在字典和yaml之间切换
    1. yaml拥有多种数据类型

yaml的主要作用

    1. 用于配置文件
    1. 用于编写用例

YAML数据组成

    1. 对象,通过字典来表示, key:(空格) value
    1. 数组,通过列表来表示,通过一组对齐的-(横线)表示
    • 2.1 基本数据类型

yaml读写方式

命令行安装包 pip install pyyaml
YAML规则

  name: 获取验证码
  request:
    method: post
    url: https://api.education.ocean.com/get
    data:
      type: 2
      mobile: 18888888888
      configCode: YUAN
    headers: null
  validate: null

DDT数据驱动

数据驱动的目的: 一个接口由多个用例, 使用数据驱动可以一次性执行多条同一接口的用例

# 方法
@pytest.mark.parametize(args_name, args_value)
args_name: 参数名,自定义
args_value: 只有两种数据类型,要么时list,要么是tuple

常见用法

@pytest.mark.parametrize("caseInfo", ["乔恩", "安迪"])
@pytest.mark.parametrize("caseInfo", ("乔恩", "安迪"))
@pytest.mark.parametrize("caseInfo", [{"乔恩": 12},{"安迪": 13}])

解包用法

@pytest.mark.parametrize("name, age", [["乔恩", 12],[ "安迪", 13]])

封装读取yaml用例的方法

def read_case_yaml(case_path):
    """
    :param case_path: yaml文件路径
    :return: 返回的是python数据类型的数据
    """
    with open(case_path, encoding="utf-8") as f:
        result = yaml.load(stream=f, Loader=yaml.FullLoader)
        return result

yaml测试用例实例

    1. 一个接口对应一个yaml文件,文件中写入接口请求的字段数据, 这里我给了两个用例
-
  name: 获取手机号验证码1-post请求
  request:
    method: post
    url: http://api.education.test.bedoke.com/getMobileCode
    data:
      type: 2
      mobile: 18888888888
      configCode: YUAN
    headers:
      Content-Type: application/json
  validate: null

-
  name: 获取手机号验证码2-get请求
  request:
    method: get
    url: http://api.education.test.bedoke.com/getMobileCode
    data:
      type: 2
      mobile: 19999999999
      configCode: YUAN
    headers:
      Content-Type: application/json
  validate: null

在python中进行调用, 利用之前封装的read_case_yaml方法

import pytest
from common.request_util import RequestUtil
from common.yaml_util import write_yaml, read_case_yaml
class Test():
	   @pytest.mark.parametrize("caseInfo", read_case_yaml("./testcase/test_get_token.yaml"))
	   def test_api(self, caseInfo):
	        print(caseInfo, type(caseInfo))
	
	        name = caseInfo["name"]
	        method = caseInfo["request"]["method"]
	        urls = caseInfo["request"]["url"]
	        data = caseInfo["request"]["data"]
	        headers = caseInfo["request"]["headers"]
	        validate = caseInfo["validate"]
	        res = RequestUtil().all_send_requests(method=method, url=urls, data=data, headers=headers)
	        result = res.json()
	        if "data" in result:
	            write_yaml({"msg": res.json()["msg"]})
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python,有多种方法可以读取测试用例。其,常用的方法包括使用xlrd、pandas和yaml等第三方库。引用[1]提到了这三种方法的使用方法和简单分析。 首先,xlrd是一个用于读取Excel文件的库。通过xlrd,可以打开Excel文件并读取其测试用例数据。这是接口测试比较主流的数据读取方式。引用[2]指出,虽然xlrd方法在读取Excel文件测试用例方面非常流行,但是当Excel文件的数据越来越多时,后期测试的维护成本会变得很高,并且在大篇幅数据,表格格式也不方便阅读。 其次,pandas是一个强大的数据处理库,也可以用于读取Excel文件测试用例数据。使用pandas可以更方便地处理和分析数据。然而,对于小规模的测试用例使用pandas可能会显得过于复杂。 最后,yaml是一种轻量级的数据序列化格式,也可以用于存储和读取测试用例数据。使用yaml可以将测试用例以简洁的文本格式保存,并且易于阅读和维护。 下面是一个使用xlrd库读取Excel文件测试用例的示例代码,引用[3]提供了一个简单的实例: ```python import unittest import xlrd # 打开接口用例excel文件 excel_data = xlrd.open_workbook('register.xlsx') # 读取excel文件存放用例的sheet页,命名无要求 sheet = excel_data.sheet_by_name('register') print(sheet.nrows) print(sheet.row_values(1)) # 将读取到的用例全部追加到data列表 data = [] for i in range(1, sheet.nrows): data.append(sheet.row_values(i)) print(data) class register(unittest.TestCase): def test_register_check(self): pass ``` 以上代码演示了如何使用xlrd库打开Excel文件、读取测试用例数据,并将其追加到一个列表。然后,可以根据需要在测试类编写相应的测试方法。 总结起来,Python可以使用xlrd、pandas和yaml等库来读取测试用例数据,具体选择哪种方法取决于项目的需求和个人偏好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值