美文网首页
84. pytest参数化驱动

84. pytest参数化驱动

作者: 薛东弗斯 | 来源:发表于2024-07-12 17:29 被阅读0次

列表

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest

def add(a,b):
    return a+b

def data():
    return [
        [1,1,2],
        ['wuya','Share','wuyaShare'],
        [1.0,1.0,2.0]
    ]
@pytest.mark.parametrize('a,b,result',data())
def test_add_list(a,b,result):
    assert add(a=a,b=b) == result

if __name__=='__main__':
    pytest.main(['-v',"main.py"])

元组

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest

def add(a,b):
    return a+b

def data():
    return [
        (1,1,2),
        ('wuya','Share','wuyaShare'),
        (1.0,1.0,2.0)
    ]
@pytest.mark.parametrize('a,b,result',data())  # 调用data函数,分别赋值给a,b,result
def test_add_tuple(a,b,result):  # a,b,result作为参数传入
    assert add(a=a,b=b) == result

if __name__=='__main__':
    pytest.main(['-v',"main.py"])

字典

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest

def add(a,b):
    return a+b

def data():
    return [
        {'a':1,'b':1,'result':2},
        {'a':'wuya','b':'Share','result':'wuyaShare'},
        {'a':1.0,'b':1.0,'result':2.0}
    ]
@pytest.mark.parametrize('data',data())  # 调用data函数,分别赋值给data
def test_add_dict(data):  # data['a'],data['b'],data['result']作为参数传入
    assert add(a=data['a'],b=data['b']) == data['result']

if __name__=='__main__':
    pytest.main(['-s','-v',"main.py"])

JSON

# add.json
{
"datas":
    [
        {"a":1,"b":1,"result":2},
        {"a":"wuya","b":"Share","result":"wuyaShare"},
        {"a":1.0,"b":1.0,"result":2.0}
    ]
}

# main.py
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest
import json

def add(a,b):
    return a+b

def readJson():
    return json.load(open('add.json'))['datas']

@pytest.mark.parametrize('data',readJson())  # 调用data函数,分别赋值给data
def test_add_dict(data):  # data['a'],data['b'],data['result']作为参数传入
    assert add(a=data['a'],b=data['b']) == data['result']

if __name__=='__main__':
    pytest.main(['-s','-v',"main.py"])

Yaml

# add.yml
---
# two integer add
a: 1
b: 1
result: 2

---
# two string add
a: wuya
b: Share
result: wuyaShare

---
# two float add
a: 1.0
b: 1.0
result: 2.0

# main.py
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest
import yaml

def add(a,b):
    return a+b

def readYaml():
    with open('add.yml') as f:
        return list(yaml.safe_load_all(f))

@pytest.mark.parametrize('data',readYaml())  # 调用data函数,分别赋值给data
def test_add_dict(data):  # data['a'],data['b'],data['result']作为参数传入
    assert add(a=data['a'],b=data['b']) == data['result']

if __name__=='__main__':
    pytest.main(['-s','-v',"main.py"])

request.param

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author: Test

import pytest

def add(a,b):
    return a+b

def data():
    return [
        [1,1,2],
        ['wuya','Share','wuyaShare'],
        [1.0,1.0,2.0]
    ]
@pytest.fixture(params=data())
def param(request):
    return request.param

def test_add_request(param):
    assert add(a=param[0],b=param[1]) == param[2]

if __name__=='__main__':
    pytest.main(['-v',"main.py"])

相关文章

  • [接口测试_B] 05 Pytest参数化处理

    pytest的参数化方式 pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入...

  • Pytest学习9 -参数化@pytest.mark.param

    前言 pytest允许在多个级别启用测试参数化: pytest.fixture() 允许fixture有参数化功能...

  • pytest常用装饰器

    一、parametrize--参数化pytest中装饰器@pytest.mark.parametrize('参数名...

  • Chapter 13 参数化

    Chapter 13 参数化 pytest有如下几种参数化的方式: pytest.fixture()可以对测试函数...

  • pytest学习笔记---3

    接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一、pytest的参数化 1...

  • python学习之路_接口参数化2

    python接口参数化2 使用@pytest.mark.parametrize进行参数化 代码 响应代码

  • Python参数化用例

    主要内容: pytest 数据参数化 yaml的基本使用 pytest 数据参数化 第一步:数据存放在py文件中第...

  • pytest-09-参数化parametrize+命令行传参

    1、参数化parametrize (1)测试用例参数化使用装饰器 pytest.mark.parametrize ...

  • Pytest 参数化

    参数化,就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。 在 Un...

  • pytest参数化

    conftest.py文件: test_*.py文件: indirect=True,把open_url当做函数去执行

网友评论

      本文标题:84. pytest参数化驱动

      本文链接:https://www.haomeiwen.com/subject/uajfhjtx.html