[pytest-dev] Fixtures and test cases parametrization -- the clever way

Goncalo Morgado goncalo.magno at gmail.com
Sun Feb 7 19:29:13 EST 2016


Hi Florian,

Thanks for the reply.
Very useful! I am reconsidering the amount of tests I was trying to
parametrize in a single test case, and split it in multiple test_*
functions for different groups of tests. Also creating a fixture for
default parameters, those that are not parametrized get set by this fixture.

Regards
Goncalo




On Sun, Feb 7, 2016 at 8:53 AM, Florian Schulze <florian.schulze at gmx.net>
wrote:

> Maybe https://pypi.python.org/pypi/hypothesis is a better fit for this
> than parametrization. At first it might seem a bit foreign (it felt so to
> me), but it allows you to test in very interesting ways and to find corner
> cases quickly. Just testing all the keys is pretty boring and most likely
> won't lead to errors, so it's pretty much a waste of your time and CPU time.
>
> Regards,
> Florian Schulze
>
>
> On 7 Feb 2016, at 4:53, Goncalo Morgado wrote:
>
> Hi,
>>
>> Thank you for this great lib!
>>
>> I have an app that takes a config file with key/value pairs, that I would
>> like to test thoroughly, i.e all possible combinations of parameters in
>> the
>> config file. I thought about taking advantage of the fixture
>> parametrization functionality pytest provides, but not sure how... and end
>> up with what I believe is a silly idea (please see example code below). I
>> say silly because I will end up with a huge amount of
>> *.mark.parametrize()*
>> entries and the test case function with a number of arguments... Any idea
>> on how to do this an elegant way?
>>
>> *import* pytest
>> @pytest.mark.parametrize("key1", [0, 1, etc, etc])
>> @pytest.mark.parametrize("key2", [2, 3, etc, etc, etc])
>> @pytest.mark.parametrize("key3", [4, 5, etc, etc, etc, etc])
>> ... # an infinitiy amount of @pytest.mark.parametrize("keyN", [bla, bla,
>> bla])
>> *def* test_app_param_combination(key1, key2, key3, ....)
>>   # implementation of the test
>>   # run app with combination of key/value pair and check exit code
>>   *assert* app_exit_code == 0
>>
>> Many thanks
>> Go
>> _______________________________________________
>> pytest-dev mailing list
>> pytest-dev at python.org
>> https://mail.python.org/mailman/listinfo/pytest-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20160208/5e53bd0b/attachment.html>


More information about the pytest-dev mailing list