pytest之yaml格式测试用例读写封装

pytest之parametrize()实现数据驱动

@pytest.mark.parametrize(“参数名”,列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数。
列表数据:一组测试数据。

import pytest

@pytest.mark.parametrize("参数名", [列表数据])
def test_example(参数名):
    # 在这里编写测试用例,可以使用参数名作为测试数据
    pass

  • 第一种用法:列表
class TestApi(CommonUtil):
    @pytest.mark.parametrize('caseinfo', ['百里','汤姆','一瑶'])
    def test_01_get_token(self,caseinfo):
        print("获取统一接口鉴权码"+caseinfo)
  • 第二种用法:字典列表
class TestApi(CommonUtil):

    @pytest.mark.parametrize('arg1,arg2', [['name', '百里'], ['age', '18']])
    def test_01_get_token(self, arg1, arg2):
        print("获取统一接口鉴权码" + str(arg1)+ " "+ str(arg2))

YAML格式测试用例读/写/清除/封装

结构类型

在这里插入图片描述

# 读取yaml
import os

import yaml


# 获取项目的根目录
def get_obj_path():
    # 获取当前文件的目录路径,并使用字符串 'common_01' 进行分割,返回分割后的第一个部分,即 'common_01' 之前的路径。
    return os.path.dirname(__file__).split('common_01')[0]


def read_yaml(yaml_path):
    # 使用 with 语句打开文件,并使用模式 'r' 以只读方式打开文件
    with open(get_obj_path()+yaml_path, mode='r', encoding='utf-8') as f:
        # 使用 yaml 模块的 load 函数从文件中读取数据,并使用 FullLoader 加载器
        value = yaml.load(stream=f, Loader=yaml.FullLoader)
        # 返回从文件中读取的数据
        return value


if __name__ == '__main__':
    print(read_yaml('testcases/user_manage/get_token.yaml'))


Maps类型

Map为字典,一对key:value键值对
键:(空格)值。

# 示例 YAML 文件
person:
  name: John
  age: 30
  city: New York

在这里插入图片描述

数组类型

使用‘-’表示列表。

# Example YAML file: get_token.yaml
tokens:
  - token1
  - token2
  - token3

在这里插入图片描述

pytest+parametrize+yaml

在这里插入图片描述

test_api.py

import pytest
import requests

from common_01.common_util import CommonUtil
from common_01.yaml_util import read_yaml


class TestApi(CommonUtil):
    session = requests.session()

    # 定义一个参数化测试函数
    @pytest.mark.parametrize('caseinfo', read_yaml('testcases/user_manage/get_token.yaml'))
    def test_01_get_token(self, caseinfo):
        # 打印测试用例信息
        print("获取统一接口鉴权码: ")
        print(caseinfo)
        # 打印请求信息
        name = caseinfo['name']
        method = caseinfo['request']['method']
        url = caseinfo['request']['url']
        data = caseinfo['request']['data']
        print(caseinfo['validate'])
        # 发送 HTTP 请求
        res = self.session.request(method=method, url=url, params=data)
        # 打印返回结果
        print(res.json())
        #断言
        result =res.json()
        assert 'access_token' in result

get_token.yaml

-
  name: 获取统一的接口鉴权
  request:
    method: get
    url: https://api.weixin.qq.com/cgi-bin/token
    data:
      grant_type: client_credential
      appid: wx6b11b3efd1cdc290
      secret: 106a9c6157c4db5f6029918738f9529d
  validate: None

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 08:20:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 08:20:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 08:20:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 08:20:03       18 阅读

热门阅读

  1. 【测试思考】设计测试用例时,你在想什么

    2024-03-24 08:20:03       18 阅读
  2. Electron IPC通信机制深度解析与实例演示

    2024-03-24 08:20:03       17 阅读
  3. 如何系统地自学 Python?

    2024-03-24 08:20:03       15 阅读
  4. 学习资料记录

    2024-03-24 08:20:03       17 阅读
  5. 20 有效的括号

    2024-03-24 08:20:03       18 阅读
  6. 机器翻译评价指标 BLEU分数

    2024-03-24 08:20:03       21 阅读
  7. Day31 贪心算法

    2024-03-24 08:20:03       17 阅读
  8. Ubuntu 22.04 安装配置时间同步服务器

    2024-03-24 08:20:03       19 阅读
  9. Eureka和Nacos的关系

    2024-03-24 08:20:03       17 阅读
  10. Python学习笔记06

    2024-03-24 08:20:03       16 阅读
  11. B3626 跳跃机器人

    2024-03-24 08:20:03       21 阅读
  12. 第二十七章:Docker Nginx 部署

    2024-03-24 08:20:03       15 阅读
  13. P9240 [蓝桥杯 2023 省 B] 冶炼金属 Python

    2024-03-24 08:20:03       15 阅读