Hi, > I have found that storing the results of the call I want to test the > result of, and then asserting the result generally eliminates these > errors. > > For example: > > assert Foo() == 23 > > often caused me problems with that message, however: > > foo = Foo() > assert foo == 23 > > would not. > > I am not sure why that is the case but I was able to resolve the issue > using the second form. If I understand it correctly, the test handling magic evaluates each part of the expression again, to display it in the fail traceback. For example, in the traceback of some test it will say:
def test_xxx(): E assert Foo() == 23 > assert 0 == 23 If Foo() returns 0. It is run again get the value 0 to substitute into the error message. However if the second time it is run Foo() actually works correctly and returns 23, this value is obviously not correct, because if it were the assert would have passed. I suspect maybe py.test is evaluating t.isAlive() again to substitute into the if-expression, resulting in confusion when the result changes to True. If that is the case, you might have to do something like checker.stop( False ) is_alive = t.isAlive() is_finished = checker.isFinished() if not is_alive: assert False if is_finished: assert False Hope this made sense, Neil _______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev