AssertEqual не удается сравнить два идентичных объекта int - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь написать модульные тесты для метода, который возвращает целое число, указывающее первый элемент и последние элементы из списка узлов.Когда я запускаю его, используя фиктивные данные, тесты не пройдены, но значение такое же, как и тип данных.Чего мне не хватает?

Оригинальный метод

def foo(transitions):
    sources = set(transitions["from"])
    destinations = set(transitions["to"])

    # Find Start
    # <Code to Find Start>

    # Find End
    end = destinations - sources
    if bool(end):
        end = list(end)  
    else:
        end = list(destinations)  
    end.sort(reverse=True)
    end = end[0]
    return start, end

Метод испытания

    def test_foo_end(self):
    dummy_end = 4
    dummy_transitions = pd.read_csv("TestData/Transitions.csv", index_col=0)
    test_end = foo(dummy_transitions)
    print(type(dummy_end))
    print(type(test_end))
    self.assertEqual(self, test_end, dummy_end)

Выход:

<class 'int'>
<class 'int'>
FF..
======================================================================
FAIL: test_foo_end (__main__.classTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "class_UT.py", line 51, in test_foo_end
    self.assertEqual(self, test_end, dummy_end)
AssertionError: <__main__.classTests 
testMethod=test_foo_end> != 4 : 4

1 Ответ

0 голосов
/ 13 февраля 2019
self.assertEqual(self, test_end, dummy_end)

неправильно.Используйте

self.assertEqual(test_end, dummy_end, "some descriptive message")

В противном случае вы в конечном итоге будете сравнивать self с test_end, что всегда будет ложным.

Полученный вами результат также утверждает следующее:

AssertionError: <__main__.ModelProcessorTests
testMethod=test_find_boundaries_end> != 4 : 4

Он говорит: «AssertionError», а затем печатает a != b: c с

  • a, являющимся длинным членом <__main__.ModelProcessorTests testMethod=test_find_boundaries_end> (который был self),
  • b означает 4 (что было test_end), а
  • c - это сообщение, которое вы дали (значение dummy_end, которое было 4).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...