40-pytest-Hook函数之参数化生成用例

Hook函数之参数化生成用例


前言

  • 本篇来学习pytest中使用Hook函数–pytest_generate_tests实现参数化

pytest_generate_tests

  • 在 conftest.py 自定义参数化的钩子, 判断当测试用例传了 param 参数,就让它生成参数化的用例
conftest.py
# -*- coding: utf-8 -*-
# @Time    : 2021/10/14
# @Author  : 大海
# conftest.py

def pytest_generate_tests(metafunc):
    """ generate (multiple) parametrized calls to a test function."""
    if "param" in metafunc.fixturenames:
        metafunc.parametrize("param",
                             metafunc.module.test_data,
                             ids=metafunc.module.names,
                             scope="function")

编写case
# -*-coding:utf-8一*-
# @Time:2022/10/14
# @Author:  大海
# test_71.py

import os
import requests

# 用例的id名称
names = ["get 1", "get 2"]

# 测试数据 list of dict
test_data = [{
    "url": "https://postman-echo.com/get",
    "method": "GET",
    "headers":
        {
            "Content-Type": "application/json"
        },
    "json":
        {
            "username": "test1",
            "password": "123456"
        }

},
    {
        "url": "https://postman-echo.com/get",
        "method": "GET",
        "headers":
            {
                "Content-Type": "application/json"
            },
        "json":
            {
                "username": "test2",
                "password": "123456"
            }

    }
]


def test_get_request(param):
	"""测试get请求"""
    r = requests.session().request(**param)
    print('\nrsp', r.text)

    user_name = r.json().get('args').get('username')
    print('user_name', user_name)
    assert 'test' in user_name


if __name__ == '__main__':
    os.system('pytest -s -v test_71.py')
  • 查看运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱学习de测试小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值