六、pytest接口自动化教程--parametrize参数用法

一、pytest的参数化parametrize单参数

参数化 parametrize
参数化可以组装测试数据,在测试前定义好测试数据,并在测试用例中使用

# 单次循环
@pytest.mark.parametrize('a', ['b', 'c'])
def test_parametrize(a):
    print(a)


# 多次循环
@pytest.mark.parametrize('a,b', ['c', 'd'], ['e', 'f'])
def test_parametrize(a, b):
    print(a, b)
'''
@Author     : 测试工程师Selina
@FileName   : test_parametrize01.py
@Description: 
'''
import pytest


# @pytest.mark.parametrize(key,values)
@pytest.mark.parametrize('key', ['value'])
def test_parametrize01(key):
    print('我是'+key)
    
====================== test session starts =========================
collecting ... collected 1 item

test_parametrize01.py::test_parametrize01
[value] PASSED                  [100%]我是value

====================== 1 passed in 0.01s ===========================
'''
@Author     : 测试工程师Selina
@FileName   : test_parametrize01.py
@Description: 
'''
import pytest


# @pytest.mark.parametrize(key,values)
@pytest.mark.parametrize('name', ['Selina'])
def test_parametrize01(name):
    assert name == 'Selina'
    
============================= test session starts ==============================
collecting ... collected 1 item

test_parametrize01.py::test_parametrize01[Selina] PASSED                 [100%]

============================== 1 passed in 0.01s ===============================

⚠️ 一个参数,多个值,测试用例会把每个值赋给参数进行测试用例的执行;
⚠️ 有几个值,测试用例执行几次

'''
@Author     : 测试工程师Selina
@FileName   : test_parametrize01.py
@Description: 
'''
import pytest

# 反例
# @pytest.mark.parametrize(key,values)
@pytest.mark.parametrize('hero_name', ['安琪拉', '黄忠', '小乔'])
def test_parametrize01(hero_name):
    assert hero_name == '安琪拉'

二、pytest的参数化parametrize多参数

'''
@Author     : 测试工程师Selina
@FileName   : test_parametrize02.py
@Description: 
'''
import pytest


# @pytest.mark.parametrize(key,values)
@pytest.mark.parametrize('hero_name,word',
                         [['安琪拉', '火烧屁屁喽'], ['黄忠', '周日被我射熄火了'], ['鲁班', '上上下下左左右右']])
def test_parametrize02(hero_name, word):
    print(f'{hero_name}的台词是{word}')
    
============================= test session starts ==============================
collecting ... collected 3 items
test_parametrize02.py::test_parametrize02[\u5b89\u742a\u62c9-\u706b\u70e7\u5c41\u5c41\u55bd] 
PASSED [ 33%]安琪拉的台词是火烧屁屁喽
test_parametrize02.py::test_parametrize02[\u9ec4\u5fe0-\u5468\u65e5\u88ab\u6211\u5c04\u7184\u706b\u4e86] 
PASSED [ 66%]黄忠的台词是周日被我射熄火了
test_parametrize02.py::test_parametrize02[\u9c81\u73ed-\u4e0a\u4e0a\u4e0b\u4e0b\u5de6\u5de6\u53f3\u53f3] 
PASSED [100%]鲁班的台词是上上下下左左右右
============================== 3 passed in 0.02s ===============================

⚠️ 只有一个数组的时候,[]的使用

import pytest


# @pytest.mark.parametrize(key,values)
@pytest.mark.parametrize('hero_name,word',
                         [['安琪拉', '火烧屁屁喽']])
def test_parametrize02(hero_name, word):
    print(f'{hero_name}的台词是{word}')

三、pytest的参数化parametrize参数为字典用法

import pytest
# 参数值为字典形式
@pytest.mark.parametrize('hero', [{'name': '安琪拉'}, {'name': '黄忠'}, {'name': '小乔'}])
def test_parametrize(hero):
    print(hero['name'])
    
============================= test session starts ==============================
collecting ... collected 3 items
test_parametrize02.py::test_parametrize[hero0] PASSED                    
[ 33%]安琪拉
test_parametrize02.py::test_parametrize[hero1] PASSED                    
[ 66%]黄忠
test_parametrize02.py::test_parametrize[hero2] PASSED                    
[100%]小乔
============================== 3 passed in 0.01s ===============================
import pytest
# 参数值为字典形式
@pytest.mark.parametrize('hero',
                         [{'name': '安琪拉', 'word': '火烧屁屁喽'}, {'name': '黄忠', 'word': '周日被我射熄火了'}])
def test_parametrize(hero):
    print(hero['name'])
    print(hero['word'])
    
============================= test session starts ==============================
collecting ... collected 2 items
test_parametrize02.py::test_parametrize[hero0] PASSED                    
[ 50%]安琪拉   火烧屁屁喽
test_parametrize02.py::test_parametrize[hero1] PASSED                    
[100%]黄忠     周日被我射熄火了
============================== 2 passed in 0.01s ===============================
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Selina 0_0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值