В чем разница между `assertIn` и` assertContains` в Django? - PullRequest
2 голосов
/ 28 апреля 2019

Я изучаю некоторые тестовые коды Django и нахожу assertIn и assertContains довольно похожими, я прочитал документацию , в которой они ничего не сказали о assertIn или, может быть, я не смог Найди это.

Этот пример ниже проверяет, появляется ли 'john' в содержимом self.email.body

self.assertIn('john', self.email.body)

аналогично этому примеру проверяется, появляется ли csrfmiddlewaretoken при содержании self.response

self.assertContains(self.response, 'csrfmiddlewaretoken')

Похоже, там синтаксис другой, но там функциональность та же. Следовательно, в чем разница?

Если бы вы могли помочь мне понять это на некоторых базовых примерах, я был бы очень признателен.

Большое вам спасибо

Ответы [ 2 ]

3 голосов
/ 28 апреля 2019

Тестирование Django наследуется от unittest в Python.

assertContains является специфичным для Django и позволяет вам оценивать дополнительные вещи помимо простого assertIn:

SimpleTestCase.assertContains (ответ, текст, число = Нет, код_состояния = 200, msg_prefix = '', html = False) [источник]

Утверждает, что экземпляр Response создал заданный код_состояния и этот текст появляется в содержимом ответа. Если указано количество, текст должен встречаться в ответе ровно раз.

Пока assertIn выполняет простую оценку :

assertIn (первый, второй, сообщения = нет)

assertIn (a, b) проверяет a in b

3 голосов
/ 28 апреля 2019

assertIn фактически является членом встроенного тестового набора Python. Это нормальный тест на членство. Например, вы можете проверить членство элемента массива. Ключ в словаре и т. Д. В основном вы можете использовать его для всего, для чего можно использовать оператор in.

assertContains добавлено django в тестовом костюме. Он используется специально для ответов. Это означает, что вы можете передать ему ответный объект, возвращенный представлением. Затем он оценит его и проверит на членство.

Вы можете прочитать о assertIn и assertContains в соответствующей документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...