Python timeout decorator til enhedstestning på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne have en nem måde at afprøve, om bestemt metode returnerer inden for den tildelte tid.


Timeout-indretningen ligner den mest hensigtsmæssige måde at gøre det på, men det har desværre ikke vundet arbejde på Windows. [2]

Bedste reference


Fundet denne trådbaserede løsning, men som nævnt her er der normalt ingen måde at dræbe en tråd i Python, så selv efter tråden 'times out' fortsætter den løbende. Men du kan bruge dette til faktisk at afslutte tråden, hvis du antager det er ikke bundet i C-land. [3] [4] [5]


Ikke en færdig opskrift, desværre, men det ser ud til, at det har alle de dele, du har brug for.

Andre referencer 1


Jeg kan ikke se, hvorfor Timeout Decorator ikke har arbejdet med vinduer?


Hvis dette er permanent, og ikke kun til debugging formål, kan du bruge et for andet loop inde i metoden. [6]


def methodName(timeout):
   for i in range(timout):
       if done\_doing\_task:
           break
   else: #will only be executed if we don't break out of the for loop
       raise Exception('method methodName timed out')