Package: ttoolly
Django test tools. Django >= 1.8Наборы стандартных проверок для Django-формПример тестаtests/tests_for_project.pyОписание тестовых классов и их параметров для описания формGlobalTestMixInназвание полязначение по умолчаниюописаниепример использованияall_uniqueNoneне использоватьchoice_fields_values{}варианты значений для select, multiselect полейchoice_fields_values = {‘field1’: (value1, value2)}custom_error_messages{}Кастомные сообщения для определенных полейcustom_error_messages = {‘field1’: {message_type: u”Текст сообщения об ошибке.”}}errors[]не переопределять (хранит значения ошибок для текущего теста)files[]список файлов в текущем тесте (используется для закрытия файлов в конце каждого теста)f = open(filename); self.fields.append(f)maxDiffNoneunittest.TestCase.maxDiffnon_field_error_key‘__all__’поле, в котором возвращаются общие (не привязанные к конкретному полю) для формы ошибкиunique_fieldsNoneсписок уникальных полейunique_fields = (‘field1’, (‘field2’, ‘field3’), ‘field4’)unique_with_case()Список уникальных полей, для которых при проверке униклаьности учитывается регистрunique_with_case = (‘field1’, )FormTestMixIn(GlobalTestMixIn)название полязначение по умолчаниюописаниепример использованиявключает проверкиobjNoneмодель, для котороый выполняются все проверки. Является необходимым для запуска любого тестаadditional_params{}Дополнительные параметры для всех выполняющихся в тестах запросовadditional_params = {‘HTTP_X_REQUESTED_WITH’: ‘XMLHttpRequest’}all_fieldsdefault_params.keys()Список всех полей, которые должны присутствовать на форме.all_fields = (‘field1’, ‘field2’)Проверка наличия полей на форме. Все поля заполнены (исключаются указанные в one_of_fields)all_fields_addall_fields or default_params_add.keys()Список всех полей, которые должны присутствовать на форме созданияall_fields_add = (‘field1’, ‘field2’)all_fields_editall_fields or default_params_edit.keys()Список всех полей, которые должны присутствовать на форме редактированияall_fields_edit = (‘field1’, ‘field2’)check_nullNoneВключать ли проверки на NULL байт?check_null = TrueNULL байт в строковых полях и именах файловcheck_null_file_positiveFalse, если установлено check_nullcheck_null_file_positive = TrueNULL байт вырезается из имен файлов при сохраненииcheck_null_file_negativeTrue, если установлено check_nullcheck_null_file_negative = TrueNULL байт в именах файлов. Ожидается сообщение об ошибкеcheck_null_str_positiveFalse, если установлено check_nullcheck_null_str_positive = TrueNULL байт вырезается из строковых полей при сохраненииcheck_null_str_negativeTrue, если установлено check_nullcheck_null_str_negative = TrueNULL байт в строковых полях. Ожидается сообщение об ошибкеchoice_fields[]Список select полейchoice_fields = (‘field1’, ‘field2’)Невалидные значения в полях (строка, число)choice_fields_addchoice_fieldsСписок select полей на форме созданияchoice_fields_add = (‘field1’, ‘field2’)choice_fields_editchoice_fieldsСписок select полей на форме редактированияchoice_fields_edit = (‘field1’, ‘field2’)choice_fields_with_value_in_error[]Список select полей, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значениеchoice_fields_with_value_in_error = (‘field1’, ‘field2’)Невалидные значения в полях (строка, число)choice_fields_add_with_value_in_errorchoice_fields_with_value_in_errorСписок select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значениеchoice_fields_add_with_value_in_error = (‘field1’, ‘field2’)choice_fields_edit_with_value_in_errorchoice_fields_with_value_in_errorСписок select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значениеchoice_fields_edit_with_value_in_error = (‘field1’, ‘field2’)default_params{}Параметры по умолчанию, которые используются при создании/редактировании объектаdefault_params = {‘field1’: value1, ‘field2: value2}default_params_adddefault_paramsПараметры по умолчанию, которые используются при создании объектаdefault_params_add = {‘field1’: value1, ‘field2: value2}default_params_editdefault_paramsПараметры по умолчанию, которые используются при редактировании объектаdefault_params_edit = {‘field1’: value1, ‘field2: value2}date_fieldsКлючи из default_params_add, default_params_edit, значения из all_fields_add, all_fields_edit, содержащие в названии ‘date’Названия полей, содержащих датыdate_fields = (‘field1’, ‘field2’)datetime_fields()Названия полей, содержащих datetimedatetime_fields = (‘field1’, ‘field2’)digital_fieldsNoneНазвания полей, содержащих числаdigital_fields = (‘field1’, ‘field2’)Позитивные: Максимальные, минимальные числовые значения. Негативные: Значения больше максимального, меньше минимального, строкиdigital_fields_adddigital_fields или default_params_add.keys(), для которых значения являются числами и не указаны в choice_fields_add, choice_fields_add_with_value_in_errorНазвания полей на форме создания, содержащих числаdigital_fields_add = (‘field1’, ‘field2’)digital_fields_editdigital_fields или default_params_edit.keys(), для которых значения являются числами и не указаны в choice_fields_edit, choice_fields_edit_with_value_in_errorНазвания полей на форме редактирования, содержащих числаdigital_fields_edit = (‘field1’, ‘field2’)disabled_fieldsNoneНазвания полей, выводящихся на форме, но недоступных для редактированияdisabled_fields = (‘field1’, ‘field2’)Наличие полей на форме. Попытка передать значения в недоступных полях при сохраненииdisabled_fields_adddisabled_fieldsНазвания полей, выводящихся на форме создания, но недоступных для редактированияdisabled_fields_add = (‘field1’, ‘field2’)disabled_fields_editdisabled_fieldsНазвания полей, выводящихся на форме редактирования, но недоступных для редактированияdisabled_fields_edit = (‘field1’, ‘field2’)email_fieldsNoneНазвания полей для ввода emailemail_fields = (‘field1’, ‘field2’)Невалидные (строка, не являющаяся email’ом) значения в поляхemail_fields_addemail_fields или ключи из default_params_add, содержащие в названии ‘email’Названия полей для ввода email на форме созданияemail_fields_add = (‘field1’, ‘field2’)email_fields_editemail_fields или ключи из default_params_edit, содержащие в названии ‘email’Названия полей для ввода email на форме редактированияemail_fields_edit = (‘field1’, ‘field2’)exclude_from_check[]Названия полей, которые нужно исключить из проверки значений во всех тестах. Актуально, например, для полей, содержащих дату обновления объектаexclude_from_check = (‘field1’, ‘field2’)exclude_from_check_addexclude_from_checkНазвания полей, которые нужно исключить из проверки значений в тестах создания объектаexclude_from_check_add = (‘field1’, ‘field2’)exclude_from_check_editexclude_from_checkНазвания полей, которые нужно исключить из проверки значений в тестах редактирования объектаexclude_from_check_edit = (‘field1’, ‘field2’)fields_helptextNoneХелптекст в полях формыfields_helptext = {'url': 'For example"http://example.com/test"'}Проверка наличия хелптекста в соответствующих полях формыfields_helptext_addfields_helptextХелптекст в полях формыfields_helptext_add = {'url': 'For example"http://example.com/test"'}Проверка наличия хелптекста в соответствующих полях формы созданияfields_helptext_editfields_helptextХелптекст в полях формыfields_helptext_edit = {'url': 'For example"http://example.com/test"'}Проверка наличия хелптекста в соответствующих полях формы редактированияfile_fields_params{}Параметры файловых полейfile_fields_params = {'field_name': {'extensions': ('jpg','txt'),'max_count': 3, 'one_max_size': '3Mb', 'wrong_extensions': ('rar','zip'),'min_width': 200, 'min_height': 100, 'max_width': 300, 'max_height': 200}}file_fields_params_addfile_fields_paramsПараметры файловых полей на форме созданияfile_fields_params_editfile_fields_paramsПараметры файловых полей на форме редактированияfilter_paramsNoneНазвания параметров для фильтрации списка объектовfilter_params = (‘filter_name1’, (‘filter_name2’, ‘any_valid_value’), )Для тестов должен быть задан также url_list. Проверка с пустым, либо указанным в параметрах значением. Проверка со случайными значениями. В любом случае ожидается ответ 200hidden_fieldsNoneНазвания полей, выводящихся на форме в скрытом видеhidden_fields = (‘field1’, ‘field2’)Проверка наличия полей на формеhidden_fields_addhidden_fieldsНазвания полей, выводящихся на форме создания в скрытом видеhidden_fields_add = (‘field1’, ‘field2’)hidden_fields_edithidden_fieldsНазвания полей, выводящихся на форме редактирования в скрытом видеhidden_fields_edit = (‘field1’, ‘field2’)int_fieldsNoneНазвания полей, содержащих целые числаint_fields = (‘field1’, ‘field2’)см. digital_fieldsint_fields_addint_fields или поля из digital_fields_add, для которых значения полей в default_params_add целочисленныеНазвания полей на форме создания, содержащих целые числаint_fields_add = (‘field1’, ‘field2’)int_fields_editint_fields или поля из digital_fields_edit, для которых значения полей в default_params_edit целочисленныеНазвания полей на форме редактирования, содержащих целые числаint_fields_edit = (‘field1’, ‘field2’)intervalsNoneСуществующие на форме временные интервалыintervals =(('field1',field2'),('field3, 'field4','>='))Окончание интервала больше, меньше, равно началу интервалаmax_blocksNoneСловарь количества строка в инлайн блокахmax_blocks = {‘inline_block_1’: 10}Максимальное число строк, число строк больше максимальногоmax_fields_length{}Словарь максимальной допустимой длины значений (для текстовых) или максимального допустимого значения (для числовых) в поляхmax_fields_length = {‘string_field_name’: 100, ‘digital_field_name’: 99999}Максимальные значения (для файловых полей в тестах редактирования сохранение и проверка выполняется дважды). Значения больше максимальных.min_fields_length{}Словарь минимальной допустимой длины значений (для текстовых) или минимального допустимого значения (для числовых) в поляхmin_fields_length = {‘string_field_name’: 5, ‘digital_field_name’: -1}Минимальные значения. Значения меньше минимальныхmultiselect_fieldsNoneСписок multiselect полейmultiselect_fields = (‘field1’, ‘field2’)Невалидные значения (число)multiselect_fields_addmultiselect_fields или default_params_add.keys() если значения для них являются спискамиСписок multiselect полей на форме созданияmultiselect_fields_add = (‘field1’, ‘field2’)multiselect_fields_editmultiselect_fields или default_params_edit.keys() если значения для них являются спискамиСписок multiselect полей на форме редактированияmultiselect_fields_edit = (‘field1’, ‘field2’)not_empty_fieldsNoneОбязательные для заполнения поляnot_empty_fields = (‘field1’, (‘field2’, ‘field3’))Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) не заполнено.not_empty_fields_addnot_empty_fields или required_fields_add или default_params_add.keys()Обязательные для заполнения поля на форме созданияnot_empty_fields_add = (‘field1’, (‘field2’, ‘field3’))not_empty_fields_editnot_empty_fields или required_fields_edit или default_params_edit.keys()Обязательные для заполнения поля на форме редактированияnot_empty_fields_edit = (‘field1’, (‘field2’, ‘field3’))only_if_valueNoneПоля, доступные для в зависимости от значения в другом полеonly_if_value = {‘field1’: {‘field2’: ‘value1’}}Указано значение, включающее поле. Указано другое значение, поле заполнено.one_of_fieldsNoneСписок наборов полей, которые могут быть заполнены только отдельно друг от другаone_of_fields = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))Заполнено одно из группы. Одновременно заполненные поля (если связанных полей больше трех, разбиваются также попарно)one_of_fields_addone_of_fieldsСписок наборов полей, которые могут быть заполнены только отдельно друг от друга на форме созданияone_of_fields_add = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))one_of_fields_editone_of_fieldsСписок наборов полей, которые могут быть заполнены только отдельно друг от друга на форме редактированияone_of_fields_edit = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))required_fieldsNoneПоля, которые должны присутствовать в запросе.required_fields = (‘field1’, (‘field2’, ‘field3’))Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) отсутствуетrequired_fields_addrequired_fields или default_params_add.keys()Обязательные для заполнения поля на форме созданияrequired_fields_add = (‘field1’, (‘field2’, ‘field3’))required_fields_editrequired_fields или default_params_edit.keys()Обязательные для заполнения поля на форме редактированияrequired_fields_edit = (‘field1’, (‘field2’, ‘field3’))required_ifNoneПоля, обязательные для заполнения, если заполнено другое полеrequired_if = {'field1': 'field2', 'field2': ('field1','field3')}Заполнено основное, но не заполнено зависимое. Не заполнены основное и зависимое. Заполнено и основное, и зависимое.required_if_valueNoneПоля, обязательные для заполнения в зависимости от значения в другом полеrequired_if_value = {‘field1’: {‘field2’: ‘value1’}}Указано значение, включающее обязательность: поле заполнено, поле не заполнено. Указано другое значение: поле заполнено, поле не заполнено.required_if_addrequired_if или {}Поля, обязательные для заполнения, если заполнено другое поле на форме созданияrequired_if_add = {'field1': 'field2', 'field2': ('field1','field3')}required_if_editrequired_if или {}Поля, обязательные для заполнения, если заполнено другое поле на форме редактированияrequired_if_edit = {'field1': 'field2', 'field2': ('field1','field3')}status_code_error200Статус ответа при наличии ошибокstatus_code_not_exist404Статус ответа при манипуляциях с несуществующим объектомstatus_code_success_add200Статус ответа при успешном создании объектаstatus_code_success_edit200Статус ответа при успешном редактировании объектаunique_fieldsNoneсписок уникальных полейunique_fields = (‘field1’, (‘field2’, ‘field3’), ‘field4’)Объект с такими полями уже существует. Для текстовых полей проверяется также в uppercaseunique_fields_addunique_fields (учитывается наличие в all_fields_add)Cписок уникальных полей на форме созданияunique_fields_add = (‘field1’, (‘field2’, ‘field3’), ‘field4’)unique_fields_editunique_fields (учитывается наличие в all_fields_edit)Cписок уникальных полей на форме редактированияunique_fields_edit = (‘field1’, (‘field2’, ‘field3’), ‘field4’)url_listURL, на котором находится список объектов, например, в админке. Включает все тесты, связанные со спискомurl_list = ‘modelname:url_name’ или url_list = ‘/path/to/list/’with_captchaНаличие поля ‘captcha’ в all_fields или в all_fields_add или в all_fields_editИспользуется ли капча на форме. Если True, во всех тестах отправляемые параметры дополняются полями капчиfile_fields_paramsназвание поляописаниевключает проверкиextensionsразрешенные расширенияВсе валидные расширения. Невалидные расширения.wrong_extensionsдополнительные невалидные расширенияДобавляет значения для проверки в тесте невалидных расширенийmax_countмаксимальное количество файлов (для полей с множественным выбором файлов)Максимальное число файлов. Число файлов больше максимальногоone_max_sizeмаксимальный размер файла (одного файла для полей с множественным выбором файлов)Максимальный размер файла. Размер файла больше максимальногоmin_widthминимальная ширина изображенияИзображение с минимальной шириной. Изображение с шириной меньше минимальнойmin_heightминимальная высота изображенияИзображение с минимальной высотой. Изображение с высотой меньше минимальнойmax_widthмаксимальная ширина изображенияИзображение с максимальной шириной. Изображение с шириной меньше максимальнойmax_heightмаксимальная высота изображенияИзображение с максимальной высотой. Изображение с высотой меньше максимальнойcustom_error_messages(То же используется в settings.ERROR_MESSAGES)названиеописаниеrequiredНе заполнено обязательное полеОтсутствует обязательное полеwithout_requiredОтсутствует обязательное полеempty_requiredНе заполнено обязательное полеmax_lengthПревышена максимальная длина текста в полеПревышено максимальное значение в числовом полеПревышена максимальная длина имени файлаmax_length_digitalПревышено максимальное значение в числовом полеmax_length_fileПревышена максимальная длина имени файлаmin_lengthДлина текста в поле меньше минимальнойЧисловое значение меньше минимальногоmin_length_digitalЧисловое значение меньше минимальногоwrong_valueВ селект/мультиселект поле указано невалидное значениеwrong_value_intВ целочисленном поле указано не целое числоwrong_value_digitalВ числовом поле указано не числоwrong_value_emailВ поле адреса электронной почты указано невалидное значениеuniqueОбъект с указанными уникальными параметрами уже существуетdelete_not_existsУдаляемый объект не существуетrecovery_not_existsВосстанавливаемый из корзины объект не существуетempty_fileПустой файлmax_count_fileВ поле со множественной загрузкой загружено больше допустимого количества файловmax_size_fileПревышен максимальный размер файлаmax_sum_size_fileВ поле со множественной загрузкой файлов превышен допустимый суммарный размер файловwrong_extensionЗагружен файл с недопустимым расширениемmin_dimensionsРазмеры загруженного изображения меньше, чем минимальные допустимыеone_ofПоля, которые могут быть заполнены только по отдельности, заполнены вместеmax_block_countПревышено максимальное число инлайн-полей в блокеnot_existОбъект не существует (используется для проверки message в тестах редактирования и удаления)FormAddTestMixIn(FormTestMixIn)название полязначение по умолчаниюописаниепример использованияurl_add‘’URL, по которому добавляются объекты. Включает все тесты на добавлениеurl_add = ‘modelname:url_name_add’ или url_add = ‘/path/to/add/’FormEditTestMixIn(FormTestMixIn)название полязначение по умолчаниюописаниепример использованияsecond_save_availableTrueДоступно ли повторное сохранение объекта при редактировании. Позволяет выключить проверки повторного сохранения, если после редактирования объект меняет статус или по другим причинам становится нередактируемымsecond_save_available = Falseurl_edit‘’URL, по которому редактируются объекты. Включает все тесты на редактированиеurl_edit = ‘modelname:url_name_change’ или url_edit = ‘/path/to/edit/1/’ (в этом случае по умолчанию для редактирования будет браться объект с pk=1)FormDeleteTestMixIn(FormTestMixIn)название полязначение по умолчаниюописаниепример использованияurl_delete‘’URL, по которому удаляются объектыurl_delete = ‘modelname:url_name_delete’ или url_delete = ‘/path/to/delete/1/’FormRemoveTestMixIn(FormTestMixIn)Тесты для объектов, удаление которых происходит в корзинуназвание полязначение по умолчаниюописаниепример использованияurl_delete‘’URL, по которому удаляются объектыurl_delete = ‘modelname:url_name_remove’ или url_delete = ‘/path/to/remove/1/’url_recovery‘’URL, по которому выполняется восстановление объектаurl_recovery = ‘modelname:url_name_recovery’ или url_recovery = ‘/path/to/recovery/1/’url_edit_in_trash‘’URL, по которому открывается страница редактирования объекта в корзинеurl_edit_in_trash = ‘modelname:url_name_trash_edit’ или url_edit_in_trash = ‘/path/to/trash/edit/1/’ChangePasswordMixIn(GlobalTestMixIn, LoginMixIn)Тесты смены пароля пользователяназвание полязначение по умолчаниюописаниепример использованияcurrent_password‘qwerty’Пароль редактируемого пользователяcurrent_password = ‘qwerty’field_old_passwordNoneПоле для ввода старого пароляfield_old_password = ‘old_password’field_passwordNoneПоле для ввода нового пароляfield_password = ‘password1’field_password_repeatNoneПоле для ввода подтверждения нового пароляfield_password_repeat = ‘password2’password_max_length128Максимальная допустимая длина пароляpassword_max_length = 128password_min_length6Минимальная допустимая длина пароляpassword_min_length = 6password_paramsdefault_params или {field_old_password: current_password, field_password: some_new_value, field_password_repeat: some_new_value}Параметры по умолчанию, которые используются для смены пароляpassword_params = {‘password1’: ‘qwe123’, ‘password2’: ‘qwe123’}objNoneМодель пользователяobj = Userpassword_positive_values[get_randname(10, ‘w’) + str(randint(0, 9)), str(randint(0, 9)) + get_randname(10, ‘w’), get_randname(10, ‘w’).upper() + str(randint(0, 9)), ]Допустимые значения для пароляpassword_positive_values = [‘qwe+’, ‘qwe*’, ‘QwE1’]password_similar_fieldsNoneПоля в модели пользователя, на значения которых не должен быть похож новый парольpassword_similar_fields = (‘email’, ‘first_name’)password_wrong_values[‘йцукенг’, ]Недопустимые значения для пароля (с допустимой длиной)password_wrong_values = [‘qwerty’, ‘йцукен’, ‘123456’]url_change_password‘’URL, по которому выполняется смена пароля. Если не содержит pk пользователя, задавать как /url/, иначе - можно задавать через urlnameurl_change_password = ‘admin:auth_user_password_change’LoginTestMixInТесты логина пользователяназвание полязначение по умолчаниюописаниепример использованияblacklist_modelNoneМодель объекта, в котором хранится информация о некорректных логинах с ipblacklist_model = BlackListdefault_params{self.field_username: self.username, self.field_password: self.password}Параметры по умолчанию, которые используются для логина пользователяdefault_params = {‘username’:‘test@test.test’, ‘password’: ‘qwerty’}field_password‘password’Поле для ввода пароляfield_password = ‘password’field_username‘username’Поле для ввода юзернеймаfield_username = ‘username’password‘qwerty’Пароль тестируемого пользователяpassword = ‘qwerty’passwords_for_check[]Пароли для проверки (будут проверены все)passwords_for_check = [‘qwerty’, ‘йцукен’, ‘123456’]objNoneМодель пользователяobj = UserusernameNoneЮзернейм тестируемого пользователяusername =‘test@test.test’url_login‘’URL для логинаurl_login = ‘admin:login’url_redirect_to‘’URL на который выполняется редирект после логинаurl_redirect_to = ‘accounts:cabinet’urls_for_redirect[‘/’, ]Урлы, доступные пользователю (будет выбран один для проверки редиректа)urls_for_redirect = [‘accounts:profile’,]Дополнительные настройкиМогут быть переопределены в django settingsНазваниеЗначение по умолчаниюОписаниеCAPTCHA_TYPE‘simplecaptcha’тип используемой в проекте капчи. ‘supercaptcha’ или ‘simplecaptcha’COLORIZE_TESTSFalseраскраска вывода результатов тестовLOGIN_URL_NAME‘login’url, по которому выполняется логинLOGOUT_URL_NAME‘auth_logout’url, по которому выполняется логаутERROR_MESSAGES{}переопределение сообщений об ошибках для всего проектаSIMPLE_TEST_EMAILFalseгенерация случайных значений адресов электронной почты исключая спецсимволыTEST_DATE_INPUT_FORMATsettings.DATE_INPUT_FORMATS[0]формат входных значений датTEST_DATETIME_INPUT_FORMATsettings.DATETIME_INPUT_FORMATS[0]формат входных значений в datetime-поляхTEST_TIME_INPUT_FORMATsettings.TIME_INPUT_FORMATS[0]формат входных значений времениTEST_GENERATE_REAL_SIZE_FILETrueгенерация файлов с указанным размером. При False для обработки файлов используется FakeSizeMemoryFileUploadHandlerTEST_REAL_FORM_FIELDSFalseполучение полей из ответа сервера из content, а не contextTEST_SPEEDUP_EXPERIMENTALFalseускоряет выполнение тестов путем ранней обработки декораторовTEST_TRACEBACK_LIMITNoneглубина трейсбека в результатах тестовTEST_USE_REAL_SETTINGSFalseесли True, не переопределяются номера баз редиса, используются реальные пути для сохранения файлов