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__, модульный тест все равно не прошел бы, потому что он будет сравнивать объекты, поэтому это будет другой объект. Есть ли что-то подобное в стандартном наборе юнит-тестов Python? Или мне нужно расширить набор юнит-тестов, чтобы он как-то по-другому сравнивал этот конкретный объект?


person Andrius    schedule 03.10.2016    source источник


Ответы (1)


В своих тестах вы можете создать объект фиктивного стиля, который инициализируется с ожидаемыми значениями, а затем сравнить его атрибут __dict__ с атрибутом __dict__ тестируемого объекта стиля.

if mock_style.__dict__ == tested_style.__dict__ :
    print('The styles are set correctly.')
person sc3w    schedule 03.10.2016