On Wed, Sep 7, 2016 at 6:56 PM, Arek Bulski <arek.bulski@gmail.com> wrote:
In the project I maintain (construct) there are declarative testcases that look like a long list of (func, args, excepted output, error type) tuples. There is no way for me to call shuffle in there.

Can you explain why?  Something like this can be easily done with pytest:

In [1]: def foo(x):
   ...:     return x + 1
   ...:

In [2]: import pytest

In [3]: @pytest.mark.parametrize('x, y', [
   ...:     (100, 101),
   ...:     (200, 201),
   ...:     (300, 301),])
   ...: def test_foo(x, y):
   ...:     assert foo(x) == y
   ...:

In [4]: test_foo.parametrize.args
Out[4]: ('x, y', [(100, 101), (200, 201), (300, 301)])

In [5]: import random

In [6]: random.shuffle(test_foo.parametrize.args[1])

In [7]: test_foo.parametrize.args
Out[7]: ('x, y', [(200, 201), (100, 101), (300, 301)])