Question

Let's say I have a file named program1test.py

import math
def test_1case1():
    assert math.sqrt(4) == 4

I run using the Nose Test Runner in PyDev with no parameters in Window -> Preferences -> PyDev -> PyUnit

The result is as expected:

F
======================================================================
FAIL: program1test.test_1case1
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
    self.test(*self.arg)
  File "D:\Users\Samuel Louie\Documents\workspace\testpy\program1test.py", line 5, in test_1case1
    assert math.sqrt(4) == 4
AssertionError

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

However, I want to inspect what math.sqrt(4) actually gives. So I added --detailed-errors as a parameter for the Nose Test Runer.

If I run the test now, the result would be:

E
======================================================================
ERROR: program1test.test_1case1
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\nose\case.py", line 134, in run
    self.runTest(result)
  File "C:\Python34\lib\site-packages\nose\case.py", line 152, in runTest
    test(result)
  File "C:\Python34\lib\unittest\case.py", line 622, in __call__
    return self.run(*args, **kwds)
  File "C:\Python34\lib\unittest\case.py", line 582, in run
    self._feedErrorsToResult(result, outcome.errors)
  File "C:\Python34\lib\unittest\case.py", line 513, in _feedErrorsToResult
    result.addFailure(test, exc_info)
  File "C:\Python34\lib\site-packages\nose\proxy.py", line 146, in addFailure
    plugins.addFailure(self.test, err)
  File "C:\Python34\lib\site-packages\nose\plugins\manager.py", line 99, in __call__
    return self.call(*arg, **kw)
  File "C:\Python34\lib\site-packages\nose\plugins\manager.py", line 167, in simple
    result = meth(*arg, **kw)
  File "C:\Program Files\Eclipse\plugins\org.python.pydev_3.4.1.201403181715\pysrc\pydev_runfiles_nose.py", line 126, in addFailure
    err,
  File "C:\Program Files\Eclipse\plugins\org.python.pydev_3.4.1.201403181715\pysrc\pydev_runfiles_nose.py", line 70, in reportCond
    error_contents = self.getIoFromError(error)
  File "C:\Program Files\Eclipse\plugins\org.python.pydev_3.4.1.201403181715\pysrc\pydev_runfiles_nose.py", line 101, in getIoFromError
    import traceback;traceback.print_exception(etype, value, tb, file=s)
  File "C:\Python34\lib\traceback.py", line 169, in print_exception
    for line in _format_exception_iter(etype, value, tb, limit, chain):
  File "C:\Python34\lib\traceback.py", line 146, in _format_exception_iter
    for value, tb in values:
  File "C:\Python34\lib\traceback.py", line 125, in _iter_chain
    context = exc.__context__
AttributeError: 'str' object has no attribute '__context__'

----------------------------------------------------------------------
Ran 1 test in 0.030s

FAILED (errors=1)

How to solve?

Was it helpful?

Solution

Have a look at nose.tools.eq_:

from nose.tools import eq_
.....
eq_(math.sqrt(4), 4)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top