2013-12-05 3 views
1

Привет, поэтому мне интересно, есть ли способ исправить вывод отказов утверждений nosetests. У меня есть простой скрипт под названием «t.py»:Nosetests AssertionError Формат вывода

import unittest 
from nose.tools import assert_equal 

class x(unittest.TestCase): 
    """ 
    Testing 
    """ 
    def test(self): 
     assert_equal(1, 2) 

Если я запустить его с помощью команды «nosetests т», то я получаю следующее.

AssertionError: 1 != 2 
    '1 != 2' = '%s != %s' % (safe_repr(1), safe_repr(2)) 
    '1 != 2' = self._formatMessage('1 != 2', '1 != 2') 
>> raise self.failureException('1 != 2') 

Вместо того, чтобы на выходе я получаю при запуске «питон -m UnitTest т»

AssertionError: 1 != 2 

Кто-нибудь знает, как я хотел бы сделать вывод nosetests соответствовать UnitTest выход? Это забило бы результаты при многократном тестировании многих тестов.

Это с python 2.7.3, нос == 1.3.0, внутри виртуального внутри виртуальной машины ubuntu.

EDIT:

У меня нет никаких проблем с носом, пытаясь дать больше информации. У меня растущий набор тестов, и дополнительная информация может быть полезна. Просто, что это дает бесполезную информацию. Мне действительно не нужно видеть одну и ту же информацию несколько раз. Это очень трудно понять эту проблему, если есть больше чем один тест или особенно, если есть дополнительное сообщение, такие как:

assert_equal(1,2, "Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isn't it?") 

Тогда я получаю это:

assert_equal(1,2, "Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isnt it?") 
AssertionError: Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isn't it? 
    '1 != 2' = '%s != %s' % (safe_repr(1), safe_repr(2)) 
    "Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isnt it?" = self._formatMessage("Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isnt it?", '1 != 2') 
>> raise self.failureException("Something is messed up before this assertion. Now here is a bunch of info to help with debugging. This is really quite a lot of info you know. Yes it is very long isnt it?") 

Спасибо!

ответ

1

Вы пытались использовать self.assertEqual, где self является «unittest.TestCase»?

Для этого

import unittest 
class x(unittest.TestCase): 
    def test_1(self): 
     self.assertEqual(1,2) 

я получаю этот выход

laptop:~/workspace/test$ nosetests j.py 
F 
====================================================================== 
FAIL: test_1 (j.x) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/workspace/test/j.py", line 4, in test_1 
    self.assertEqual(1,2) 
AssertionError: 1 != 2 

---------------------------------------------------------------------- 
Ran 1 test in 0.001s 

FAILED (failures=1) 

EDIT: Вы можете также, как "nosetests -q, --quiet" менее многословным

+0

Это не сработало для меня. Возможно, у меня есть какой-то странный параметр конфигурации, который я не вижу. –

+0

А вдруг понял, что кто-то оставил файл setup.cfg внутри проекта. В нем был указан флаг «-detailed-errors». Удаление этого помогло. Теперь я не уверен, принимать ли этот ответ или нет. Это помогло –

1

nosetests пытающегося чтобы быть более полезным, чем python по умолчанию assert. Когда вы сталкиваетесь с сообщением об ошибке утверждения по умолчанию, вам часто требуется дополнительная информация для отслеживания ошибки. Вы, возможно, не в полной мере оценили это, пока вам не пришлось выследить несколько десятков реальных ошибок.

Вам не нужно беспокоиться о том, что результаты будучи суматоху, потому что вы выбираете один и исправить ее (быстрее, потому что у вас есть больше информации) и обычное дело в том, что существует не так много (или лучше ноль)

+1

Я не согласен. Есть много тестов, и поэтому может быть много сбоев сразу. И это тесты других народов. Моя работа заключается в том, чтобы сообщать о вещах в простой форме для других разработчиков, чтобы быстро отслеживать проблемы. У меня всегда есть дополнительные сообщения для предоставления информации об отладке (которую я теперь понимаю, должно быть, в исходном вопросе). –

Смежные вопросы