Python中pytest的参数化实例解析

2023-12-05 0 410
目录
  • pytest的参数化
    • 参数化多个参数:
    • 参数化列表:
    • 参数化字典:
    • 参数化文件:
    • 动态参数化:
    • 从外部数据源加载数据:
    • 组合参数:
    • 参数化生成器:

pytest的参数化

参数化多个参数:

可以使用多个参数来参数化测试。例如:

import pytest
@pytest.mark.parametrize(\”x, y, expected\”, [
(1, 2, 3),
(3, 4, 7),
(5, 6, 11),
])
def test_addition(x, y, expected):
assert x + y == expected

参数化列表:

可以使用列表来参数化测试。例如:

import pytest
@pytest.mark.parametrize(\”test_input, expected_output\”, [
([1, 2, 3], 6),
([4, 5, 6], 15),
([7, 8, 9], 24),
])
def test_sum(test_input, expected_output):
assert sum(test_input) == expected_output

参数化字典:

可以使用字典来参数化测试。例如:

import pytest
@pytest.mark.parametrize(\”test_input, expected_output\”, [
({\”x\”: 1, \”y\”: 2}, 3),
({\”x\”: 3, \”y\”: 4}, 7),
({\”x\”: 5, \”y\”: 6}, 11),
])
def test_addition(test_input, expected_output):
assert test_input[\”x\”] + test_input[\”y\”] == expected_output

参数化文件:

可以使用文件来参数化测试。例如:

import pytest
import csv
def read_csv():
with open(\’testdata.csv\’, \’r\’) as f:
reader = csv.reader(f)
rows = []
for row in reader:
rows.append(row)
return rows[1:]
@pytest.mark.parametrize(\”test_input, expected_output\”, read_csv())
def test_addition(test_input, expected_output):
x, y = map(int, test_input.split(\’,\’))
assert x + y == int(expected_output)

动态参数化:

可以使用 Python 代码动态生成参数。例如:

import pytest
import time
def get_test_data():
test_data = []
start_time = time.time()
while time.time() – start_time < 10: # 运行时间小于 10 秒
x = random.randint(1, 100)
y = random.randint(1, 100)
expected = x + y
test_data.append((x, y, expected))
return test_data
@pytest.mark.parametrize(\”x, y, expected\”, get_test_data())
def test_addition(x, y, expected):
assert x + y == expected

从外部数据源加载数据:

可以使用动态参数化从外部数据源加载测试数据,例如数据库、API 或其他 Web 服务。例如:

import pytest
import requests
def get_test_data():
response = requests.get(\’https://api.example.com/data\’)
test_data = []
for item in response.json():
x = item[\’x\’]
y = item[\’y\’]
expected = item[\’expected\’]
test_data.append((x, y, expected))
return test_data
@pytest.mark.parametrize(\”x, y, expected\”, get_test_data())
def test_addition(x, y, expected):
assert x + y == expected

在上面的例子中,get_test_data 函数使用 requests 库从远程 API 加载测试数据,并返回一个测试数据列表。然后,使用 @pytest.mark.parametrize 装饰器动态参数化测试,使用从 API 加载的测试数据作为参数。

组合参数:

可以使用 itertools 库中的 product 函数生成参数的所有组合。例如:

import pytest
import itertools
@pytest.mark.parametrize(\”x, y\”, itertools.product([1, 2, 3], [4, 5, 6]))
def test_multiplication(x, y):
assert x * y == y * x

在上面的例子中,使用 itertools.product 函数生成 x 和 y 的所有组合,并将它们作为参数传递给测试函数。

参数化生成器:

可以使用生成器函数生成参数。例如:

import pytest
import random
def get_test_data():
while True:
x = random.randint(1, 100)
y = random.randint(1, 100)
expected = x + y
yield (x, y, expected)
@pytest.mark.parametrize(\”x, y, expected\”, get_test_data())
def test_addition(x, y, expected):
assert x + y == expected

到此这篇关于Python中pytest的参数化实例解析的文章就介绍到这了,更多相关pytest的参数化实例解析内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • pythonplaywright–pytest-playwright、pytest-base-url插件编写用例
  • 详解Python中Pytest和Unittest的区别
  • Python+Pytest实现压力测试详解
  • Python使用pytest-playwright的原因分析
  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Python Python中pytest的参数化实例解析 https://www.u-9.cn/jiaoben/python/100077.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务