nose2
nose2 copied to clipboard
nose2 test generation breaks when using the exam helper library
similiar situation as in #80, it seems that a test case is being instantiated, but then a different instance is actually being used when running the test method.
import exam
import unittest2
from exam import before
class SomeTest(exam.Exam, unittest2.TestCase):
@before
def before(self):
# executes before test run
self.before_id = id(self)
print 'before_id', self.before_id
def assert_ids(self):
print 'test_id', id(self)
self.assertEqual(self.before_id, id(self))
def test_someting(self):
self.assert_ids()
def test_gen_something(self):
print 'gen_id', id(self)
for x in xrange(3):
yield self.test_someting, ()
gen_id 4505929424
gen_id 4506129040
before_id 4506129808
test_id 4506129808
before_id 4506129296
test_id 4506129040
before_id 4506129488
test_id 4506129040
before_id 4506129680
test_id 4506129040
test_someting (test_foo.SomeTest) ... ok
test_gen_something:1
(test_foo.SomeTest) ... ERROR
test_gen_something:2
(test_foo.SomeTest) ... ERROR
test_gen_something:3
(test_foo.SomeTest) ... ERROR
======================================================================
ERROR: test_gen_something:1
(test_foo.SomeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/adam/src/tempest/test_foo.py", line 21, in test_someting
self.assert_ids()
File "/Users/adam/src/tempest/test_foo.py", line 18, in assert_ids
self.assertEqual(self.before_id, id(self))
AttributeError: 'SomeTest' object has no attribute 'before_id'
======================================================================
ERROR: test_gen_something:2
(test_foo.SomeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/adam/src/tempest/test_foo.py", line 21, in test_someting
self.assert_ids()
File "/Users/adam/src/tempest/test_foo.py", line 18, in assert_ids
self.assertEqual(self.before_id, id(self))
AttributeError: 'SomeTest' object has no attribute 'before_id'
======================================================================
ERROR: test_gen_something:3
(test_foo.SomeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/adam/src/tempest/test_foo.py", line 21, in test_someting
self.assert_ids()
File "/Users/adam/src/tempest/test_foo.py", line 18, in assert_ids
self.assertEqual(self.before_id, id(self))
AttributeError: 'SomeTest' object has no attribute 'before_id'
----------------------------------------------------------------------
Ran 4 tests in 0.025s
FAILED (errors=3)
this was an error in the exam lib in how it handled descriptors. it has been fixed.
edit: my bad, I this is still an issue. The exam bug fix was unrelated.