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.')
Другие вопросы по тегам