<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 7, 2016 at 6:56 PM, Arek Bulski <span dir="ltr"><<a href="mailto:arek.bulski@gmail.com" target="_blank">arek.bulski@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">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.</blockquote></div><br>Can you explain why?  Something like this can be easily done with pytest:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">In [1]: def foo(x):</div><div class="gmail_extra">   ...:     return x + 1</div><div class="gmail_extra">   ...:</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [2]: import pytest</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [3]: @pytest.mark.parametrize('x, y', [</div><div class="gmail_extra">   ...:     (100, 101),</div><div class="gmail_extra">   ...:     (200, 201),</div><div class="gmail_extra">   ...:     (300, 301),])</div><div class="gmail_extra">   ...: def test_foo(x, y):</div><div class="gmail_extra">   ...:     assert foo(x) == y</div><div class="gmail_extra">   ...:</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [4]: test_foo.parametrize.args</div><div class="gmail_extra">Out[4]: ('x, y', [(100, 101), (200, 201), (300, 301)])</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [5]: import random</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [6]: random.shuffle(test_foo.parametrize.args[1])</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [7]: test_foo.parametrize.args</div><div class="gmail_extra">Out[7]: ('x, y', [(200, 201), (100, 101), (300, 301)])</div></div></div>