Как стабильно утверждать списки с pytest? - PullRequest
0 голосов
/ 23 ноября 2018

После переноса приложения Python с 2.6 на Python 2.7 я узнал из результатов моего pytest, что порядок списка изменился.Содержимое списка является результатом сторонней библиотеки openLDAP.

Сравнение списка в Python 2.6

assert ['1', '2', '8'] == ['1', '2', '8']

Но с Python 2.7 порядок списка изменился, что приводит кAssertionError

assert ['1', '8', '2'] == ['1', '2', '8']

Лучший совет: изменить реализацию, чтобы получить упорядоченные списки, или изменить тест, т. е. путем преобразования всех списков в set для сравнения результата подтверждения в стабильномспособ

1 Ответ

0 голосов
/ 23 ноября 2018

У вас есть несколько вариантов, в зависимости от характера ваших данных.Я предполагаю, что вам нужно сдать тест, если элементы одинаковы без учета порядка.

Если вы можете гарантировать, что все элементы в вашем списке уникальны, используйте set:

assert set(['1', '8', '2']) == set(['1', '2', '8'])

Если вы не можете гарантировать отсутствие дубликатов, используйте sorted:

assert sorted(['1', '8', '2']) == sorted(['1', '2', '8'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...