0
def fixed_given(self):
    return @given(
        test_df=data_frames(
            columns=columns(
                ["float_col1"],
                dtype=float,
            ),
            rows=tuples(
                floats(allow_nan=True, allow_infinity=True)),
        )
    )(self)

@pytest.fixture()
@fixed_given
def its_a_fixture(test_df):
      obj = its_an_class(test_df)
      return obj

@pytest.fixture()
@fixed_given
def test_1(test_df):
      #use returned object from my fixture here

@pytest.fixture()
@fixed_given
def test_2(test_df):
      #use returned object from my fixture here
  • 在这里,我在一个单独的函数中创建我的测试数据框,以便在所有函数中共同使用它。
  • 然后通过传递由固定给定函数生成的测试数据帧来创建一个 pytest 夹具来实例化一个类。
  • 我正在寻找一种从这个夹具中获取返回值的方法。
  • 但是我使用给定装饰器的问题是,它不允许返回值。
  • 即使使用给定的装饰器,有没有办法返回?
4

1 回答 1

1

目前尚不清楚您要在这里实现什么,但是重用 Hypothsis 生成的输入放弃了框架的大部分功能(包括最小示例、重放失败、设置选项等)。

相反,您可以为您的策略定义一个全局变量 - 或编写一个返回策略的函数@st.composite- 并在每个测试中使用它,例如

MY_STRATEGY = data_frames(columns=[
    column(name="float_col1", elements=floats(allow_nan=True, allow_infinity=True))
])

@given(MY_STRATEGY)
def test_foo(df): ...

@given(MY_STRATEGY)
def test_bar(df): ...

专门回答您提出的问题,您无法从装饰有@given.

不要使用固定装置来实例化您的类,而是尝试使用.map策略(在本例中data_frames(...).map(its_an_class))或builds()策略(即builds(my_class, data_frames(...), ...))的方法。

于 2020-03-15T23:53:52.380 回答