Как я должен подтвердить HTML в шаблонах Django во время процесса разработки?

StackOverflow https://stackoverflow.com/questions/3086637

  •  28-09-2019
  •  | 
  •  

Вопрос

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

Какой лучший способ сделать это?

Это было полезно?

Решение

Хороший вопрос. Я не делал этого сам, поэтому, надеюсь, будут некоторые лучшие ответы, но вы можете посмотреть на промежуточное программное обеспечение Validation HTML:

«Во всех возможных сценариях» может быть слишком много, чтобы попросить, в зависимости от вашего приложения. Например, если вы делаете следующий Facebook, и, таким образом, принимая огромные суммы пользовательских данных каждый день, что-то придет в какой-то момент, который нарушает обоснованность страницы на вашем сайте.

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

Другие советы

В качестве альтернативы, ваша собственная подход к проверке страниц на вашем сайте во время вашего обычного процесса тестирования подразделений будет выглядеть что-то подобное:

  1. Пройти через тебя urls.py и генерировать как можно больше возможных URL для сайта, как вы можете
  2. Использовать Встроенный тестовый клиент Django Чтобы получить каждый из этих URL
  3. Подтвердить их как-то (см. Возможно Validate (x) HTML в Python)

Не уверен, что кто-нибудь сделает любую работу над этим, является многоразовым способом.

Одним из решений состоит в том, чтобы сделать сценарий, который отображает все шаблоны на основе входного словаря переменных тестовых значений.

Основная логика для получения списка переменных, определенных в шаблонах, заключается в следующем:

from django.template.loader import get_template

def extract_required_vars(node):
    if not hasattr(node, 'nodelist'):
        return []
    var_names = []
    for child_node in node.nodelist:
        if isinstance(child_node, VariableNode):
            var_names.append(child_node.filter_expression.token)
        elif isinstance(child_node, ForNode):
            var_names.append(child_node.sequence.var.var)
        elif isinstance(child_node, ExtendsNode):
            template = get_template(child_node.parent_name.var)
            var_names.extend(extract_required_vars(template))
        elif isinstance(child_node, IncludeNode):
            template = get_template(child_node.template.var)
            var_names.extend(extract_required_vars(template))
        var_names.extend(extract_required_vars(child_node))
    return var_names

required_vars = extract_required_vars(get_template('index.html'))

Затем скрипт проверяет, что переменные, определенные в шаблонах, либо в настройках проекта, либо в Dict, предоставляемых пользователем в качестве тестового ввода.

/path/to/project/templates/templates/allusers.html
  -> ok: users, STATIC_URL
/path/to/project/templates/entrer-en-contact.html
  -> ok: contactform, STATIC_URL
/path/to/project/templates/dest-summary.html
  -> ok: STATIC_URL
  -> missing: dest_username

Подробнее В этом блоге пост.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top