2017-06-14 76 views
0

我正在测试一些工程方程,其中有几个参数返回浮点数组。为了测试所有的情况,我想使用一些固定装置。我目前将测试用例存储在一个简单的文件中,加载它们,然后返回感兴趣的测试用例。有一个更好的方法吗?生成多个pytest夹具

@pytest.fixture(params=[0, 1, 2]) 
def test_case(request): 
    fpath = pathlib.Path(__file__).parent 
    fpath /= 'test_data'/'test_cases.json' 
    test_cases = json.load(fpath.open()) 
    return test_cases[request.param] 

def test_function(test_case): 
    # Run the test 
+0

我不确定我是否理解这个问题。 为什么不直接在python文件中内联数组? – nitzpo

+0

由于Python文件中的数据非常复杂 – arkottke

+0

您的意思是JSON文件?如果是的话,你必须保存在JSON文件中的数据,那么这是非常多的。您可以通过使用'pytest_generate_tests'挂钩来扫描目录并对其中的每个文件运行测试,对此代码进行轻微改进。这样,当你创建一个新的JSON文件时,它会自动添加到测试中。 – nitzpo

回答

0

您可以使用pytest_generate_tests

def pytest_generate_tests(metafunc): 
    if 'test_case' in metafunc.fixturenames: 
     fpath = pathlib.Path(__file__).parent 
     fpath /= 'test_data'/'test_cases.json' 
     test_cases = json.load(fpath.open()) 
     metafunc.fixturenames.append('test_case') 
     metafunc.parametrize(
      'test_case', 
      test_cases) 
+0

但事实上它不会改善任何事情.. 你能否澄清为什么你想要'更好的方式',你的方法有什么问题? – MasterAndrey

+0

我只是在寻找方法来改善我的方法/风格。我找不到任何关于像我这样生成多个测试的文档,所以我想我可能会错误地考虑这个问题。 – arkottke