Python - юнит-тесты: сравнить некоторые объекты, используя их атрибуты, если они действительно один и тот же объект?
У меня есть метод, который устанавливает данные в атрибут класса.
Итак, позвольте мне сказать:
self._set_data(some_data)
print self._data
Это печатает мне эту информацию:
{'c2': {
'column': 1,
'style': <xlwt.Style.XFStyle object at 0x7f4668a18dd0>,
'value': u'Argentina', 'row': 2},
'c1': {
'column': 0,
'style': <xlwt.Style.XFStyle object at 0x7f4668a18dd0>,
'value': 'C is not Python', 'row': 0}}
Так что каждый ключ кроме style
имеет простые данные, поэтому нет проблем с проверкой того, что ожидается при запуске юнит-тестов. Но проблема, которую я вижу с style
ключ, он возвращает экземпляр xlwt
объект стиля модуля. Теперь, даже если бы я создал "тот же" стиль, используя те же значения для __init__
это, unittest все равно потерпит неудачу, потому что он будет сравнивать объекты, так что это будет другой объект. Есть ли в стандартном наборе юнит-тестов Python что-то подобное? Или мне нужно расширить пакет юнит-тестов, чтобы он как-то сравнивал этот конкретный объект?
1 ответ
В ваших тестах вы можете создать фиктивный объект стиля, который инициализируется с ожидаемыми значениями, а затем сравнить его __dict__
приписать __dict__
атрибут тестируемого объекта стиля.
if mock_style.__dict__ == tested_style.__dict__ :
print('The styles are set correctly.')