使用 pytest 测试多个选项

2024-01-29

我正在尝试测试 Web API。假设一个端点接受多个参数:

  • 类型:可能的值为“大”、“小”、“中”
  • 颜色:可能的值为“黑色”、“白色”、“红色”
  • 运输:可能值为“1”、“2”、“7”

我想测试这些的所有组合,以确保 API 返回正确的结果。起初我以为我可以建造 3 个装置:

valid_types = ["big", "small", "medium"]
valid_colors = ['black', 'white', 'red']
valid_shipping = ['1', '2', '7']

@pytest.fixture(params=valid_types)
def valid_type(request):
    return request.param


@pytest.fixture(params=valid_colors)
def valid_color(request):
    return request.param


@pytest.fixture(params=valid_shipping)
def valid_ship(request):
    return request.param

但是,我不确定如何为所有这些创建排列。我的测试应该像这样运行:

def test_api_options(valid_type, valid_color, valid_ship):
    url_query = "?type={}&color={}&ship={}".format(valid_type, valid_color, valid_ship)
    r = requests.get("{}{}".format(base_url, url_query)

测试应该针对每个排列运行,并生成一个新的 url,其中包含每个排列的可用选项。我怎样才能用 pytest 做到这一点?


这是什么参数化 https://docs.pytest.org/en/latest/parametrize.html is for:

@pytest.mark.parametrize('valid_type', valid_types)
@pytest.mark.parametrize('valid_color', valid_colors)
@pytest.mark.parametrize('valid_ship', valid_shipping)
def test_api_options(valid_type, valid_color, valid_ship):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pytest 测试多个选项 的相关文章

随机推荐

  • 将 Spark Structure Streaming DataFrame 转换为 Pandas DataFrame

    我设置了一个 Spark Streaming 应用程序 它从 Kafka 主题进行消费 我需要使用一些接受 Pandas Dataframe 的 API 但是当我尝试转换它时 我得到了这个 org apache spark sql Anal
  • C 循环 For Vs While Vs goto 的性能 [重复]

    这个问题在这里已经有答案了 可能的重复 C C GOTO 比 WHILE 和 FOR 更快吗 https stackoverflow com questions 5366929 c c is goto faster than while a
  • GKTurnBasedMatch接收数据

    我正在尝试实现一个基于回合的应用程序 发送回合数据没有问题 但我看不到自动接收数据的方法 到目前为止 我已经了解了这么多 有一个GKTurnBasedEventHandlerDelegate 协议 它很容易实现 但是我在哪里将该对象设置为它
  • 在php中将两个数组值相乘[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图用以下公式将两个数组值相乘 Q
  • 我如何查看bitbucket存储库中用户发布的所有评论

    In the repository首页 我可以看到发表的评论recent activity在底部 位它只显示 10 条评论 我想要所有从一开始就发表的评论 有什么办法吗 可以使用以下方式检索拉取请求 问题和提交的评论bitbucket 的
  • 如何在 Objective C 中向超级视图发送消息

    我是 Objective C 和 Cocoa 的新手 我只是不明白如何向 UIView 的超级视图发送消息 我无法让它发挥作用 这是我到目前为止所尝试的 在我的 MainView 中 我有一个名为 ResetDrawType 的方法 voi
  • Mysql查询判断给定的日期时间是否包含在日期时间间隔内

    我陷入了这个任务 如果给定的日期时间落在开始日期和结束日期之间 例如 这是一个日历数据表 id start end 31 2017 03 15 05 21 30 2017 03 15 06 21 30 32 2017 03 14 06 25
  • Python 包 - aiohttp 有警告消息“未关闭的客户端会话”

    我的代码如下 import asyncio import aiohttp urls http www 163 com http www sina com cn https www hupu com http www csdn net asy
  • 如何向 WPF 自定义控件添加触发器而不覆盖现有样式?

    我正在创建一个从切换按钮扩展的简单自定义控件 该控件允许用户直接在 XAML 中指定选中和未选中的内容 它工作得很好 但它是基于触发器的 我不知道如何定义触发器 除了样式之外 如果我定义样式 那么我会丢失自定义控件之外设置的任何内容 我希望
  • Outlook 中没有图像的圆角

    我可以在许多客户端中创建圆角 style moz border radius 15px border radius 15px 但是 此 CSS 不会在 Outlook 中创建圆角 有没有简单的方法可以在 Outlook 中创建没有图像的圆角
  • 更改木偶模块源

    我检查了 Puppet 的文档 但没有找到任何有关它的建议 我有木偶模块Monit https forge puppetlabs com dhoppe monit https forge puppetlabs com dhoppe moni
  • 在 watchOS 中使用environmentObject

    我正在尝试使用environmentObject在 watchOS6 应用程序中将我的数据模型绑定到我的视图 我在 Xcode 11 中创建了一个简单的独立 Watch 应用程序 我创建了一个新的DataModel class import
  • WinApi ShellExecuteEx - 在文件列表上使用动词“复制”

    是否可以使用 ShellExecuteEx 复制或剪切给定目录中的一组文件 Windows 函数在单个文件上运行良好 但我在任何地方都找不到有关该主题的任何提示 带有文件列表 我不期望任何替代方法 例如 xcopy 因为在执行特定于 she
  • 哪个版本的 Delphi 可以让我创建在 Mac 上运行的软件?

    我使用 Delphi 去年我从 D5 Enterprise 升级到 Delphi 2010 Professional 有时我会收到电子邮件 询问我何时可以获得可在 Mac 上运行的版本 是否有可以创建在 Mac 上运行的软件的 Delphi
  • crypto.createCipheriv 中的密钥长度无效

    我在 NodeJS v8 11 0 中使用以下代码生成了一个 base64 编码的密钥 const secret shezhuansauce const key crypto createHash sha256 update String
  • HTTP 保活和 TCP 保活

    HTTP Keep Alive 是如何实现的 它内部是否使用 TCP Keep Alive 如果不是 服务器如何检测客户端是死是活 我知道这是一个老问题 但仍然 HTTP Keep Alive 是一项允许 HTTP 客户端 通常是浏览器 和
  • 为什么我不能将常量数组作为参数传递?

    在 C 中 为什么我不能这样做 arrayfn 1 0 2 0 3 0 if arrayfn是一些接受一个类型参数的函数double or double 以哪个为准 尝试这个会给我一个语法错误 有没有一种方法可以在 C 中实现类似的功能 生
  • 使用错误异常处理程序和关闭序列在没有堆栈帧的情况下防止异常

    这一周我遇到了一些小问题 前面的错误消息是关于 2012 年 12 月 30 日 15 19 32 PHP 致命错误 在第 0 行的 Unknown 中没有堆栈帧的情况下抛出异常 我认为这是因为我的错误处理程序 详细信息见下文 正在将任何错
  • 在 Laravel 中使用加密文件(如何下载解密文件)

    在我的网络应用程序中 用户可以上传文件 在保存和存储之前 文件的内容会使用如下方式进行加密 Crypt encrypt file get contents file gt getRealPath 然后我使用 Laravel 自带的文件系统来
  • 使用 pytest 测试多个选项

    我正在尝试测试 Web API 假设一个端点接受多个参数 类型 可能的值为 大 小 中 颜色 可能的值为 黑色 白色 红色 运输 可能值为 1 2 7 我想测试这些的所有组合 以确保 API 返回正确的结果 起初我以为我可以建造 3 个装置