偷懒:pytest 参数化(外部数据源)
·
偷个懒,pytest 参数化时,从外部数据源(Excel)读取测试数据。很丝滑 :)
提示词:
你作为一个测试工程师,需要用 pytest 测试一个加法函数功能,该函数返回 x+y参数的值。现在有一个本地的Excel表格,里面存储了多行测试数据,有3列,分别为加数(对应x参数)、被加数(对应y参数)、预期结果(对应函数返回值)。 需要用pytest参数化的能力@pytest.mark.parametrize,动态从这个本地表格中读取各行测试数据,完成测试。 完成测试代码。
百度文心一言:
为了使用 pytest 和 @pytest.mark.parametrize 从本地的 Excel 表格中读取测试数据并测试加法函数,你需要一个能够读取 Excel 文件的库,比如 pandas。以下是一个完整的测试代码示例,它展示了如何使用 pandas 来读取 Excel 文件,并使用 pytest 的参数化功能来测试加法函数。
首先,确保你已经安装了 pandas 和 openpyxl(用于读取 .xlsx 格式的 Excel 文件)库。你可以使用以下命令来安装它们:
pip install pandas openpyxl
接下来,假设你的 Excel 文件名为 test_data.xlsx,并且它有一个名为 TestData 的工作表,其中包含三列:X(加数)、Y(被加数)和 Expected(预期结果)。
import pandas as pd
import pytest
# 假设这是你的加法函数
def add(x, y):
return x + y
# 读取 Excel 文件中的测试数据
def load_test_data(file_path, sheet_name):
df = pd.read_excel(file_path, sheet_name=sheet_name)
test_data = df[['X', 'Y', 'Expected']].values.tolist()
return test_data
# Excel 文件路径和工作表名称
file_path = 'test_data.xlsx'
sheet_name = 'TestData'
# 加载测试数据
test_data = load_test_data(file_path, sheet_name)
# 使用 pytest 的参数化功能来测试加法函数
@pytest.mark.parametrize("x,y,expected", test_data)
def test_add(x, y, expected):
assert add(x, y) == expected, f"Failed for input {x} and {y}: expected {expected}, got {add(x, y)}"
# 运行测试时,确保你在包含此文件的目录中,或使用正确的路径指定 Excel 文件
# 使用 pytest 命令来运行测试:pytest <此文件的名称>.py
简单粗暴的试验一下 :)

结果符合预期 :)

更多推荐


所有评论(0)