python/py.test: запись вывода утверждения в контейнер

Я провожу автоматизированное тестирование, в котором сравниваю два списка данных из двух разных источников.

Я использую assert для сравнения строк, но не могу сохранить результат утверждения.

Какие-либо предложения? Можно использовать и другой метод, но я считаю, что на данный момент наиболее полезным является assert.

Спасибо.


person Gck    schedule 29.03.2015    source источник
comment
assert вызывает исключение, если оператор 'asserted' неверен. У него нет никаких сообщений, не так ли?   -  person ForceBru    schedule 29.03.2015
comment
Правильно, но если условие ложно, я хотел бы записать утверждение. Меня меньше интересуют случаи истинного состояния.   -  person Gck    schedule 29.03.2015


Ответы (2)


Попробуйте что-нибудь вроде этого

try:
    assert something==otherthing
except:
    f=open(log,"a")
    f.write("Assertion failed comparing something to otherthing\n")
    f.close()
person ForceBru    schedule 29.03.2015

Вы можете предоставить сообщение с утверждением, используя этот метод:

assert something == otherthing, "Assertion failed comparing {} to {}".format(something, otherthing)

Когда вы это сделаете, вы должны увидеть значения вместо пустого сообщения «AssertionError».

Могу ли я предложить использовать pytest в качестве основы для ваших автоматических тестов. Утверждения в pytest переформатированы, чтобы обеспечить лучший самоанализ значений, что делает этот дополнительный шаг излишним; взгляните на это введение в pytest, особенно раздел "test_markdown", где вы можете увидеть как утверждения получают некоторый автоматический самоанализ.

person Joe    schedule 11.04.2015