As Ryan points out, pytest does this right.  The way I understand it, 
pytest is actively maintained and nose isn't.  You should switch to pytest 
as soon as possible.



On Saturday, September 17, 2016 at 8:55:43 PM UTC-4, Arek Bulski wrote:
> I am using declarative testing a lot and I found out why unit tests are so 
> clunky. The reason why assertEquals(a,b) is used is because if we put 
> `assert a==b` then nose can catch the AssertionError but wont find out what 
> was returned or expected. This could be easily overcome if we allow 
> oveloading == operator from outside. Right now == would have to be changed 
> for every lefhand object that is compared in the tests, builtin types 
> including. We could use a way to change it from above, so to speak. 
> Consider this:
> def __glob_eq__(a,b):
>   if not a == b:
>       raise FoundInequalityError(a,b)
>   return True
> assert obj1 == obj2   #<-- using eq above
> Nose could easily catch FoundInequalityError and print whatever 
> assertEquals would. This goes very handy when you consider declarative unit 
> testing that I use in my project. I have a  unitest.TestCase derivative and 
> the actual testcase has a method that yields individual comparisons, like 
> this:
> class TestBinary(declarativeunittest.TestCase):
>     def alltestsinteractive(self):
>         yield [func(1) == 2]
>         shuffle(alist)
>         yield [sorted(alist) == [1,2,3]]
> Notice that this allows to put imperative statements in between 
> declarative cases. So shuffled() is no longer necessary in this code. :)
> pozdrawiam,
> Arkadiusz Bulski
Python-ideas mailing list
Code of Conduct:

Reply via email to