Pytest插件:避免在参数化中重复参数
pytest-auto-parametrize的Python项目详细描述
用法
这是使用parametrized test而不使用此命令的示例 插件:
importpytesttestparams=[(1,2,3,4,5,6,7),(7,6,5,4,3,2,1),]@pytest.mark.parametrize('a, b, c, d, e, f, g',testparams)deftest_many_args(a,b,c,d,e,f,g):assertd==4
参数列表必须重复,这很烦人。
通过使用此插件,可以避免重复:
importpytesttestparams=[(1,2,3,4,5,6,7),(7,6,5,4,3,2,1),]@pytest.auto_parametrize(testparams)deftest_many_args(a,b,c,d,e,f,g):assertd==4
自动推导的参数必须在参数列表的开头,但是 之后可以使用任何其他参数,例如夹具:
importpytesttestparams=[(1,2,3,4,5,6,7),(7,6,5,4,3,2,1),]@pytest.fixturedefmyfixture():return4@pytest.auto_parametrize(testparams)deftest_many_args_and_fixture(a,b,c,d,e,f,g,myfixture):assertd-myfixture==0
限制
与装饰器@pytest.mark.parametrize(...)不同 @pytest.auto_parametrize(...)不能多次用于同一个 测试功能。它可以与一个或多个 @pytest.mark.parametrize(...),不过,只要“auto”参数是 在参数列表的开头。