Hi there,<div><br></div><div>I&#39;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>        &quot;A working test that is expected to fail&quot;</div></div><div><br></div><div>I get the traceback:</div><div><br></div><div><div>
self = &lt;foo.Foo testMethod=test_working&gt;, result = &lt;TestCaseFunction &#39;test_working&#39;&gt;</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, &#39;startTestRun&#39;, 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__, &quot;__unittest_skip__&quot;, False) or</div>
<div>            getattr(testMethod, &quot;__unittest_skip__&quot;, False)):</div><div>            # If the class or method was skipped.</div><div>            try:</div><div>                skip_why = (getattr(self.__class__, &#39;__unittest_skip_why__&#39;, &#39;&#39;)</div>
<div>                            or getattr(testMethod, &#39;__unittest_skip_why__&#39;, &#39;&#39;))</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, &#39;addExpectedFailure&#39;, None)</div><div>                    if addExpectedFailure is not None:</div>
<div>                        addExpectedFailure(self, e.exc_info)</div><div>                    else:</div><div>                        warnings.warn(&quot;TestResult has no addExpectedFailure method, reporting as passes&quot;,</div>
<div>                                      RuntimeWarning)</div><div>                        result.addSuccess(self)</div><div>                except _UnexpectedSuccess:</div><div>                    addUnexpectedSuccess = getattr(result, &#39;addUnexpectedSuccess&#39;, None)</div>
<div>                    if addUnexpectedSuccess is not None:</div><div>&gt;                       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>