Метод assertURLEqual

Метод assertURLEqual применяется к экземпляру класса TestCase и проверяет, что два переданных URL-адреса эквивалентны. Сравнение выполняется без учета порядка параметров запроса, что позволяет избежать ложных срабатываний при разных последовательностях аргументов. Метод автоматически обрабатывает кодирование символов и нормализует пути, делая сравнение максимально удобным для тестирования веб-приложений.

Синтаксис

pythonself.assertURLEqual(url1, url2, msg=None)

Параметры метода:

Пример . С простыми URL-адресами

Проверим равенство двух простых URL-адресов:

pythonfrom django.test import TestCase

class URLTestCase(TestCase):
  def test_simple_urls(self):
    url1 = '/articles/2025/09/07/'
    url2 = '/articles/2025/09/07/'
    self.assertURLEqual(url1, url2)
    
    # Сравнение с полным URL
    full_url = 'https://example.com/articles/2025/09/07/'
    self.assertURLEqual(full_url, url2)

Результат выполнения кода:

python"All assertions passed successfully"

Пример . С параметрами запроса

Метод игнорирует порядок параметров в строке запроса:

pythonfrom django.test import TestCase

class URLParamsTestCase(TestCase):
  def test_url_with_query_params(self):
    url1 = '/search/?q=django&page=2&sort=date'
    url2 = '/search/?page=2&sort=date&q=django'
    
    # Порядок параметров не важен
    self.assertURLEqual(url1, url2)
    
    # Сравнение с другим значением параметра
    url3 = '/search/?q=python&page=2&sort=date'
    self.assertURLEqual(url1, url3)

Результат выполнения кода:

python"AssertionError: '/search/?q=django&page=2&sort=date' != '/search/?q=python&page=2&sort=date'"

Пример . Использование в тестировании редиректов

Метод удобно применять для проверки редиректов с помощью клиента:

pythonfrom django.test import TestCase
from django.urls import reverse

class RedirectTestCase(TestCase):
  def test_redirect_to_article(self):
    response = self.client.get('/old-article/')
    
    # Проверяем URL редиректа
    expected_url = '/articles/2025/09/07/django-testing/'
    self.assertURLEqual(response.url, expected_url)
    
    # Проверяем с параметрами
    response = self.client.get('/search/?q=django')
    expected_url = '/search/results/?query=django&page=1'
    self.assertURLEqual(response.url, expected_url)

Пример . Работа с относительными и абсолютными путями

Метод корректно сравнивает относительные и абсолютные URL:

pythonfrom django.test import TestCase

class RelativeURLTestCase(TestCase):
  def test_relative_vs_absolute(self):
    relative = '/articles/2025/09/07/'
    absolute = 'https://example.com/articles/2025/09/07/'
    
    # Сравнение относительного и абсолютного URL
    self.assertURLEqual(relative, absolute)
    
    # Сравнение с разными доменами
    absolute2 = 'https://another.com/articles/2025/09/07/'
    self.assertURLEqual(absolute, absolute2)

Смотрите также

  • метод assertRedirects,
    который проверяет редирект и соответствие URL-адреса
  • метод assertContains,
    который проверяет наличие текста в ответе сервера
  • метод assertInHTML,
    который проверяет наличие HTML-фрагмента
  • метод assertJSONEqual,
    который сравнивает два JSON-объекта