pyhamcrest - Сравнить два списка
Я только начал изучать питон. В настоящее время пишется модульный тест, чтобы проверить, присутствуют ли элементы в ожидаемом списке в фактическом списке.
def test_compare_list_of_items():
actual_list_of_items = ['a','b']
expected_list_of_items = ['a']
assert_that(actual_list_of_items, has_item(has_items(expected_list_of_items)))
но я получаю такие ошибки, как
E Expected: a sequence containing (a sequence containing <['a']>)
E but: was <['a', 'b']>
Как и какой сопоставитель последовательностей я должен использовать, чтобы утверждать, присутствует ли элемент 'a' в ожидаемом списке в фактическом списке?
2 ответа
Ты используешь has_item
когда вы должны использовать только has_items
. Согласно документам, для этого требуется несколько сопоставителей, которые вам нужны. Тогда ваша функция станет
def test_compare_list_of_items():
actual_list_of_items = ['a','b']
expected_list_of_items = ['a']
assert_that(actual_list_of_items, has_items(*expected_list_of_items))
Мы используем итеративную распаковку, чтобы список передавался в качестве аргументов, и теперь, когда вы его запускаете, он не должен вызывать ошибки.
Я не знаю о has_items
функция, но можно ли просто использовать что-то подобное?
assertTrue(all(item in expected_list_of_items for item in actual_list_of_items))