Hi there,<div><br></div><div>I'd like to be able to use expectedFailure from unittest2/unittest@python2.7 with py.test. For a test like:</div><div><br></div><div>import unittest</div><div><br></div><div><div>class Foo(unittest.TestCase):</div>
<div> @unittest.expectedFailure</div><div> def test_working(self):</div><div> "A working test that is expected to fail"</div></div><div><br></div><div>I get the traceback:</div><div><br></div><div><div>
self = <foo.Foo testMethod=test_working>, result = <TestCaseFunction 'test_working'></div><div><br></div><div> def run(self, result=None):</div><div> orig_result = result</div><div> if result is None:</div>
<div> result = self.defaultTestResult()</div><div> startTestRun = getattr(result, 'startTestRun', None)</div><div> if startTestRun is not None:</div><div> startTestRun()</div>
<div> </div><div> self._resultForDoCleanups = result</div><div> result.startTest(self)</div><div> </div><div> testMethod = getattr(self, self._testMethodName)</div><div> if (getattr(self.__class__, "__unittest_skip__", False) or</div>
<div> getattr(testMethod, "__unittest_skip__", False)):</div><div> # If the class or method was skipped.</div><div> try:</div><div> skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')</div>
<div> or getattr(testMethod, '__unittest_skip_why__', ''))</div><div> self._addSkip(result, skip_why)</div><div> finally:</div><div> result.stopTest(self)</div>
<div> return</div><div> try:</div><div> success = False</div><div> try:</div><div> self.setUp()</div><div> except SkipTest as e:</div><div> self._addSkip(result, str(e))</div>
<div> except KeyboardInterrupt:</div><div> raise</div><div> except:</div><div> result.addError(self, sys.exc_info())</div><div> else:</div><div> try:</div>
<div> testMethod()</div><div> except KeyboardInterrupt:</div><div> raise</div><div> except self.failureException:</div><div> result.addFailure(self, sys.exc_info())</div>
<div> except _ExpectedFailure as e:</div><div> addExpectedFailure = getattr(result, 'addExpectedFailure', None)</div><div> if addExpectedFailure is not None:</div>
<div> addExpectedFailure(self, e.exc_info)</div><div> else:</div><div> warnings.warn("TestResult has no addExpectedFailure method, reporting as passes",</div>
<div> RuntimeWarning)</div><div> result.addSuccess(self)</div><div> except _UnexpectedSuccess:</div><div> addUnexpectedSuccess = getattr(result, 'addUnexpectedSuccess', None)</div>
<div> if addUnexpectedSuccess is not None:</div><div>> addUnexpectedSuccess(self)</div><div>E TypeError: addUnexpectedSuccess() takes exactly 3 arguments (2 given)</div>
</div><div><br></div><div>Is it a but or am I using it wrong ?</div><div><br></div><div>cheers,</div><div><br></div><div>David</div>