[TIP] alphabetical order in testing
holger krekel
holger at merlinux.eu
Wed Jan 20 15:51:47 PST 2010
On Wed, Jan 20, 2010 at 17:09 -0500, Mark Sienkiewicz wrote:
> holger krekel wrote:
>> On Wed, Jan 20, 2010 at 12:43 -0500, Mark Sienkiewicz wrote:
>>
>>> Of course, it could be any other arbitrary order, but alphabetical is
>>> much easier to determine than "order that they appear in the file"
>>> after you import a module.
>>>
>>
>> Huh? Ordering functions by their file position is straight forward in
>> Python.
>
> In that case, there is some clever python feature that I don't know
> about. How does it work? Is it easier than
> import os
> l = dir(os)
functions have a bytecode object which has a co_firstlineno line
number - you can use that to sort. If you insist on oneliners:
sorted(vars(os).items(), key=lambda x:
getattr(getattr(x[1], 'func_code', None), 'co_firstlineno', 0))
In practise i'd rather write this as a five-liner.
>> I agree that stable ordering is valuable for replicating test failures.
>> Both file-position and alphabetical orderings are stable.
>
> Yes. There are good arguments in favor of each too. There is also a
> good argument for the ability to choose a random order, as long as you
> can get exactly the same random order again when you want it.
yip, was discussed some time ago on this list IIRC.
cheers,
holger
More information about the testing-in-python
mailing list