pytest:从函数输出/从目录结构进行参数化



我正在尝试从目录结构中构建测试用例参数和预期输出。目录结构如下:

__init__.py
foo.py
testing/
├── test_foo/
│   ├── __init__.py
│   ├── case-0001/
│   │   ├── input_1.json
│   │   ├── intput_2.json
│   │   └── output.json
│   ├── case-0002/
│   │   ├── input_1.json
│   │   ├── intput_2.json
│   │   └── output.json
│   └── test_fooFunc.py

我已经编写了一个函数,我们称之为makeIO(..),它从每个测试用例中获取文件,并返回一个格式为([input_1_contents, input_2_contents], [output_contents])的元组。

我正在努力将元组传递到test_foo.py中。到目前为止,我拥有的是:

@pytest.fixture
def makeIO():
...
return IOtuple
IOtuple = makeIO(..)

@pytest.mark.parametrize("test_input,expected", IOtuple)
def test_two(test_input, expected):
assert foo.fooFunc(test_input) == expected

奇怪的部分:一切正常,测试通过当且仅当我从makeIO()中删除了@pytest.fixture装饰器。如果我把它留在那里,我会得到这个错误:Fixture "makeIO" called directly. Fixtures are not meant to be called directly, but are created automatically when test functions request them as parameters.

还有什么比这更像蟒蛇一样优雅的方式来实现我的目标吗?是否推荐其他目录结构或功能?此外,我认为我只是错过了固定装置的要点,如果能澄清为什么以及如何使用固定装置(医生没有为我澄清(,我将不胜感激。


免责声明:我对pytest完全陌生,所以我会收集所有有用的资源,使学习曲线变平。

从函数中删除@pytest.fixture正是我想要的,现在可以通过从该函数中获得的值对函数进行参数化。

相关内容

  • 没有找到相关文章

最新更新