AttributeError: '...' объект не имеет атрибута _type_equality_funcs ' - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь использовать модуль Python unittest, чтобы сравнить результаты и ожидаемые значения и получить статистику теста в конце. Однако приведенный ниже пример кода дает мне следующую ошибку:

File "...", line 16, in <module>
  run_tests.test_equal()
File "...", line 13, in test_equal
  self.assertEqual(self.result, self.expected)
File "/usr/lib/python2.7/unittest/case.py", line 512, in assertEqual
  assertion_func = self._getAssertEqualityFunc(first, second)
File "/usr/lib/python2.7/unittest/case.py", line 493, in _getAssertEqualityFunc
  asserter = self._type_equality_funcs.get(type(first))
AttributeError: 'RunTests' object has no attribute '_type_equality_funcs'

Пример кода:

import unittest

class RunTests(unittest.TestCase):
   def __init__(self, result, expected):
      self.result = result
      self.expected = expected

   def runTest(self):
      test_equal(self)

   def test_equal(self):
      self.assertEqual(self.result, self.expected)

run_tests = RunTests(9, 9)
run_tests.test_equal()

if __name__ == '__main__':
   unittest.main()

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

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

вам нужно вызвать __init__ метод базового класса.это может быть полезно:

    import unittest
    class RunTests(unittest.TestCase):
       def __init__(self, *args, **kwargs):
          super(RunTests, self).__init__()

       def runTest(self):
          self.test_equal()

       def test_equal(self):
          self.assertEqual(9, 9)

    run_tests = RunTests()
    run_tests.test_equal()

    if __name__ == '__main__':
       unittest.main() 
0 голосов
/ 17 сентября 2018

Вы пропустили вызов __init__ базового класса внутри вашего RunTests.__init__, который отвечает за определение _type_equality_funcs.

def __init__(self, result, expected):
      super().__init__()
      self.result = result
      self.expected = expected
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...