【问题标题】:How to parametrize class and function separately in pytest如何在pytest中分别参数化类和函数
【发布时间】:2021-12-22 09:22:46
【问题描述】:

我有一个包含 2 个测试的测试类。如何在另外为一个测试参数化的同时对整个班级进行参数化?

我需要 test_bparam0 执行 1 次,为 param1 执行 2 次​​p>

Module threads.py
  Class TestThreads
     Function test_a[param0]
     Function test_b[param0-0]
     Function test_a[param1]
     Function test_b[param1-0]
     Function test_b[param1-1]

【问题讨论】:

  • param1 写入parameterize 列表两次?

标签: pytest fixtures parametrize


【解决方案1】:

您可以单独参数化类和方法,并将它们堆叠在一起。例如,为了得到你描述的结果,你可以用 param0 参数化类,用 param1 参数化 test_b:

import pytest


@pytest.mark.parametrize("param0", [0])
class TestThreads:

    def test_a(self, param0):
        assert True

    @pytest.mark.parametrize("param1", [0, 1])
    def test_b(self, param0, param1):
        assert True

【讨论】:

  • 谢谢!但是我怎样才能使用固定装置呢?假设我有一本字典,用作测试的配置config = [ { 'param1': 'param1-val1', 'param2': [ 'param2-val1', 'param2-val2' ] }, { 'param1': 'param1-val2', 'param2': [ 'param2-val3', 'param2-val4' ] } ] 如何在 test_b 中使用 param2 参数化带有 param1 的 TestThreads 套件?
  • 你这里的配置是一个列表,你打算怎么用这个?一种选择是您可以创建一个自动使用的装置,然后参数化要使用的密钥。不过,我不确定我是否完全理解您的评论。
  • 我的意思是字典列表,对不起。
  • 我认为您可能会混淆固定装置和参数化的作用。固定装置用于提供背景、恒定、环境的东西,有点像房子里的“配件和固定装置”。参数化是您可以指定特定于单个测试的内容的地方。您的配置是否混淆了这两者?如果感觉像是一个参数化的灯具列表(这不是一个干净的设计)
猜你喜欢
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
相关资源
最近更新 更多