Тест равена пройти: Онлайн тест Равена (прогрессивные матрицы). Пройти тест бесплатно с результатом

Содержание

Где пройти тесты на профориентацию: выбор профессии онлайн.

Выпускников, которые за пару лет до поступления выбрали профессию и знают, куда пойти учиться, можно пересчитать по пальцам. Большинство же терзает страх неопределённости. Как выбрать профессию и не ошибиться? Помогут определиться со сферой деятельности тесты на профориентацию. Проверенные временем тесты — в подборке от Адукар.

В книгах и интернете много тестов на профориентацию, которые отличаются по содержанию и методике проведения. Если возьмёшься решать их все, то потратишь уйму времени. Из этого многообразия мы выбрали одни из самых популярных тестов: на определение IQ (матрицы Равена), типа темперамента (опросник Айзенка), методики Джона Голланда и Евгения Климова.

Матрицы Равена: определи свой IQ

Определить твои интеллектуальные способности поможет тест на IQ по матрицам Равена. Английский психолог Джон Равен разработал тест в 1936 году. Тогда уровень безграмотности был высок, поэтому для определения интеллекта учёный использовал не текст, а картинки. Это сделало тест на IQ уникальным, и по нему уже более 70 лет определяют уровень интеллекта. Ведь чтобы его пройти, не важно, на каком языке ты разговариваешь, кто ты по национальности и какая у тебя религия.

Тест на IQ поможет определить, какой труд подойдёт тебе больше: умственный или физический. Пройдя тест Равена, ты поймёшь, на что способен твой мозг и какая профессия тебе подойдёт.

Количество вопросов в тесте на IQ — 64, время прохождения — около 20 минут. Пройти тест на IQ бесплатно.

Как выбрать профессию: выясняем с помощью IQ-теста

Теренс Тао считается самым умным человеком 2018 года. Показатель его интеллекта достигает 230 единиц. В 24 года молодой гений работает профессором в вузе Лос-Анджелеса и является автором более 250 научных книг

Опросник Айзенка: определи тип темперамента

Выбирая профессию, учитывай свой тип темперамента. Медленный и ранимый меланхолик не сможет справиться с неугомонной детворой в саду. А подвижный холерик навряд ли будет рад монотонной офисной работе. Поэтому советуем пройти тест на определение типа темперамента (опросник Айзенка). Если ты учтёшь свои эмоциональные особенности при выборе профессии, то сможешь в будущем избежать выгорания и депрессии на работе.

Ганс Айзенк, автор теста, в своё время был одним из самых авторитетных и неоднозначных психологов. В 24 года получил в Лондоне степень доктора психологии и активно проводил исследования. В том числе в 1947 году создал тест на определение типа темперамента.

В тесте Айзенка 101 вопрос, время прохождения — около 10 минут. Пройти тест на тип темперамента бесплатно.

Как выбрать профессию по типу темперамента?

Тест Джона Голланда: найди сферу интересов

Круг твоих поисков заметно сузится после того, как пройдёшь тест Джона Голланда на определение профессионального типа личности. Ответив на вопросы, ты узнаешь, какая профессиональная среда подходит твоему типу. Тебе станет значительно проще найти специальность внутри определённой рабочей сферы.

К своему главному исследованию автор теста пришёл не сразу. Психолог сам мечтал сделать карьеру музыканта, но после университета пришлось прослужить 3,5 года рядовым в армии, поработать интервьюером, испытательным инспектором, клерком, ассистентом психолога, карьерным консультантом. Заметив проблемы в тестах на профессиональное оценивание, учёный взялся за разработку более точного. Тест на определение профессионального типа личности Джона Голланда до сих пор используют в Европе на собеседовании в высших учебных заведениях и во время приёма на работу.

В тесте Голланда 42 вопроса, время прохождения — около 5 минут. Пройти тест на профессиональный тип личности можно бесплатно.

Как выбрать профессию: выясняем с помощью теста на профессиональный тип личности

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

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

Евгений Климов, прежде чем стать титаном профориентационной психологии, будучи студентом все 4 курса искал сферу своих научных интересов: детская психология, зоопсихология, трудотерапия в психиатрической клинике, производственное обучение. Его многолетние труды по психологии профориентации получили отражение в тесте на предмет деятельности. Тест Евгения Климова популярен в России и применяется для исследований в школах и Центрах занятости. По итогам теста ты узнаешь, какая группа профессий подходит тебе больше всего.

Тест состоит из 21 вопроса, время прохождения — около 5 минут. Пройти тест Климова бесплатно.

Как выбрать профессию: выясняем с помощью теста на профориентацию Климова

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

Где пройти тесты на профориентацию?

Пройти профессиональное тестирование можно вживую или онлайн. Если ты живёшь в довольно крупном городе, то наверняка найдёшь государственные или частные центры, где можно пройти тесты на профориентацию и получить их подробную интерпретацию от психолога-профориентолога. В Минске, к примеру, таких учреждений семь. Среди них — образовательный центр Адукар, где психолог с 25-летним стажем Анна Исаенко помогает абитуриентам найти своё призвание. Для этого нужно пройти онлайн психологический тест и записаться на консультацию. Во время беседы с профессионалом (в кабинете специалиста или по скайпу) ты определишь свои сильные стороны и без труда выберешь профессию.

На какое дело ты будешь тратить 10 000 часов в год? Сколько ты будешь зарабатывать? Ты решаешь сам… Мы помогаем ответить ответить на самый главный в жизни вопрос: «В какой профессии сможешь быть лучшим именно ты!»

Пройти тесты на профориентацию можно онлайн и бесплатно. Главное в этом случае отыскать качественный и удобный сервис. Их очень много, и перечислять все не имеет смысла. Просто введи в поисковой строке «пройти тест на профориентацию» и выбирай по списку удобный сайт. Мы же порекомендуем профориентационные тесты на сайте Адукар. Там есть все вышеупомянутые опросники: на определение IQ, типа темперамента, методики Голланда и Климова. Сервис очень удобный: понятно прописаны результаты тестирования, а к ним — профессии и сферы со ссылками на учреждения образования Беларуси. Так, чтобы ты определился с выбором профессии в максимально короткое время и без помощи специалиста.

В тестах на профориентацию Адукар ты получишь не только подробное описание, какими качествами обладаешь и какие твои сильные стороны. Ты узнаешь конкретные специализации со ссылками на вузы и ссузы Беларуси с подходящими программами обучения.

Помни: будущее в твоих руках. И один из шагов для его успешного определения — это выбор хорошей профессии. С помощью родных и специалистов либо самостоятельно, путём решения тестов на профориентацию.

Спасибо, что дочитал до конца. Мы рады, что были полезны. Чтобы получить больше информации, посмотри ещё:

Тесты в ЦТ онлайн

Как проходит онлайн-обучение в Адукаре

Бесплатный онлайн ЦТ-марафон 2.0 стартует в Адукаре 21 апреля!

Не пропускай важные новости и подписывайся на наш YouTube, ВК, Instagram, Telegram, Facebook и уведомления на adukar.by.

***

Если хотите разместить этот текст на своём сайте или в социальной сети, свяжись с нами по адресу [email protected] Перепечатка материалов возможна только с письменного согласия редакции.

Логический тест с ответами | Пройти тест бесплатно

Что вообще такое Логический тест (Тест Равена) и как к нему готовиться:

Данный тест измеряет индуктивные/логические способности, возможность гибко работать с незнакомой информацией и искать решения задач. Логический тест содержит 12 вопросов, кандидату представляется ряд фигур, состоящий из наборов символов, далее производится оценка его способностей распознавать структуру и определять следующую фигуру в логической последовательности, основываясь на абстрактно представленной информации.

Информация в тестах представлена в виде:

Логический тест или абстрактно-логический тест (Abstract Reasoning / Logical test) используется всеми компаниями Большой Четверки для всех отделов, от аудита до группы стратегий, а также крупными западными компаниями. Логические тесты необходимы для определения навыков кандидатов решать комплексные проблемы. Выполнение подобных тестов потребует владение несколькими умениями: навыков счета, логики и абстрактного мышления.

Собранные абстрактно-логические примеры теста похожи на те, что даются при определении уровня IQ. Там достаточно много заданий для решения, где надо вставлять пропущенные геометрические фигуры. Необходимо отыскать логическую связь между достаточно сложными объектами, к тому же фигуры трансформируются в соответствии с правилами, поворачиваясь на определенный угол, увеличивая количество компонентов, меняя расположение или цвет. Часто фигуры меняются по сложной системе с использованием нескольких правил трансформации.

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

Можно почти наверняка сказать, что логические тесты при приеме на работу соискатель встретит в компаниях сектора FMCG, то есть, в крупных корпорациях, производящих продукцию массового спроса. Procter&Gamble, Unilver, Mars, другие известнейшие компании с доходами в десятки миллиардов долларов требуют от своих сотрудников уметь обрабатывать неизвестные данные, причем делать это быстро, а ответы находить верные. Само собой, тесты на внимательность при приеме на работу используют и отечественные работодатели, чаще всего при наборе торговых представителей, менеджеров по продаже оптовой продукции и др.

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

Программа решает визуальный тест на IQ лучше людей

Пример матриц Равена — классического визуального теста.

Исследователи из Северо-Западного университета (Northwestern University) разработали вычислительную модель, которая решает задачи визуального теста (который ещё используют для оценки IQ) лучше, чем средний американец. Результаты работы опубликованы в журнале Psychological Review.

«Модель решает задачи не хуже 75% взрослых американцев, то есть, на уровне выше среднего, — говорит один из авторов исследования Кен Форбус (Ken Forbus). — Проблемы, сложные для людей, сложны и для модели, и это ещё одно доказательство того, что она обладает некоторыми важными для когнитивных способностей человека характеристиками». Каковы же эти характеристики? Исследователи считают, что главная особенность нашего интеллекта — способность находить аналогии. Мы постоянно сравниваем разные сущности между собой: когда выбираем фильм для вечернего просмотра, ищем подходящую модель смартфона или решаем, к кому обратиться за советом. По этому же принципу работает и обучение: люди применяют в одной ситуации навыки, которым научились в другой — при условии, что между ними есть что-то общее.

У людей уровень интеллекта, абстрактное мышление и способность искать аналогии оценивают с помощью визуальных тестов. Один из них называется «Стандартные прогрессивные матрицы Равена». Это классический и проверенный временем тест — его активно используют уже восемьдесят лет. Тест Равена содержит 60 заданий, распределённых по пяти сериям, в каждой из них сложность задач постепенно возрастает. В ходе теста человеку показывают таблицы или «матрицы» — рисунки с фигурами, связанными между собой определённой логической зависимостью. Одной фигуры недостаёт. Участнику теста нужно установить закономерность, связывающую между собой элементы и выбрать недостающий фрагмент из 6-8 предлагаемых вариантов. «Тест Равена — это лучший предиктор того, что психологи называют «подвижным интеллектом», то есть способностью абстрактно мыслить, логически рассуждать, распознавать закономерности, решать проблемы и находить взаимосвязи», — говорит один из авторов исследования, Эндрю Ловетт (Andrew Lovett).

Учёные решили доказать, что способность искать аналогии лежит в основе как решения визуальных задач, так и интеллекта в целом. Для этого они разработали вычислительную модель, способную пройти тест Равена. В её основе лежат система CogSketch и модель структурного отображения (Structure mapping engine, SME). CogSketch — платформа, созданная исследователями в прошлом году. Она способна «понимать» пространственные отношения между объектами двумерных изображений — их можно рисовать самому или импортировать извне. Собственного «зрения» у программы нет, пользователю приходится разделять рисунок на отдельные объекты, и на основе этой информации CogSketch вычисляет положение в пространстве и топологию — то есть, определяет, содержит ли один объект другой, пересекаются ли они и т. д. То есть для того, чтобы модель могла решать задачи теста Равена, таблицы с задачами надо перевести в понятный системе формат с помощью CogSketch. Но одного «понимания» картинки для решения мало: нужно найти сходства и различия между рисунками, а затем сгенерировать ответ на основе этих данных. Этим занимается SME — модель для поиска аналогий и сравнения объектов.

Чтобы работу модели было с чем сравнить, исследователи попросили студентов Северо-Западного университета пройти тест Равена. В эксперименте приняли участие 46 человек в возрасте от 18 до 22 лет. Они решили 36 задач на компьютере — это позволило учёным определить, сколько времени требовалось, чтобы завершить задание и какие варианты рассматривали студенты. Затем научная группа запустила симуляцию на модели, на этот раз компьютеру нужно было решить все 60 заданий теста. Программа справилась с 56 матрицами из 60. Студенты, в среднем, решали 30 из 36 — что было бы примерно равно 54/60, если бы их заставляли бы проходить тест целиком. Таким образом, модель обошла человека, и согласно нормам, принятым в США в 1993 году, показала результат «выше среднего».

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

Тест IQ на Русском языке

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

Коэффициент интеллекта (IQ) представляет собой общий балл, полученный из нескольких стандартизированных тестов, предназначенных для оценки человеческого интеллекта. Результаты корректируются в соответствии с возрастной группой.

Есть много тестов интеллекта.
Приложение IQ Test на Русском языке основано на Тест Равена (Коэффициент умственного развития) - Raven IQ .

Тест Равена (или Тест айкью Равена) включает в себя шестьдесят вопросов. Приложение имеет три варианта - полный тест интеллекта, состоящий из 60 вопросов, умеренный тест айкью с 30 вопросами и быстрый тест, который сокращен до 15 вопросов.

Мы предоставляем бесплатный тест айкью для всех, и он подходит для любого возраста, для детей в возрасте до 15 лет бесплатный тест IQ использует матрицы коррекции Raven для корректировки оценки IQ и представления достоверных результатов.

Продолжительность теста ограничена до 40 минут для полного теста, 20 минут для промежуточного теста и 10 минут для короткого теста.
Результаты теста - распределение IQ обычно дает колоколообразный график, подобный нормальному.
Средний IQ равен 100. Самый высокий балл - 175, а самый низкий - 25.

Только результаты полного теста являются достоверными. Краткосрочные тесты были созданы для людей, которые не хотят тратить 40 минут и еще предстоит пройти тестирование. В этих пунктах важно принимать во внимание, что полученная оценка является неточной и ненадежной.

Raven's Progressive Matrices были разработаны для использования в фундаментальных исследованиях генетических и экологических детерминант «интеллекта».
Интеллектуальные тесты Raven Progressive Matrices (RPM) (из которых несколько версий) состоят из серии диаграмм или рисунков с отсутствующей частью.
Ожидается, что те, кто проводит тесты, выберут правильную деталь для завершения дизайна из ряда вариантов, напечатанных ниже.
Большинство тестов в этом приложении проводилось с помощью теста стандартных прогрессивных матриц.

Важно отметить, что СЗМ с самого начала, как известно, обладал определенными сильными сторонами и ограничениями.
Его сильные стороны заключались в том, что он мог использоваться с респондентами всех возрастов от раннего детства до престарелого возраста и имел такую ​​длину, которую он мог разумно применять в домах, школах и на рабочих местах.
Баллы преобразуются в IQ по возрасту в соответствии с матрицами Raven.

Возможность сделать селфи и ввести свое имя, прежде чем делиться результатами с друзьями.

Кредиты:

Icon и IQ Оценка изображений по:
https://commons.wikimedia.org/wiki/File:Synapse_in_brain.jpg
Лицензия - cc-by-2.0, кредит - Аллан Аджифо

Промо изображение на основе:
https://commons.wikimedia.org/wiki/File:Human_evolution_scheme. svg
Лицензия: CC BY-SA 3.0, кредит - Хосе-Мануэль Бенитос

Рекомендации:

Raven (2000). Прогрессивные матрицы Raven: изменение и стабильность над культурой и временем
Источник: http://eyeonsociety.co.uk/resources/RPMChangeAndStability.pdf

Уильям Х. Андофф (1984). Шкалы, нормы и эквивалентные показатели
Источник: http://www.ets.org/Media/Research/pdf/Angoff.Scales.Norms.Equiv.Scores.pdf
-----------

тест люшера пройти онлайн

тест люшера пройти онлайн

Сообщения без ответа | Активные вопросы




Часовой пояс: UTC + 4 час


Вы не можете задавать вопросы
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете отвечать на сообщения

® Media Forum

тест люшера пройти онлайн

Link on YouTube У нас вы можете пройти полный тест Люшера бесплатно в онлайн. На нашем сайте вы сможете тест люшера пройти онлайн Сюда Сюда Цветовой тест Люшера онлайн пройти iq тест бесплатно, психологические тесты iq, тест определения iq, тест iq online Тест Люшера. Пройти тестирование по Вы можете пройти iq тест Равена в Основу цветового теста Люшера составляют результаты, полученные сугубо опытном путем, и Вам будет представлено изображение восьми цветных карточек. Выберите, пожалуйста Прочитать здесь Предлагаем Вам пройти тест равена, интерпретация теста равена, прогрессивные матрицы Пройти тест Люшера онлайн. Цветовой Люшер, Тест Люшера, Пройти тест Люшера, Тест Люшера онлайн, Тест Люшера пройти бесплатно Пройти полный цветовой тест Люшера Цветовой тест Люшера — психологический тест, разработанный доктором Максом Люшером. Тест Люшера - Тесты. Психологические Как пройти тест - Первый вопрос: как правило, программа просит вас представиться. Iq тест и тест Люшера онлайн - узнайте тест люшера пройти онлайн Тест Люшера Вам будет представлено изображение восьми цветных карточек. Выберите, пожалуйста Тест Люшера. Пройти бесплатно и онлайн. Полный цветовой тест Люшера Психологические тесты онлайн. Банк тест люшера пройти онлайн Тестов электронные книги 9 электронных книг Александра Тестова. Купить и скачать + чтение online Пройти полный тест Люшера бесплатно

Пройти тест на похудение онлайн бесплатно

Nov 24, 2018 · Похудение врачи: тесты, советы врачей и питание. В конце вы сможете записаться на вебинар врача про похудение, как уменьшить живот без специальных диет. 13.04.2019 - Похудение. Врачи советуют пройти тесты на ИМТ и следить за питанием, чтобы восстановить обмен. Похудение: врачи плохого не посоветуют Похудение врачи: тесты, советы врачей и питание Похудение. Врачи советуют пройти тесты на ИМТ и следить за питанием, чтобы восстановить обмен. На вопросы о похудении отвечает врач-гастроэнтеролог Японский врач Фукуцудзи

10 способов похудеть дешево Полезная еда, которая мешает похудеть. 19 Июня 2020 13:10 . Как быстро похудеть: ТОП-10 самых дешевых способов 10 октября 2013 Как быстро похудеть - это не вопрос, а уже целая наука. Apr 27, 2019 · Можно ли похудеть на 10 кг за неделю без диет. Как правильно . Как похудеть на 10 кг : самые популярные и эффективные способы . Как быстро . Как я сбросила 10кг . Как похудеть без диет и спорта: 10 простых способов. Большинство людей в наше время считает, что для похудения необходимо обязательно сидеть на ди

Как успешно пройти тесты на собеседовании?

В том, чтобы заранее готовиться к сложным элементам интервью с рекрутером, нет ничего неправильного. Предугадывать вопросы, знать примерные или точные ответы на различные задания – это не запрещенные уловки и хитрости соискателя, а его легальный способ чувствовать себя гораздо спокойнее и увереннее. Что касается HR-специалистов, то при дополнительной необходимости они всегда найдут возможность проверить кандидата в условиях стресса.

Вопрос: Здравствуйте! В последнее время все чаще при отборе кандидатов на самые разные должности HR-специалисты проводят тестирования, и обычно на это отводится ограниченное время. Недавно мне предложили тест, где за 12 минут предлагалось ответить на 50 вопросов. Честно признаюсь, это было сложно. Задания были на логику и нетрудную математику, но именно из-за того, что времени отводилось очень мало, общее впечатление оказалось удручающим. Я не знаю результатов теста, но, по моим ощущениям, это тотальный провал, потому что до последних трех страниц вопросов (из 10-ти) я даже не дошла. Подскажите, пожалуйста, ресурс, где есть возможность потренироваться в прохождении подобных тестов. Буду весьма признательна!

Ольга Гаврилова, заместитель директора по персоналу АКГ «Градиент Альфа»

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

Конечно, умение анализировать можно развивать, и в этом поможет решение ситуационных загадок, задач, головоломок. В качестве примеров IQ-тестов, помогающих выявить уровень логического мыщления, можно привести следующие:

1. Тест Айзенка  – наиболее известный, в настоящее время существует не менее восьми его вариантов. Образцы можно найти в печатных изданиях (например, Айзенк Г. «Новые IQ тесты»).

2. Тест Векслера  – более детальный, но достаточно сложный в интерпретации.

3. Несколько менее популярны тесты Равена , Амтхауэра и Кэттелла.

Екатерина Рождественская, старший консультант HR / Admin / Finance / Legal, рекрутинговое агентство Avanta Personnel Adecco Group Russia (г. Санкт-Петербург)

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

Перед контрольным тестированием важно хорошо подготовиться. Я советую книгу Хейди Смит «Как сдавать числовые тесты для проверки ваших способностей. Основные приемы шаг за шагом» (издательство АСТ. Астрель, 2005 г.).

На сайте также можно пройти пробный тест (в разделе Resources/Practice Tests), только прежде нужно выбрать русский язык.

Юлия Губанова, директор департамента кадрового консультирования, ЗАО КГ «Бизнес-КРУГ»

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

Кроме того, в зависимости от специфики профессии рекрутеры применяют тесты на эмоциональный интеллект, проективные методики (рисунок несуществующего животного, дом-дерево-человек, незаконченные предложения, тест Люшера и т.д.) и даже ММPI.

Екатерина Смирнова, консультант по карьере и наставник по поиску работы, компания Job Search Coach:

— Вы можете зарегистрироваться и потренироваться на бесплатных тестах-образцах на сайтах www.shl.ru и www.detech-group.com.

Елена Белова, независимый консультант

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

В последнее время как в крупных российских, так и зарубежных компаниях также широко применяются SHL-тесты (онлайн-тесты, состоящие из четырех блоков вопросов – логического, математического, словесного и общего). У каждого работодателя для конкретной вакансии свой проходной балл, причем не все и не всегда используют все четыре блока – только те, которые имеют отношение к специальности. Например, кандидат на «финансовую» вакансию наверняка будет выполнять математический и логический блок, либо результаты именно этих вопросов будут учитываться особенно строго. Соискательская же практика показывает, что чем лучше тренировка, тем лучше результат, поэтому можно попробовать найти варианты SHL-тестов в Интернете (лучше на их же сайте попробовать свои силы в демо-версии). Другой вариант, самый бюджетный – посмотреть задачники и школьные учебники, порешать примеры с учетом фактора дефицита времени (будильник в помощь!).

Самое главное – учиться держать себя в руках и демонстрировать профессиональную состоятельность вне зависимости от времени и обстоятельств. Успехов!

Планета HR

{2}} \] где Z ij может иметь один из следующие три определения:
  1. \ (Z_ {ij} = | Y_ {ij} - \ bar {Y} _ {i.} | \)

    где \ (\ bar {Y} _ {i.} \) это среднее значение i -я подгруппа.

  2. \ (Z_ {ij} = | Y_ {ij} - \ tilde {Y} _ {i.} | \)

    где \ (\ тильда {Y} _ {я.} \) это медиана i -я подгруппа.

  3. \ (Z_ {ij} = | Y_ {ij} - \ bar {Y} _ {i.} '| \)

    где \ (\ bar {Y} _ {i.} '\) это 10% обрезано среднее значение i -й подгруппы.

\ (\ bar {Z} _ {i.} \) - средние групповые значения Z ij и \ (\ bar {Z} _ {..} \) - общее среднее значение Z ij .

Три варианта определения Z ij определить надежность и мощность теста Левена. Под надежностью мы понимаем способность теста не ложно обнаруживают неравные отклонения, когда базовый данные не распределяются нормально, а переменные фактически равны.Под мощностью мы подразумеваем способность теста для обнаружения неравных отклонений, когда отклонения на самом деле неравный.

В оригинальной статье Левена предлагается использовать только среднее. Браун и Форсайт (1974)) расширил тест Левена, чтобы использовать либо медиана или усеченное среднее в дополнение к среднему. Они провели исследования Монте-Карло, которые показали, что использование усеченного среднего значения лучше всего работает, когда базовый данные следовали распределению Коши (т.{2} _ {4} \) (т.е. перекошенный) распределение. Использование среднего дает наилучшую мощность для симметричных распределений с умеренным хвостом.

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

3 RackUnit API

3 RackUnit API

3.1 Обзор RackUnit

В RackUnit есть три основных концепции:

  • Проверка - это основная единица теста. Как имя подсказывает, проверяет, выполняется ли какое-то условие.

  • Контрольный пример - это группа проверок, образующих одну концептуальная единица. Если какая-либо проверка в рамках дела не удалась, все дело терпит неудачу.

  • Набор тестов - это группа наборов тестов и наборов тестов. у которого есть имя.

3.2 Проверки

Проверки являются основным строительным блоком RackUnit. Проверка проверяет какое-то условие и всегда оценивается как (недействительно). Если условие не выполняется, check сообщит об ошибке, используя текущий стек контрольной информации (см. current-check-handler для настройки обработки сбоев).

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

3.2.1 Основные проверки

Ниже приведены основные проверки, которые выполняет RackUnit. Ты можете создавать свои собственные чеки с помощью define-check.

Проверяет, что v1 равно (или не равно) v2, используя eq ?, eqv? или равный? соответственно. В необязательное сообщение включается в вывод, если проверка терпит неудачу.

Например, все следующие проверки терпят неудачу:

> (check-eq? (List 1) (list 1) «выделенные данные не eq?»)

----- ---------------

ОТКАЗ

имя: check-eq?

расположение: eval: 3: 0

сообщение: "выделенные данные не эквалайзеры?"

фактический: '(1)

ожидаемый:' (1)

--------------------

> (check-not-eq? 1 1 «фиксированные числа равны?»)

----------------- ---

ОТКАЗ

имя: check-not-eq?

расположение: eval: 4: 0

params: '(1 1)

сообщение: "fixnums are eq?"

--------------------

> (check-eqv? 1 1.0 "not eqv?")

--------------------

ОТКАЗ

имя: чек-экв?

расположение: eval: 5: 0

сообщение: "not eqv?"

фактический: 1

ожидаемый: 1.0

--------------------

> (check-not-eqv? 1 1 "целые числа равны eqv?")

--------------------

ОТКАЗ

имя: check-not-eqv?

расположение: eval: 6: 0

params: '(1 1)

сообщение: "целые числа равны eqv?"

--------------------

> (проверить равно? 1 1.0 «не равно?»)

--------------------

ОТКАЗ

имя: чек-равный?

расположение: eval: 7: 0

сообщение: «не равно?»

фактический: 1

ожидаемый: 1.0

--------------------

> (проверить-не-равно? (Список 1) (список 1) «равно?»)

------------------- -

ОТКАЗ

имя: проверить-не равно?

расположение: eval: 8: 0

params: '((1) (1))

сообщение: "равно?"

--------------------

Проверяет, что pred возвращает значение, отличное от #f, когда применительно к v.Необязательное сообщение включено в вывод, если проверка не удалась. Значение, возвращаемое успешным check - это значение, возвращаемое функцией pred.

Например, проходит следующая проверка:

Следующая проверка не выполняется:

> (номер предварительной проверки? «Я не справлюсь»)

--------------------

FAILURE

name: check-pred

location: eval: 10: 0

params: '(# "I fail")

--------------------

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

Например, следующие проверки пройдены:

> (check- = 1,0 1,01 0,02 «Я работаю»)

Следующая проверка не выполняется:

> (check- = 1.0 1.01 0.005 "I fail")

--------------------

FAILURE

name: check- =

location: eval: 12: 0

params: '(1.0 1,01 0,005)

сообщение: «Я не могу»

--------------------

Проверяет, что v1 и v2 равны? для каждого другое, позволяя числам внутри них отличаться на максимум эпсилон друг от друга. Если (равно? V1 v2) будет называть равным? для частей, которые являются числами, тогда эти числа считается «достаточно хорошим», если они находятся в пределах эпсилона.

Например, проходят следующие проверки:

И следующие проверки не проходят:

> (регистрация (список 6e + 23 10.0) (список 6.02e + 23 9.8) 0,05)

--------------------

ОТКАЗ

имя: проверка внутри

расположение: eval: 16: 0

фактическое: '(6e + 23 10.0)

ожидается:' (6.02e + 23 9.8)

--------------------

> (проверка внутри (хэш 'C 18' F 64) (хэш 'C 25' F 77) 10)

--------------------

ОТКАЗ

имя: проверка внутри

расположение: eval: 17: 0

актуально: '#hash ((C.18) (F. 64))

ожидается: '#hash ((C. 25) (F. 77))

------------- -------

Добавлено в версии 1.10 пакета rackunit-lib.

Проверяет, что v равно #t, равно #f или нет #f соответственно. Необязательное сообщение включено в выводе, если проверка не удалась.

Например, все следующие проверки терпят неудачу:

> (проверка верна 1)

------------------- -

ОТКАЗ

имя: check-true

расположение: eval: 18: 0

params: '(1)

--------------------

> (проверка-ложь 1)

------- -------------

ОТКАЗ

имя: проверка-ложь

расположение: eval: 19: 0

params: '(1)

--------------------

> (check-not-false #f)

--------------------

ОТКАЗ

имя: check-not- ложь

расположение: eval: 20: 0

params: '(#f)

----------------- ---

Проверяет, что преобразователь вызывает исключение и что либо exn-predicate возвращает истинное значение, если это функция, или что он соответствует сообщению в исключении, если exn-predicate это регулярное выражение.В последнем случае возникшее исключение должно быть exn: fail ?. Необязательное сообщение включено в вывод, если проверка не удалась. Распространенная ошибка - использовать выражение вместо функции без аргументов для преобразователя. Помнить что проверки концептуально являются функциями.

Например, следующие проверки выполнены успешно:

Следующая проверка не выполняется:

--------------------

ОШИБКА

имя: check-exn

расположение: eval: 23: 0

params: '(# # <процедура>)

пользовательский перерыв

--------------------

Следующий пример - распространенная ошибка.Призыв к ошибке не находится в лямбде, поэтому он обходит проверку-exn полностью.

; Забыл обернуть выражение в танк. Не делай этого!

привет: есть

Проверяет, что преобразователь не вызывает никаких исключений. Необязательное сообщение включается в вывод, если проверка не удалась.

> (check-not-exn (λ () 1))
> (check-not-exn (λ () (car '())))

--------------------

ОТКАЗ

имя: check-not-exn

расположение: eval: 26: 0

params: '(# )

сообщение: «Исключение возникло»

сообщение-исключение: «автомобиль: нарушение контракта \ n ожидается: пара ? \ n given: '() "

исключение:

# (struct: exn: fail: contract" car: нарушение контракта \ n ожидается: пара? \ n given:' () "# )

--------------------

> (ch eck-not-exn (λ () (/ 1 0)) «не делить на 0»)

------------------ -

FAILURE

name: check-not-exn

location: eval: 27: 0

params: '(# )

сообщение: «не делить на 0»

сообщение-исключение: «/: деление на ноль»

исключение:

# (struct : exn: fail: contract: деление на ноль "/: деление на ноль" # <метка-продолжение>)

---------------- ----

Проверяет соответствие регулярного выражения строке.

Например, следующая проверка прошла успешно:

Следующая проверка не прошла:

> (check-regexp-match "a + bba" "aaaabbba")

--- -----------------

FAILURE

name: check-regexp-match

location: eval: 29: 0

params: '("a + bba" "aaaabbba")

--------------------

Проверка совпадения шаблона с тестовым значением.Соответствует контрольному значению v против шаблона в качестве предложения соответствия. Если нет pred предоставляется, тогда, если совпадение будет успешным, вся проверка удается. Например, это использование успешно:

Эта проверка не соответствует:

> (проверка соответствия (список 1 2 3) (список _ _ 4))

---- ----------------

ОТКАЗ

имя: контрольное соответствие

расположение: оценка: 31: 0

фактическое: '(1 2 3)

ожидается:' (список _ _ 4)

------------------ -

Если указано pred, оно оценивается с привязками из шаблон соответствия.Если он выдает #t, вся проверка завершается успешно, в противном случае это не удается. Например, это использование успешно, привязка x в предикате:

Эта проверка не выполняется, потому что предикат не работает:

> (контрольное соответствие 6 x (нечетное? x))

--------- -----------

ОТКАЗ

имя: контрольное соответствие

расположение: eval: 33: 0

фактическое: 6

ожидается: 'x

--------------------

Эта проверка не выполняется, потому что несоответствия:

> (контрольное соответствие (список 1 2) (список x) (нечетное? x))

----------- ---------

ОТКАЗ

имя: контрольное соответствие

расположение: eval: 34: 0

фактическое: '(1 2)

ожидается:' (список x)

------------- -------

Самый общий чек.Успешно, если op применен к v1 и v2 не #f, иначе возникает исключение типа exn: test: check. Необязательный сообщение включается в вывод, если проверка не удалась.

Например, следующая проверка прошла успешно:

Следующая проверка не прошла:

> (проверьте memq 'сосна' (яблоко-апельсин груша))

------- -------------

ОТКАЗ

имя: проверить

расположение: eval: 36: 0

параметры: '(# <процедура: memq> сосна (яблоко апельсин груша))

--------------------

Эта проверка безоговорочно не выполняется.Подходит для создания тестовых заглушек, вы собираетесь заполнить позже. Необязательное сообщение включены в вывод.

3.2.2 Дополнительная информация о неудачной проверке

Если проверка не удалась, она может добавить информацию о сбой в стеке контрольной информации RackUnit. Дополнительная информация может быть сохранена с помощью with-check-info * функция и макрос with-check-info.

Структура контрольной информации хранит информацию связанный с контекстом выполнения проверки. Значение обычно записывается в сообщении об ошибке проверки с помощью записи, но Библиотека Rackunit предоставляет несколько специальных оболочек форматирования это может повлиять на то, как печатается значение контрольной информации.

Изменено в версии 1.6 пакета rackunit-lib: Изменено с непрозрачного на прозрачный

#: transparent)
value: string?
Специальная оболочка вокруг строки для использования в качестве значения контрольной информации. Когда отображается в сообщении об ошибке проверки, значение отображается без Котировки. Используется для печати сообщений вместо записи значений.
> (строка-информация-проверка)

--------------------

ОТКАЗ

name: string-info-check

location: eval: 38: 0

params: '()

value: "hello world"

сообщение: hello world

--------------------

Добавлено в версии 1.2 из пакета rackunit-lib.

Специальная оболочка вокруг списка контрольной информации для использования в качестве значение контрольной информации. Контрольная информация, значение которой является вложенной информацией, отображается в виде подпоследовательности информации с отступом. Вложенная информация может быть размещена внутри вложенной информации, что дает больший отступ.
> (nested-info-check)

foo: «foo»

--------------------

ОТКАЗ

имя: nested-info-check

расположение: eval: 40: 0

params: '()

nested:

bar: «bar»

--------------------

Добавлено в версии 1.7 из пакета rackunit-lib.

#: transparent)
proc: (-> any / c)
Специальная оболочка для процедуры, которая производит значение для чек-информация. Когда в проверочной информации отображается динамическая информация stack вызывается proc, чтобы определить, какое значение отображать.

--------------------

ОТКАЗ

current-dir:

# <путь: / home / scheme / pltbuild / racket / build / user / 8.0 / pkgs / rackunit-doc / rackunit />

имя: проверить-равно?

расположение: eval: 41: 0

фактическое: 1

ожидаемое: 2

------------- -------

--------------------

ОТКАЗ

current-dir: # <путь: / var / tmp />

name: check-equal?

расположение: eval: 41: 0

фактическое: 1

ожидаемое: 2

------------- -------

Значение, возвращаемое процедурой, может само быть специальным значением форматирования например, вложенная информация (или даже другая динамическая информация), в которой если это значение отображается так, как если бы оно не было заключено в динамическая информация.

> (определить current-foo (make-parameter #f))

--------------------

НЕИСПРАВНОСТЬ

foo: #f

имя: check-equal?

расположение: eval: 43: 0

фактическое: 1

ожидаемое: 2

------------- -------

--------------------

ОТКАЗ

foo:

вложено: foo

имя: check-equal?

расположение: eval: 43: 0

фактическое: 1

ожидаемое: 2

------------- -------

Добавлено в версии 1.9 из пакета rackunit-lib.

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

Помещает данную информацию в стек контрольной информации для продолжительность (динамический масштаб) выполнения thunk

--------------------

ОТКАЗ

время: 1612413004

имя: проверка

расположение: eval: 44: 0

параметры: '(# <процедура: => 1 2)

----- ---------------

Если эта проверка не удалась, появляется сообщение

время: <текущие секунды во время выполнения- check>

печатается вместе с обычной информацией об ошибке проверки.

Макрос with-check-info подталкивает заданный информация в стек контрольной информации на время исполнения телесных выражений. Каждое имя должно быть символ в кавычках, и каждый val должен быть значением.

--------------------

ОТКАЗ

токовый элемент: 8

имя: check-pred

расположение: eval: 45: 0

params: '(# 8)

- ------------------

Когда этот тест не проходит, отображается сообщение

вместе с обычной информацией об ошибке проверки.

--------------------

ОТКАЗ

имя: имя

расположение: eval: 46: 0

params: '(#f)

------------------ -

Сообщение об ошибке выше должно включать «имя, но не 'Фамилия.

3.2.3 Пользовательские проверки

Пользовательские проверки могут быть определены с помощью команды define-check и его варианты. Для эффективного использования этих макросов полезно чтобы понять некоторые подробности об оценке чека модель.

Во-первых, чек следует рассматривать как функцию, даже хотя в большинстве случаев это макросы. В частности, чеки всегда оценивайте свои аргументы ровно один раз перед выполнение любых выражений в теле проверок. Следовательно если вы хотите написать проверки, оценивающие пользовательский код этот код должен быть заключен в преобразователь (функция не аргументы) пользователем.Предопределенный check-exn является примером этого типа проверки.

Во-вторых, проверки добавляют информацию в стек проверочной информации: внутренний список структур контрольной информации, которые RackUnit интерпретирует в сообщения об ошибках сборки. Базовые проверки рассматривают стек как источник необязательных аргументов; если в стеке отсутствует какая-то информация, тогда проверка может предоставить значение по умолчанию. Например, чек-равен? добавляет местоположение источника по умолчанию, если стек чек-информации не содержит чек-инфо с именем 'место (см. место проведения проверки).

Макрос define-simple-check создает проверку названное имя, которое принимает параметры и необязательный сообщение в качестве аргументов и оценивает тела. В проверка не удалась, если результат последнего тела #f. В противном случае проверка будет успешной.

Простые проверки не могут предоставить дополнительную информацию с помощью с проверкой информации внутри их тела.

Например, следующий код определяет чек-чек-нечет?

Мы можем использовать эти чеки обычным образом:

> (чек-нечет? 3)
> (чек-нечет? 2)

---- ----------------

ОТКАЗ

имя: чек-нечет?

расположение: eval: 49: 0

params: '(2)

------------------- -

Макрос define-binary-check создает проверку который проверяет бинарный предикат.Он добавляет фактические и ожидаемые значения к стек чек-информации. Первая форма define-binary-check принимает двоичный предикат и проверяет, выполняется ли предикат для данного значения. Вторая форма проверяет, действительно ли последнее тело оценивается как не ложное значение.

Вот первая форма, в которой мы используем предопределенный предикат для построения двоичной проверки:

Используется:

Если выражение более сложное, вторая форма должна использоваться. Например, ниже мы определяем двоичную проверку, которая проверяет, находится ли число в пределах 0.01 ожидаемого значения:

Макрос define-check аналогичен define-simple-check, за исключением того, что проверка завершается неудачно если в теле проверки вызывается fail-check. Это позволяет проводить более гибкие проверки и, в частности, более гибкие. варианты отчетности.
> (чек? 0)
> (чек? 1)

--------------- -----

НЕИСПРАВНОСТЬ

название: чек-чек?

расположение: eval: 55: 0

params: '(1)

------------------- -

Проверки, определенные с помощью define-check, добавление исходного местоположения и источника синтаксис на месте их использования в стек контрольной информации, если только стек уже содержит значения для ключей 'location и' выражения.

> (проверка-равно? 0 1)

--------------------

ОТКАЗ

имя: чек-равно?

расположение: eval: 56: 0

фактическое: 0

ожидаемое: 1

------------- -------

--------------------

ОТКАЗ

расположение: нестандартное: 6: 1

имя: проверить-равно?

фактический: 0

ожидаемый: 1

--------------------

Изменено в версии 1.9 из пакета rackunit-lib: документирован протокол для добавления информации о «местоположении и» выражении.

3.3 Формы комплексного тестирования
3.3.1 Тестовые примеры

По мере увеличения сложности программ единица тестирования вырастает за пределы единственной проверки. Например, это может быть случай что если одна проверка не удалась, нет смысла запускать Другой. Для решения этой проблемы можно использовать составные формы тестирования. использоваться для группировки выражений. Если какое-либо выражение в группе терпит неудачу (вызывая исключение) оставшиеся выражения не будет оцениваться.

Форма начала тестирования группирует участников в единичный блок. Если какой-либо expr не работает, следующие не оцениваются.

Например, в следующем коде мир не уничтожен, поскольку предыдущая проверка не удалась:

Как test-begin, за исключением того, что имя связано с тела. Имя будет сообщено, если тест не проходит.

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

(тестовый пример
«Пример теста»
(check-eq? 'A' b)
; Эта строка не будет запущена
(уничтожить- the-world))

Истина, если obj - это тестовый пример, и ложь в противном случае.

3.3.1.1 Ярлыки для определения тестовых случаев

Создает тестовый пример с заданным именем, который выполняет соответствующий чек. Например,

эквивалентно

3.3.2 Наборы тестов

Тестовые наборы сами могут быть сгруппированы в наборы тестов. А набор тестов может содержать как тестовые наборы, так и наборы тестов. В отличие от проверки или тестового примера, набор тестов не сразу запустить. Вместо этого используйте одну из функций, описанных в Пользовательские интерфейсы или программный запуск тестов и проверка результатов.

(имя набора тестов-выражение может быть-до, возможно, после теста ...)

5
57 9222 9025
возможно-до =
| #: до, до-thunk
возможно-после = #: after-thunk
Создает набор тестов с заданным именем и тестами.Тесты могут быть проверками, тестовыми примерами, построенными с использованием test-begin или test-case или другие наборы тестов.

Пре-преобразователь и преобразователь после необязательные преобразователи (функции без аргументов). Они бегут до и после запуска тестов соответственно.

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

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

Создает набор тестов с заданным именем, содержащий данные тесты. В отличие от формы набора тестов, тесты представлены в виде списка тестовых значений.

Верно, если obj - это набор тестов, иначе false.

3.3.2.1 Утилиты для определения наборов тестов

Есть несколько макросов, которые упрощают общие случаи определение наборов тестов:

Форма define-test-suite создает набор тестов с заданное имя (преобразованное в строку) и проверяет, и связывает это с таким же названием.

Например, этот код создает привязку для имени example-suite, а также создание набора тестов с имя "example-suite":

3.4 Поток управления тестированием

До, после и вокруг макросы позволяют указать код, который всегда запускался раньше, после или вокруг выражений в тестовом примере.

(перед before-expr expr-1 expr-2 ...)

Всякий раз, когда элемент управления входит в область действия, выполните before-expr перед выполнением expr-1 и expr-2...

(после expr-1 expr-2 ... after-expr)

Всякий раз, когда элемент управления выходит из области действия, выполните after-expr после выполнения expr-1 и expr-2 ... After-expr - это выполняется, даже если управление завершается через исключение или другим способом.

(около before-expr expr-1 expr-2 ... after-expr)

Всякий раз, когда элемент управления входит в область действия, выполните before-expr перед выполнением expr-1 expr-2..., и выполнять after-expr всякий раз, когда элемент управления покидает область видимости.

Пример:

Приведенный ниже тест проверяет, что файл test.dat содержит строка "foo". Действие до записывает в это файл. Действие after удаляет его.

Этот несколько любопытный макрос оценивает данные тесты в context, где current-test-case-around - это параметризован как test-suite-test-case-around. Этот был полезен при тестировании RackUnit. Это может быть полезно для вас, если вы создаете тестовые примеры, которые создают тестовые примеры.
3.5 Разные утилиты

Макрос require / expose позволяет получить доступ к привязки, которые модуль не предоставляет. Это полезно для тестирование приватных функций модулей.

Требуется идентификатор из модуля в текущий модуль. Это не имеет значения, предоставляет ли исходный модуль привязки или нет; require / expose все еще может добраться до них.

Обратите внимание, что require / expose может быть немного хрупким, особенно при смешивании с скомпилированным кодом. Используйте на свой риск!

В этом примере выполняется тест на сбой при изготовлении, который определен в тесте RackUnit:

(требуется / выставить стоечное устройство / частный / проверить-тест (сделать-сбой-тест))

3.6 Пользовательские интерфейсы

RackUnit предоставляет текстовый и графический пользовательский интерфейс

3.6.1 Текстовый пользовательский интерфейс

Текстовый интерфейс пользователя находится в модуле стойки / text-ui. Он запускается через функцию run-tests.

Данный тест запущен, и результат его выполнения вывод на порт вывода тока. На выходе совместим с командой Emacs next-error (X) (как используется, например, функцией компиляции (X) Emacs)

Необязательная многословность - это 'тихо, "нормальный" или "подробный".Тихий выход отображает только количество успехов, неудач и ошибок. Обычная отчетность подавляет некоторую постороннюю проверку информация (например, выражение). Подробные отчеты обо всех Информация.

run-tests возвращает количество неудачных тестов.

3.6.2 Графический интерфейс пользователя

RackUnit также предоставляет средство запуска тестов с графическим интерфейсом, доступное по адресу модуль стойки / графического интерфейса.

Создает новое окно графического интерфейса пользователя RackUnit и запускает каждый тест. В Графический интерфейс обновляется по мере завершения тестов.

Когда ждать? верно, test / gui не возвращается, пока окно тестового запуска было закрыто.

Для следующей программы графический интерфейс RackUnit будет выглядеть, как показано ниже:

Создает новое окно графического интерфейса RackUnit и возвращает процедуру, которая при применен, запускает указанные тесты и отображает результаты в графическом интерфейсе.

Определение T-теста

Что такое Т-тест?

T-тест - это тип выводимой статистики, используемый для определения значительного различия между средними значениями двух групп, которые могут быть связаны по определенным характеристикам.Это в основном используется, когда наборы данных, такие как набор данных, записанный как результат 100-кратного подбрасывания монеты, будут следовать нормальному распределению и могут иметь неизвестные отклонения. T-критерий используется в качестве инструмента проверки гипотез, который позволяет проверить предположение, применимое к совокупности.

T-критерий рассматривает t-статистику, значения t-распределения и степени свободы для определения статистической значимости. Чтобы провести тест с тремя или более средствами, необходимо использовать дисперсионный анализ.

Ключевые выводы

  • t-тест - это тип выводимой статистики, используемый для определения, есть ли значительная разница между средними значениями двух групп, которые могут быть связаны по определенным признакам.
  • t-критерий - один из многих тестов, используемых для проверки гипотез в статистике.
  • Для расчета t-критерия требуются три ключевых значения данных. Они включают разницу между средними значениями из каждого набора данных (называемую средней разницей), стандартное отклонение каждой группы и количество значений данных в каждой группе.
  • Существует несколько различных типов t-теста, которые могут быть выполнены в зависимости от данных и типа требуемого анализа.

Объяснение Т-теста

По сути, t-тест позволяет нам сравнивать средние значения двух наборов данных и определять, принадлежат ли они к одной и той же совокупности. В приведенных выше примерах, если мы возьмем выборку студентов из класса A и другую выборку студентов из класса B, мы не ожидаем, что у них будут точно такие же среднее значение и стандартное отклонение.Точно так же образцы, взятые из контрольной группы, получавшей плацебо, и образцы, взятые из группы прописанного лекарства, должны иметь немного разные среднее значение и стандартное отклонение.

Математически t-критерий берет выборку из каждого из двух наборов и устанавливает постановку задачи, принимая нулевую гипотезу о том, что два средних значения равны. На основе применимых формул вычисляются определенные значения и сравниваются со стандартными значениями, и предполагаемая нулевая гипотеза принимается или отклоняется соответственно.

Если нулевая гипотеза подлежит отклонению, это означает, что показания данных надежны и, вероятно, не являются случайными. T-тест - лишь один из многих тестов, используемых для этой цели. Статистики должны дополнительно использовать тесты, отличные от t-критерия, для изучения большего количества переменных и тестов с более крупными размерами выборки. Для большой выборки статистики используют z-критерий. Другие варианты тестирования включают тест хи-квадрат и f-тест.

Существует три типа t-критериев, которые подразделяются на зависимые и независимые t-тесты.

Неоднозначные результаты испытаний

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

После испытания препарата члены контрольной группы, получавшей плацебо, сообщили об увеличении средней продолжительности жизни на три года, в то время как члены группы, которым прописали новое лекарство, сообщили об увеличении средней продолжительности жизни на четыре года.Мгновенное наблюдение может указывать на то, что препарат действительно работает, поскольку результаты лучше для группы, принимающей препарат. Однако также возможно, что наблюдение может быть вызвано случайным происшествием, особенно неожиданной удачей. T-критерий полезен, чтобы сделать вывод, верны ли результаты и применимы ли они ко всей совокупности.

В школе 100 учеников класса А набрали в среднем 85% со стандартным отклонением 3%. Еще 100 учеников, принадлежащих к классу B, набрали в среднем 87% со стандартным отклонением 4%.Хотя средний показатель для класса B лучше, чем для класса A, может быть неправильно делать вывод о том, что общая успеваемость учеников в классе B лучше, чем у учеников в классе A. Это связано с естественной изменчивостью. в тестовых баллах в обоих классах, поэтому разница может быть чисто случайной. T-тест может помочь определить, преуспел ли один класс лучше, чем другой.

Допущения T-теста

  1. Первое предположение, сделанное относительно t-критериев, касается шкалы измерения.Предположение для t-теста состоит в том, что шкала измерения, применяемая к собранным данным, соответствует непрерывной или порядковой шкале, такой как баллы для теста IQ.
  2. Второе сделанное допущение состоит в том, что для простой случайной выборки данные собираются из репрезентативной, случайно выбранной части общей совокупности.
  3. Третье предположение заключается в том, что данные, построенные на графике, дают нормальное распределение, колоколообразную кривую распределения.
  4. Последнее предположение - однородность дисперсии.Однородная или равная дисперсия существует, когда стандартные отклонения образцов примерно равны.

Расчет Т-тестов

Для расчета t-критерия требуются три ключевых значения данных. Они включают разницу между средними значениями из каждого набора данных (называемую средней разницей), стандартное отклонение каждой группы и количество значений данных в каждой группе.

Результат t-теста дает t-значение. Это вычисленное t-значение затем сравнивается со значением, полученным из таблицы критических значений (называемой таблицей T-распределения).Это сравнение помогает определить влияние одной только случайности на разницу и выходит ли разница за пределы этого диапазона вероятности. С помощью t-критерия задается вопрос, представляет ли разница между группами истинное различие в исследовании или это, возможно, бессмысленное случайное различие.

Таблицы Т-распределения

Таблица Т-распределения доступна в одностороннем и двухстороннем форматах. Первый используется для оценки случаев, которые имеют фиксированное значение или диапазон с четким направлением (положительным или отрицательным).Например, какова вероятность того, что выходное значение останется ниже -3 или получит больше семи при броске пары кубиков? Последний используется для анализа границ диапазона, например для запроса, попадают ли координаты в интервал от -2 до +2.

Расчеты можно выполнять с помощью стандартных программ, которые поддерживают необходимые статистические функции, например, в MS Excel.

Т-значения и степени свободы

На выходе t-критерий дает два значения: t-значение и степени свободы.Значение t представляет собой отношение разницы между средним значением двух наборов образцов и вариацией, которая существует в наборах образцов. В то время как значение числителя (разница между средним значением двух наборов выборок) легко вычислить, знаменатель (вариация, которая существует в наборах выборок) может немного усложняться в зависимости от типа задействованных значений данных. Знаменатель отношения является мерой дисперсии или изменчивости. Более высокие значения t-значения, также называемого t-оценкой, указывают на то, что между двумя наборами выборок существует большая разница.Чем меньше t-значение, тем больше сходства существует между двумя наборами образцов.

  • Большой t-балл указывает на то, что группы разные.
  • Маленький t-балл означает, что группы похожи.

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

Коррелированный (или парный) Т-тест

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

Этот метод также применяется к случаям, когда выборки каким-либо образом связаны или имеют совпадающие характеристики, например, сравнительный анализ с участием детей, родителей или братьев и сестер.Коррелированные или парные t-тесты относятся к зависимому типу, поскольку они включают случаи, когда два набора выборок связаны.

Формула для вычисления t-значения и степеней свободы для парного t-критерия:

Взаимодействие с другими людьми Т знак равно иметь в виду 1 - иметь в виду 2 s ( разница ) ( п ) где: иметь в виду 1 а также иметь в виду 2 знак равно Средние значения каждого из наборов образцов s ( разница ) знак равно Стандартное отклонение разностей значений парных данных п знак равно Размер выборки (количество парных отличий) \ begin {align} & T = \ frac {\ textit {mean} 1 - \ textit {mean} 2} {\ frac {s (\ text {diff})} {\ sqrt {(n)}}} \\ & \ textbf {where:} \\ & \ textit {mean} 1 \ text {и} \ textit {mean} 2 = \ text {Средние значения каждого из наборов образцов} \\ & s (\ text {diff}) = \ text {Стандартное отклонение различий значений парных данных} \\ & n = \ text {Размер выборки (количество парных различий)} \\ & n-1 = \ text {Степени свободы} \ end {выровнено} T = (n) s (diff) mean1 − mean2, где: mean1 и mean2 = средние значения каждого из наборов выборок s (diff) = стандартное отклонение разностей значений парных данных n = размер выборки (количество парных отличий)

Остальные два типа относятся к независимым t-критериям.Выборки этих типов выбираются независимо друг от друга, то есть наборы данных в двух группах не относятся к одним и тем же значениям. Они включают такие случаи, как группа из 100 пациентов, разделенная на две группы по 50 пациентов в каждой. Одна из групп становится контрольной и получает плацебо, а другая группа получает предписанное лечение. Это две независимые выборочные группы, не связанные друг с другом.

Т-тест на равную дисперсию (или объединенный)

T-критерий равной дисперсии используется, когда количество выборок в каждой группе одинаково или дисперсия двух наборов данных одинакова.Следующая формула используется для вычисления t-значения и степеней свободы для t-критерия равной дисперсии:

Взаимодействие с другими людьми Т-значение знак равно м е а п 1 - м е а п 2 ( п 1 - 1 ) × v а р 1 2 + ( п 2 - 1 ) × v а р 2 2 п 1 + п 2 - 2 × 1 п 1 + 1 п 2 где: м е а п 1 а также м е а п 2 знак равно Средние значения каждого наборов образцов v а р 1 а также v а р 2 знак равно Дисперсия каждого из наборов образцов \ begin {align} & \ text {T-value} = \ frac {mean1 - mean2} {\ frac {(n1 - 1) \ times var1 ^ 2 + (n2 - 1) \ times var2 ^ 2} {n1 + n2 - 2} \ times \ sqrt {\ frac {1} {n1} + \ frac {1} {n2}}} \\ & \ textbf {где:} \\ & mean1 \ text {и} mean2 = \ text { Средние значения каждого} \\ & \ text {из наборов выборок} \\ & var1 \ text {и} var2 = \ text {Дисперсия каждого из наборов образцов} \\ & n1 \ text {и} n2 = \ text { Количество записей в каждом наборе образцов} \ end {выровнено} T-значение = n1 + n2−2 (n1−1) × var12 + (n2−1) × var22 × n11 + n21 mean1 − mean2, где: среднее1 и среднее2 = средние значения каждого из наборов выборок var1 и var2 = Дисперсия каждого из наборов образцов

а также,

Взаимодействие с другими людьми Степени свободы знак равно п 1 + п 2 - 2 где: п 1 а также п 2 знак равно Количество записей в каждом наборе выборок \ begin {align} & \ text {Степени свободы} = n1 + n2 - 2 \\ & \ textbf {где:} \\ & n1 \ text {и} n2 = \ text {Количество записей в каждом наборе образцов} \ \ \ конец {выровнено} Степени свободы = n1 + n2−2, где: n1 и n2 = количество записей в каждом наборе образцов. 2} {n2 - 1}} \\ & \ textbf {где:} \\ & var1 \ text {и} var2 = \ text {Дисперсия каждого из наборов образцов} \\ & n1 \ text {и} n2 = \ text {Количество записей в каждом наборе образцов} \\ \ end {выровнено} Степени свободы = n1−1 (n1var12) 2 + n2−1 (n2var22) 2 (n1var12 + n2var22) 2, где: var1 и var2 = дисперсия каждого из наборов выборок n1 и n2 = число записей в каждом наборе выборок

Определение правильного Т-теста для использования

Следующая блок-схема может использоваться для определения того, какой t-критерий следует использовать на основе характеристик наборов образцов.Ключевые элементы, которые следует учитывать, включают сходство записей выборки, количество записей данных в каждом наборе выборки и дисперсию каждого набора выборок.

Изображение Джули Банг © Investopedia 2019

Пример Т-критерия неравной дисперсии

Предположим, что мы измеряем по диагонали картины, полученные в художественной галерее. Одна группа образцов включает 10 картин, а другая - 20 картин. Наборы данных с соответствующими средними значениями и значениями дисперсии следующие:

Набор 1 Набор 2
19.7 28,3
20,4 26,7
19,6 20,1
17,8 23,3
18,5 25,2
18,9 22,1
18,3 17,7
18,9 27,6
19.5 20,6
21,95 13,7
23,2
17,5
20,6
18
23,9
21,6
24.3
20,4
23,9
13,3
Среднее 19,4 21,6
Разница 1,4 17,1

Хотя среднее значение набора 2 выше, чем среднее значение набора 1, мы не можем заключить, что популяция, соответствующая набору 2, имеет более высокое среднее значение, чем совокупность, соответствующая набору 1.Является ли разница от 19,4 до 21,6 результатом чистой случайности или действительно существуют различия в общей численности всех картин, полученных в художественной галерее? Мы устанавливаем проблему, принимая нулевую гипотезу о том, что среднее значение одинаково для двух наборов выборок, и проводим t-тест, чтобы проверить, правдоподобна ли гипотеза.

Поскольку количество записей данных различно (n1 = 10 и n2 = 20) и дисперсия также различна, значение t и степени свободы вычисляются для указанного выше набора данных с использованием формулы, упомянутой в T-тесте неравной дисперсии. раздел.

Значение t составляет -2,24787. Поскольку знак минус можно игнорировать при сравнении двух значений t, вычисленное значение составляет 2,24787.

Значение степеней свободы составляет 24,38 и уменьшается до 24 из-за определения формулы, требующей округления значения до минимально возможного целого числа.

Можно указать уровень вероятности (альфа-уровень, уровень значимости, p ) в качестве критерия для принятия. В большинстве случаев можно принять значение 5%.

Используя значение степени свободы как 24 и уровень значимости 5%, просмотр таблицы распределения значений t дает значение 2,064. Сравнение этого значения с вычисленным значением 2,247 показывает, что вычисленное значение t больше табличного значения на уровне значимости 5%. Следовательно, можно с уверенностью отвергнуть нулевую гипотезу об отсутствии разницы между средними. Набор населения имеет внутренние различия, и они не случайны.

unittest - Фреймворк для модульного тестирования - Python 3.9.4 документация

Исходный код: Lib / unittest / __ init__.py


(Если вы уже знакомы с основными концепциями тестирования, вы можете чтобы перейти к списку методов assert.)

Инфраструктура модульного тестирования unittest изначально была вдохновлена ​​JUnit. и имеет тот же вкус, что и основные фреймворки модульного тестирования в других языков. Он поддерживает автоматизацию тестирования, совместное использование кода настройки и выключения. для тестов, объединение тестов в коллекции и независимость тесты из структуры отчетности.

Для этого unittest поддерживает некоторые важные концепции в объектно-ориентированный способ:

испытательное приспособление

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

тестовый пример

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

набор тестов

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

средство выполнения тестов

Средство выполнения тестов - это компонент, который организует выполнение тестов. и предоставляет результат пользователю.Бегун может использовать графический интерфейс, текстовый интерфейс или вернуть специальное значение, чтобы указать результаты выполнение тестов.

См. Также

Модуль doctest

Еще один модуль поддержки тестирования с совсем другим вкусом.

Simple Smalltalk Testing: With Patterns

Оригинальная статья Кента Бека о тестовых фреймворках с использованием общего шаблона по unittest .

pytest

Сторонняя среда unittest с облегченным синтаксисом для записи тесты.Например, assert func (10) == 42 .

Таксономия инструментов тестирования Python

Обширный список инструментов тестирования Python, включая функциональное тестирование фреймворки и библиотеки имитирующих объектов.

Тестирование в списке рассылки Python

Специальная группа для обсуждения тестирования и инструментов тестирования, в Python.

Скрипт Tools / unittestgui / unittestgui.py в дистрибутиве исходного кода Python инструмент с графическим интерфейсом для обнаружения и выполнения тестов.Это сделано в основном для простоты использования. для новичков в модульном тестировании. Для производственных сред это рекомендуется, чтобы тесты проводились с помощью системы непрерывной интеграции, такой как Buildbot, Дженкинс или Travis-CI, или AppVeyor.

Базовый пример

Модуль unittest предоставляет богатый набор инструментов для построения и запущенные тесты. В этом разделе показано, что небольшая часть инструментов достаточно для удовлетворения потребностей большинства пользователей.

Вот короткий сценарий для тестирования трех строковых методов:

 импортный unittest

класс TestStringMethods (unittest.Прецедент):

    def test_upper (сам):
        self.assertEqual ('foo'.upper (),' FOO ')

    def test_isupper (сам):
        self.assertTrue ('FOO'.isupper ())
        self.assertFalse ('Фу'.isupper ())

    def test_split (сам):
        s = 'привет, мир'
        self.assertEqual (s.split (), ['привет', 'мир'])
        # проверяем, что s.split не работает, если разделитель не является строкой
        с self.assertRaises (TypeError):
            с.сплит (2)

если __name__ == '__main__':
    unittest.main ()
 

Тестовый набор создается путем создания подкласса unittest.TestCase . Три индивидуальные тесты определяются методами, имена которых начинаются с букв тест . Это соглашение об именах информирует участника тестирования о том, какие методы представляют собой тесты.

Суть каждого теста - это вызов assertEqual () для проверки наличия ожидаемый результат; assertTrue () или assertFalse () для проверки состояния; или assertRaises () , чтобы убедиться, что возникает конкретное исключение. Эти методы используются вместо утверждает оператор , чтобы исполнитель тестов мог накапливать все результаты тестов и составим отчет.

Методы setUp () и tearDown () позволяют для определения инструкций, которые будут выполняться до и после каждого метода тестирования. Более подробно они описаны в разделе «Организация тестового кода».

Последний блок показывает простой способ запуска тестов. unittest.main () предоставляет интерфейс командной строки для тестового сценария. При запуске из команды строка, приведенный выше сценарий дает результат, который выглядит следующим образом:

 ...
-------------------------------------------------- --------------------
Выполнить 3 теста в 0.000 с

ОК
 

Передача опции -v вашему сценарию тестирования даст команду unittest.main () для включения более высокого уровня детализации и получения следующего вывода:

 test_isupper (__main __. TestStringMethods) ... ок
test_split (__main __. TestStringMethods) ... хорошо
test_upper (__main __. TestStringMethods) ... хорошо

-------------------------------------------------- --------------------
Выполнить 3 теста за 0,001 с

ОК
 

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

Интерфейс командной строки

Модуль unittest можно использовать из командной строки для запуска тестов из модули, классы или даже отдельные методы испытаний:

 python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
 

Вы можете передать список с любой комбинацией имен модулей и полностью квалифицированные имена классов или методов.

Тестовые модули также можно указать по пути к файлу:

 python -m unittest тесты / test_something.py
 

Это позволяет использовать завершение имени файла оболочки для указания тестового модуля. Указанный файл по-прежнему должен быть импортирован как модуль. Путь преобразован в имя модуля, удалив «.py» и преобразовав разделители путей в «.». Если вы хотите запустить тестовый файл, который нельзя импортировать как модуль, вам следует вместо этого выполнить файл напрямую.

Вы можете запустить тесты с более подробной информацией (более высокая степень детализации), передав флаг -v:

 python -m unittest -v тестовый_модуль
 

При выполнении без аргументов запускается Test Discovery:

Список всех параметров командной строки:

Изменено в версии 3.2: В более ранних версиях можно было запускать только отдельные методы тестирования и не модули или классы.

Параметры командной строки

unittest поддерживает следующие параметры командной строки:

-b , --буфер

Стандартный поток вывода и стандартный поток ошибок буферизуются во время теста запустить. Вывод при прохождении теста отбрасывается. Вывод отображается нормально при провале теста или ошибке и добавляется к сообщениям об ошибках.

-c , -catch

Control-C во время тестового запуска ожидает завершения текущего теста, а затем сообщает все результаты на данный момент. Второй Control-C поднимает нормальный KeyboardInterrupt исключение.

См. Раздел Обработка сигналов для получения информации о функциях, обеспечивающих эту функциональность.

-f , -failfast

Остановите тестовый прогон при первой ошибке или сбое.

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

Шаблоны, содержащие подстановочный знак ( * ), сопоставляются с имя теста с использованием fnmatch.fnmatchcase () ; в противном случае просто с учетом регистра Используется сопоставление подстроки.

Шаблоны сопоставляются с полным именем метода тестирования как импортировано тестовым загрузчиком.

Например, -k foo соответствует foo_tests.SomeTest.test_something , bar_tests.SomeTest.test_foo , но не bar_tests.FooTest.test_something .

- местные

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

Новое в версии 3.2: добавлены параметры командной строки -b , -c и -f .

Новое в версии 3.5: Параметр командной строки --locals .

Новое в версии 3.7: параметр командной строки -k .

Командную строку также можно использовать для обнаружения тестов, для запуска всех тесты в проекте или только в подмножестве.

Тестовое открытие

Unittest поддерживает простое обнаружение тестов. Чтобы быть совместимым с тестом обнаружение, все тестовые файлы должны быть модулями или пакеты (включая пакеты пространства имен), импортируемые из каталога верхнего уровня проект (это означает, что их имена файлов должны быть действительными идентификаторами).

Обнаружение тестов реализовано в TestLoader.discover () , но также может быть используется из командной строки. Базовое использование командной строки:

 компакт-диск project_directory
python -m unittest обнаружить
 

Примечание

Сокращенно, python -m unittest эквивалентен python -m unittest обнаружить . Если вы хотите передать аргументы для проверки обнаружение подкоманда обнаружения должна использоваться явно.

Подкоманда discover имеет следующие параметры:

-v , -verbose

Подробный вывод

-s , --start-directory каталог

Каталог для начала обнаружения (. по умолчанию)

-p , - шаблон шаблон

Шаблон для соответствия тестовым файлам ( test * .py по умолчанию)

-t , --top-level-directory каталог

Каталог верхнего уровня проекта (по умолчанию начальный каталог)

Параметры -s , -p и -t могут быть переданы в как позиционные аргументы в этом порядке.Следующие две командные строки эквивалентны:

 python -m unittest discover -s каталог_проекта -p "* _test.py"
python -m unittest обнаружить каталог_проекта "* _test.py"
 

Помимо пути, можно передать имя пакета, например myproject.subpackage.test в качестве начального каталога. Пакет называет вас поставка будет импортирована, и будет использовано ее местоположение в файловой системе. в качестве начального каталога.

Осторожно

Обнаружение тестов загружает тесты, импортируя их.Как только тестовое обнаружение обнаружит все тестовые файлы из начального каталога, который вы укажете, он поворачивает пути в имена пакетов для импорта. Например, foo / bar / baz.py будет импортировано как foo.bar.baz .

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

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

Тестовые модули и пакеты могут настраивать тестовую загрузку и обнаружение с помощью протокол load_tests.

Изменено в версии 3.4: Тестовое обнаружение поддерживает пакеты пространства имен. для начального каталога. Обратите внимание, что вам также нужен каталог верхнего уровня. (например, python -m unittest discover -s root / namespace -t root ).

Код организации тестирования

Основными строительными блоками модульного тестирования являются тестовых случаев - одиночный сценарии, которые необходимо настроить и проверить на правильность.В unittest , тестовые примеры представлены экземплярами unittest.TestCase . Чтобы создать свои собственные тестовые примеры, вы должны написать подклассы TestCase или используйте FunctionTestCase .

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

Простейший подкласс TestCase просто реализует метод тестирования (я.е. метод, имя которого начинается с (test ), чтобы выполнить определенные код тестирования:

 импортный unittest

класс DefaultWidgetSizeTestCase (unittest.TestCase):
    def test_default_widget_size (self):
        widget = Виджет ('Виджет')
        self.assertEqual (размер виджета (), (50, 50))
 

Обратите внимание, что для проверки мы используем одно из утверждений * () методы, предоставляемые базовым классом TestCase . Если тест не пройден, исключение будет вызвано пояснительным сообщением, и unittest идентифицирует тестовый пример как сбой .Любые другие исключения будут обрабатывается как ошибок .

Тесты могут быть многочисленными, и их настройка может повторяться. К счастью, мы может исключить установочный код, реализовав метод, называемый setUp () , который среда тестирования автоматически вызов для каждого отдельного теста, который мы запускаем:

 импортный unittest

класс WidgetTestCase (unittest.TestCase):
    def setUp (сам):
        self.widget = Виджет ('Виджет')

    def test_default_widget_size (self):
        себя.assertEqual (self.widget.size (), (50,50),
                         'неправильный размер по умолчанию')

    def test_widget_resize (сам):
        self.widget.resize (100,150)
        self.assertEqual (self.widget.size (), (100,150),
                         'неправильный размер после изменения размера')
 

Примечание

Порядок, в котором будут выполняться различные тесты, определен. путем сортировки имен тестовых методов по встроенным заказ струн.

Если метод setUp () вызывает исключение во время выполнения теста запущен, фреймворк будет считать, что в тесте произошла ошибка, и метод тестирования не будет выполняться.

Точно так же мы можем предоставить метод tearDown () , который убирает после запуска метода тестирования:

 импортный unittest

класс WidgetTestCase (unittest.TestCase):
    def setUp (сам):
        self.widget = Виджет ('Виджет')

    def tearDown (сам):
        self.widget.dispose ()
 

Если setUp () завершился успешно, tearDown () будет запускается независимо от того, прошел ли тестовый метод успешно или нет.

Такая рабочая среда для кода тестирования называется приспособление для испытаний .Новый экземпляр TestCase создается как уникальный тестовое приспособление, используемое для выполнения каждого отдельного метода тестирования. Таким образом setUp () , tearDown () и __init __ () будет вызываться один раз за тест.

Рекомендуется использовать реализации TestCase для группировки тестов вместе. в соответствии с тестируемыми характеристиками. unittest обеспечивает механизм для это: набор тестов , представленный unittest ’s TestSuite класс.В большинстве случаев вызов unittest.main () сделает то, что нужно, соберите для вас все тестовые примеры модуля и выполните их.

Однако, если вы хотите настроить сборку вашего набора тестов, можно сделать самому:

 def suite ():
    suite = unittest.TestSuite ()
    suite.addTest (WidgetTestCase ('test_default_widget_size'))
    suite.addTest (WidgetTestCase ('test_widget_resize'))
    возвращение люкс

если __name__ == '__main__':
    runner = unittest.TextTestRunner ()
    бегун.запустить (сюита ())
 

Вы можете разместить определения тестовых примеров и наборов тестов в одних и тех же модулях. в качестве кода, который они должны тестировать (например, widget.py ), но есть несколько преимущества размещения тестового кода в отдельном модуле, например test_widget.py :

  • Тестовый модуль можно запустить автономно из командной строки.

  • Тестовый код легче отделить от кода поставки.

  • Меньше соблазна изменить тестовый код, чтобы он соответствовал коду, который он тестирует без веская причина.

  • Тестовый код следует изменять гораздо реже, чем код, который он тестирует.

  • Протестированный код легче подвергнуть рефакторингу.

  • Тесты для модулей, написанных на C, в любом случае должны быть в отдельных модулях, так почему бы и нет быть последовательным?

  • При изменении стратегии тестирования нет необходимости изменять исходный код.

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

Некоторые пользователи обнаружат, что у них есть тестовый код, который они хотели бы запустить из unittest , не преобразовывая все старые тестовые функции в TestCase подкласс.

По этой причине unittest предоставляет класс FunctionTestCase . Этот подкласс TestCase можно использовать для обертывания существующего теста. функция. Также могут быть предусмотрены функции настройки и демонтажа.

Дана следующая тестовая функция:

 def testSomething ():
    something = makeSomething ()
    assert something.name не None
    # ...
 

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

 testcase = unittest.FunctionTestCase (testSomething,
                                     setUp = makeSomethingDB,
                                     tearDown = deleteSomethingDB)
 

Примечание

Хотя FunctionTestCase можно использовать для быстрого преобразования существующей тестовой базы для системы unittest , этот подход не рекомендуется. Потратьте время на настройку TestCase подклассы значительно упростят рефакторинг тестов в будущем.

В некоторых случаях существующие тесты могли быть написаны с использованием doctest модуль.Если это так, doctest предоставляет класс DocTestSuite , который может автоматически построить unittest.TestSuite экземпляра из существующих doctest - тесты.

Пропуск тестов и ожидаемые отказы

Unittest поддерживает пропуск отдельных методов тестирования и даже целых классов тесты. Кроме того, он поддерживает пометку теста как «ожидаемого отказа», теста который сломан и выйдет из строя, но не должен считаться отказом на Результаты теста .

Пропуск теста - это просто вопрос использования декоратора skip () или один из его условных вариантов, вызывая TestCase.skipTest () внутри setUp () или метод тестирования, или напрямую подняв SkipTest .

Базовый пропуск выглядит так:

 класс MyTestCase (unittest.TestCase):

    @ unittest.skip («демонстрация пропусков»)
    def test_nothing (сам):
        self.fail («не должно происходить»)

    @ unittest.skipIf (mylib .__ version__ <(1, 3),
                     "не поддерживается в этой версии библиотеки")
    def test_format (сам):
        # Тесты, работающие только для определенной версии библиотеки.проходить

    @ unittest.skipUnless (sys.platform.startswith ("win"), "требуется Windows")
    def test_windows_support (самостоятельно):
        # код тестирования для Windows
        проходить

    def test_maybe_skipped (сам):
        если не external_resource_available ():
            self.skipTest («внешний ресурс недоступен»)
        # тестовый код, зависящий от внешнего ресурса
        проходить
 

Это результат выполнения приведенного выше примера в подробном режиме:

 test_format (__main__.MyTestCase) ... пропущено 'не поддерживается в этой версии библиотеки'
test_nothing (__main __. MyTestCase) ... пропущено 'демонстрация пропуска'
test_maybe_skipped (__main __. MyTestCase) ... пропущено 'внешний ресурс недоступен'
test_windows_support (__main __. MyTestCase) ... пропущено 'требует Windows'

-------------------------------------------------- --------------------
Выполнить 4 теста за 0,005 с.

ОК (пропущено = 4)
 

Классы можно пропускать так же, как и методы:

 @ unittest.skip ("показывает пропуск занятий")
класс MySkippedTestCase (unittest.Прецедент):
    def test_not_run (сам):
        проходить
 

TestCase.setUp () также может пропустить тест. Это полезно, когда ресурс который необходимо настроить, недоступен.

Ожидаемые сбои используют декоратор expectedFailure () .

 класс ExpectedFailureTestCase (unittest.TestCase):
    @ unittest.expectedFailure
    def test_fail (сам):
        self.assertEqual (1, 0, «сломанный»)
 

Легко создать собственные пропускающие декораторы, создав декоратор, который вызывает skip () на тесте, когда он хочет, чтобы он был пропущен.Этот декоратор пропускает тест, если переданный объект не имеет определенного атрибута:

 def skipUnlessHasattr (obj, attr):
    если hasattr (obj, attr):
        вернуть лямбда-функцию: func
    return unittest.skip ("{! r} не имеет {! r}". format (obj, attr))
 

Следующие декораторы и исключения реализуют пропуск тестов и ожидаемые сбои:

@ unittest. пропустить ( причина )

Безоговорочно пропустить оформленный тест. причина должна описывать, почему тест пропускается.

@ unittest. skipIf ( условие , причина )

Пропустить оформленный тест, если условие верно.

@ unittest. пропустить Если ( условие , причина )

Пропустить оформленный тест, если условие не выполняется.

@ unittest. ожидаемый сбой

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

исключение unittest. SkipTest ( причина )

Это исключение вызывается для пропуска теста.

Обычно вы можете использовать TestCase.skipTest () или один из пропускаемых декораторы вместо того, чтобы поднимать это напрямую.

Пропущенные тесты не будут содержать setUp () или tearDown () . Пропущенные классы не будут выполнять setUpClass () или tearDownClass () . Пропущенные модули не будут выполнять setUpModule () или tearDownModule () .

Выделение итераций теста с использованием подтестов

Когда между вашими тестами есть очень маленькие различия, для Например, некоторые параметры, unittest позволяет различать их внутри тело метода тестирования с использованием диспетчера контекста subTest () .

Например, следующий тест:

 класс NumbersTest (unittest.TestCase):

    def test_even (сам):
        "" "
        Проверьте, все ли числа от 0 до 5 четны.
        "" "
        для i в диапазоне (0, 6):
            с self.subTest (i = i):
                self.assertEqual (я% 2, 0)
 

выдаст следующий результат:

 ================================================= =====================
ОТКАЗ: test_even (__main __. NumbersTest) (i = 1)
-------------------------------------------------- --------------------
Отслеживание (последний вызов последний):
  Файл "субтесты.py ", строка 32, в test_even
    self.assertEqual (я% 2, 0)
AssertionError: 1! = 0

================================================== ====================
ОТКАЗ: test_even (__main __. NumbersTest) (i = 3)
-------------------------------------------------- --------------------
Отслеживание (последний вызов последний):
  Файл "subtests.py", строка 32, в test_even
    self.assertEqual (я% 2, 0)
AssertionError: 1! = 0

================================================== ====================
ОТКАЗ: test_even (__main __. NumbersTest) (i = 5)
-------------------------------------------------- --------------------
Отслеживание (последний вызов последний):
  Файл "субтесты.py ", строка 32, в test_even
    self.assertEqual (я% 2, 0)
AssertionError: 1! = 0
 

Без использования подтеста выполнение остановится после первого сбоя, и ошибку будет труднее диагностировать, потому что значение i не будет отображаться:

 ================================================= =====================
ОТКАЗ: test_even (__main __. NumbersTest)
-------------------------------------------------- --------------------
Отслеживание (последний вызов последний):
  Файл "субтесты.py ", строка 32, в test_even
    self.assertEqual (я% 2, 0)
AssertionError: 1! = 0
 

Классы и функции

В этом разделе подробно описывается API unittest .

Контрольные примеры

класс unittest. TestCase ( methodName = 'runTest' )

Экземпляры класса TestCase представляют собой логические тестовые единицы во вселенной unittest . Этот класс предназначен для использования в качестве базового класс, при этом конкретные тесты реализуются конкретными подклассами.Этот класс реализует интерфейс, необходимый для запуска тестов, чтобы позволить ему управлять тесты и методы, которые тестовый код может использовать для проверки и сообщения о различных виды неудач.

Каждый экземпляр TestCase будет запускать единственный базовый метод: метод с именем methodName . В большинстве случаев использования TestCase вы не будете изменять methodName и не переопределить метод runTest () по умолчанию.

Изменено в версии 3.2: TestCase может быть успешно создан без предоставления Имя метода . Это упрощает эксперименты с TestCase . из интерактивного переводчика.

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

Методы первой группы (выполняющей тест):

комплект ()

Метод, вызываемый для подготовки испытательного приспособления.Это называется немедленно перед вызовом тестового метода; кроме AssertionError или SkipTest , любое исключение, вызванное этим методом, будет считаться ошибкой, а не провал теста. Реализация по умолчанию ничего не делает.

слеза ()

Метод, вызываемый сразу после вызова метода тестирования и результат записан. Это вызывается, даже если тестовый метод вызвал исключение, поэтому реализация в подклассах может потребоваться особенно осторожно проверяйте внутреннее состояние.Любое исключение, кроме AssertionError или SkipTest , вызванные этим методом, будут считается дополнительной ошибкой, а не провалом теста (таким образом, увеличивая общее количество сообщенных ошибок). Этот метод будет вызываться только в том случае, если setUp () завершается успешно, независимо от результата метода тестирования. Реализация по умолчанию ничего не делает.

setUpClass ()

Метод класса, вызываемый перед запуском тестов в отдельном классе. setUpClass вызывается с классом в качестве единственного аргумента и должен быть оформлен как метод класса () :

 @classmethod
def setUpClass (cls):
    ...
 

См. Дополнительные сведения в разделе «Приспособления для классов и модулей».

tearDownClass ()

Метод класса, вызываемый после выполнения тестов в отдельном классе. tearDownClass вызывается с классом в качестве единственного аргумента и должен быть оформлен как метод класса () :

 @classmethod
def tearDownClass (cls):
    ...
 

См. Дополнительные сведения в разделе «Приспособления для классов и модулей».

прогон ( результат = нет )

Запустить тест, собрав результат в объект TestResult передано как результат . Если результат опущен или Нет , временный объект результата создается (путем вызова defaultTestResult () метод) и используется. Объект результата возвращается к run () ’s звонящий.

Тот же эффект можно получить, просто позвонив в TestCase пример.

Изменено в версии 3.3: Предыдущие версии выполняли не возвращали результат. Тоже не сделал вызов экземпляра.

skipTest ( причина )

Вызов этого метода во время тестирования или setUp () пропускает текущий контрольная работа. См. Пропуск тестов и ожидаемые сбои для получения дополнительной информации.

подтест ( сообщение = нет , ** параметры )

Вернуть диспетчер контекста, который выполняет вложенный блок кода как субтест. msg и params являются необязательными, произвольными значениями, которые отображается всякий раз, когда подтест не проходит, что позволяет идентифицировать их четко.

Тестовый пример может содержать любое количество объявлений подтестов, и они могут быть вложены произвольно.

См. Раздел «Различение итераций теста с помощью подтестов» для получения дополнительной информации.

отладка ()

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

Класс TestCase предоставляет несколько методов утверждения для проверки и сообщать о сбоях. В следующей таблице перечислены наиболее часто используемые методы. (дополнительные методы assert см. в таблицах ниже):

Метод

Проверяет, что

Новое в

assertEqual (a, b)

a == b

assertNotEqual (a, b)

a! = B

assertTrue (x)

bool (x) истинно

assertFalse (x)

bool (x) неверно

assertIs (a, b)

a is b

3.1

assertIsNot (a, b)

a не b

3,1

assertIsNone (x)

x Нет

3,1

assertIsNotNone (x)

x не Нет

3,1

assertIn (a, b)

а в б

3.1

assertNotIn (a, b)

a не входит в b

3,1

assertIsInstance (a, b)

isinstance (a, b)

3,2

assertNotIsInstance (a, b)

не является экземпляром (а, б)

3.2

Все методы assert принимают аргумент msg , который, если указан, используется как сообщение об ошибке при сбое (см. также longMessage ). Обратите внимание, что аргумент ключевого слова msg может быть передан в assertRaises () , assertRaisesRegex () , assertWarns () , assertWarnsRegex () только когда они используются в качестве диспетчера контекста.

assertEqual ( первый , второй , msg = None )

Проверить, что первые и вторые равны.Если значения не сравните равные, тест не пройдёт.

Кроме того, если первые и вторые являются одним и тем же типом и одним из list, tuple, dict, set, frozenset или str или любой тип, являющийся подклассом регистры с addTypeEqualityFunc () равенство, зависящее от типа функция будет вызываться, чтобы сгенерировать более полезное значение по умолчанию сообщение об ошибке (см. также список методов для конкретных типов).

Изменено в версии 3.1: Добавлен автоматический вызов функции равенства типов.

Изменено в версии 3.2: assertMultiLineEqual () добавлено как равенство типов по умолчанию функция сравнения строк.

assertNotEqual ( первый , второй , msg = None )

Проверить, что первый и второй не равны. Если значения сравните равные, тест не пройдёт.

assertTrue ( expr , msg = None )
assertFalse ( expr , msg = None )

Проверить, что expr истинно (или ложно).

Обратите внимание, что это эквивалентно bool (expr) is True , а не expr равно True (для последнего используйте assertIs (expr, True) ). Этот способ также следует избегать, когда доступны более конкретные методы (например, assertEqual (a, b) вместо assertTrue (a == b) ), потому что они предоставить лучшее сообщение об ошибке в случае сбоя.

assertIs ( первый , второй , msg = None )
assertIsNot ( первый , второй , msg = None )

Проверьте, что первый и второй являются (или не являются) одним и тем же объектом.

assertIsNone ( expr , msg = None )
assertIsNotNone ( expr , msg = None )

Проверьте, что expr является (или не является) None .

assertIn ( элемент , контейнер , msg = None )
assertNotIn ( элемент , контейнер , msg = None )

Проверить, что элемент находится (или не находится) в контейнере .

assertIsInstance ( obj , cls , msg = None )
assertNotIsInstance ( obj , cls , msg = None )

Проверьте, что obj является (или не является) экземпляром cls (который может быть class или кортеж классов, поддерживаемый isinstance () ). Чтобы проверить точный тип, используйте assertIs (type (obj), cls) .

Также можно проверить создание исключений, предупреждений и регистрировать сообщения, используя следующие методы:

Метод

Проверяет, что

Новое в

assertRaises (exc, fun, * args, ** kwds)

fun (* args, ** kwds) поднимает exc

assertRaisesRegex (exc, r, fun, * args, ** kwds)

удовольствие (* args, ** kwds) поднимает exc и сообщение соответствует регулярному выражению r

3.1

assertWarns (предупреждение, забава, * аргументы, ** kwds)

fun (* args, ** kwds) поднимает предупреждает

3,2

assertWarnsRegex (warn, r, fun, * args, ** kwds)

fun (* args, ** kwds) поднимает предупреждает и сообщение соответствует регулярному выражению r

3,2

assertLogs (регистратор, уровень)

с блокировками на регистраторе с минимальным уровнем

3.4

assertRaises ( исключение , вызываемый , * args , ** kwds )
assertRaises ( исключение , * , msg = None )

Проверить, возникает ли исключение, когда вызываемый вызывается с любым позиционные или ключевые аргументы, которые также передаются в assertRaises () . Тест пройден, если возникает исключение , это ошибка, если возникает другое исключение, или сбой, если исключение не возникает.Чтобы перехватить любую группу исключений, кортеж, содержащий исключение классы могут быть переданы как исключение .

Если даны только исключение и, возможно, аргументы msg , вернуть диспетчер контекста, чтобы можно было написать тестируемый код встроенный, а не как функция:

 с self.assertRaises (SomeException):
    сделай что-нибудь()
 

При использовании в качестве диспетчера контекста assertRaises () принимает дополнительный аргумент ключевого слова msg .

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

 с self.assertRaises (SomeException) как cm:
    сделай что-нибудь()

the_exception = cm.exception
self.assertEqual (the_exception.error_code, 3)
 

Изменено в версии 3.1: Добавлена ​​возможность использовать assertRaises () в качестве диспетчера контекста.

Изменено в версии 3.2: Добавлен атрибут исключения .

Изменено в версии 3.3: Добавлен аргумент ключевого слова msg при использовании в качестве диспетчера контекста.

assertRaisesRegex ( исключение , регулярное выражение , вызываемое , * args , ** kwds )
assertRaisesRegex ( исключение , регулярное выражение , * , msg = None )

Как assertRaises () , но также проверяет соответствие регулярному выражению в строковом представлении возникшего исключения. регулярное выражение может быть объект регулярного выражения или строка, содержащая регулярное выражение подходит для использования re.search () . Примеры:

 self.assertRaisesRegex (ValueError, "недопустимый литерал для. * XYZ '$",
                       int, 'XYZ')
 

или:

 с self.assertRaisesRegex (ValueError, 'literal'):
   интервал ('XYZ')
 

Новое в версии 3.1: добавлено под именем assertRaisesRegexp .

Изменено в версии 3.3: Добавлен аргумент ключевого слова msg при использовании в качестве диспетчера контекста.

assertWarns ( предупреждение , вызываемое , * args , ** kwds )
assertWarns ( предупреждение , * , msg = Нет )

Проверить, что предупреждение срабатывает, когда вызываемый вызывается с любым позиционные или ключевые аргументы, которые также передаются в assertWarns () .Тест считается пройденным, если срабатывает предупреждение и терпит неудачу, если это не так. Любое исключение - ошибка. Чтобы поймать любое из группы предупреждений, кортеж, содержащий предупреждение классы могут быть переданы как предупреждений .

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

 с self.assertWarns (SomeWarning):
    сделай что-нибудь()
 

При использовании в качестве диспетчера контекста assertWarns () принимает дополнительный аргумент ключевого слова msg .

Диспетчер контекста сохранит обнаруженный объект предупреждения в своем предупреждение атрибут и исходная строка, которая вызвала предупреждения в атрибутах имя файла и белье . Это может быть полезно, если вы собираетесь выполнить дополнительные проверки. на предупреждении поймано:

 с self.assertWarns (SomeWarning) как cm:
    сделай что-нибудь()

self.assertIn ('myfile.py', cm.filename)
self.assertEqual (320, см. lineno)
 

Этот метод работает независимо от установленных фильтров предупреждений, когда он называется.

Изменено в версии 3.3: Добавлен аргумент ключевого слова msg при использовании в качестве диспетчера контекста.

assertWarnsRegex ( предупреждение , регулярное выражение , вызываемое , * args , ** kwds )
assertWarnsRegex ( предупреждение , регулярное выражение , * , msg = None )

Подобно assertWarns () , но также проверяет, что регулярное выражение соответствует на сообщение о сработавшем предупреждении. regex может быть регулярным выражением объект или строка, содержащая регулярное выражение, подходящее для использования Автор: re.search () . Пример:

 self.assertWarnsRegex (DeprecationWarning,
                      r'legacy_function \ (\) устарела ',
                      legacy_function, 'XYZ')
 

или:

 с self.assertWarnsRegex (RuntimeWarning, 'небезопасный запуск'):
    заморозить ('/ etc / passwd')
 

Изменено в версии 3.3: Добавлен аргумент ключевого слова msg при использовании в качестве диспетчера контекста.

assertLogs ( регистратор = Нет , уровень = Нет )

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

Если задано, logger должен быть логгером . Logger объект или str с указанием наименования регистратора. По умолчанию это корень регистратор, который перехватит все сообщения, которые не были заблокированы нераспространяющийся потомок регистратора.

Если задан, уровень должен быть либо числовым уровнем ведения журнала, либо его строковый эквивалент (например, "ERROR" или , ОШИБКА ). По умолчанию ведется журнал .INFO .

Тест пройден, если внутри отправлено хотя бы одно сообщение с блок соответствует условиям регистратора и уровня , в противном случае он не работает.

Объект, возвращаемый диспетчером контекста, является помощником записи. который отслеживает соответствующие сообщения журнала.Имеет два атрибуты:

запись

Список logging.LogRecord объектов сопоставления сообщения журнала.

выход

Список объектов str с форматированным выводом совпадающие сообщения.

Пример:

 с self.assertLogs ('foo', level = 'INFO') как cm:
   logging.getLogger ('foo'). info ('первое сообщение')
   logging.getLogger ('foo.bar '). error (' второе сообщение ')
self.assertEqual (cm.output, ['ИНФОРМАЦИЯ: foo: первое сообщение',
                             'ОШИБКА: foo.bar: второе сообщение'])
 

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

Метод

Проверяет, что

Новое в

assertAlmostEqual (a, b)

круглый (a-b, 7) == 0

assertNotAlmostEqual (a, b)

круглый (a-b, 7)! = 0

assertGreater (a, b)

a> b

3.1

assertGreaterEqual (a, b)

a> = b

3,1

assertLess (a, b)

a

3,1

assertLessEqual (a, b)

a <= b

3,1

assertRegex (s, r)

р.поиск (ы)

3,1

assertNotRegex (s, r)

не r.search (s)

3,2

assertCountEqual (a, b)

a и b имеют одинаковые элементы в том же количестве, независимо от их порядка.

3,2

assertAlmostEqual ( первые , вторые , мест = 7 , msg = None , delta = None )
assertNotAlmostEqual ( первых , вторых , мест = 7 , msg = None , delta = None )

Проверьте, что первые и вторые приблизительно (или не приблизительно) равны, вычисляя разницу, округляя до заданного количества десятичное разрядов (по умолчанию 7) и сравнение с нулем.Обратите внимание, что эти методы округляют значения до заданного числа десятичных знаков (т.е. как функция round () ), а не значащих цифр .

Если дельта вместо ставит , то разница между первым и вторым должно быть меньше или равно (или больше) дельта .

Подача дельта и позиций вызывает TypeError .

Изменено в версии 3.2: assertAlmostEqual () автоматически считает почти равные объекты которые сравнивают равными. assertNotAlmostEqual () автоматически завершается ошибкой если сравнивать объекты одинаково. Добавлен аргумент ключевого слова delta .

assertGreater ( первый , второй , msg = None )
assertGreaterEqual ( первый , второй , msg = None )
assertLess ( первый , второй , msg = None )
assertLessEqual ( первый , второй , msg = None )

Проверить, что первый соответственно>,> =, <или <= второй в зависимости по имени метода.Если нет, тест не пройдёт:

 >>> self.assertGreaterEqual (3, 4)
AssertionError: «3» неожиданно не больше или равно «4»
 
assertRegex ( текст , регулярное выражение , msg = Нет )
assertNotRegex ( текст , регулярное выражение , msg = None )

Проверить, что поиск регулярного выражения соответствует (или не совпадает) тексту . В случае ошибки, сообщение об ошибке будет включать шаблон и текст (или неожиданно совпавшие шаблон и часть текста ). регулярное выражение может быть объектом регулярного выражения или строкой, содержащей регулярный выражение, подходящее для использования re.search () .

Новое в версии 3.1: добавлено под именем assertRegexpMatches .

Изменено в версии 3.2: Метод assertRegexpMatches () был переименован в assertRegex () .

Новое в версии 3.5: имя assertNotRegexpMatches является устаревшим псевдонимом для assertNotRegex () .

assertCountEqual ( первый , второй , msg = None )

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

Дублирующиеся элементы не игнорируются при сравнении первых и . второй . Он проверяет, имеет ли каждый элемент одинаковое количество в обоих последовательности.Эквивалентно: assertEqual (Счетчик (список (первый)), Счетчик (список (второй))) но работает и с последовательностями нехэшируемых объектов.

Метод assertEqual () отправляет проверку равенства для объектов один и тот же тип для разных методов, зависящих от типа. Эти методы уже есть реализовано для большинства встроенных типов, но также возможно зарегистрируйте новые методы, используя addTypeEqualityFunc () :

addTypeEqualityFunc ( typeobj , функция )

Регистрирует зависящий от типа метод, вызываемый функцией assertEqual () для проверки. если два объекта точно такого же типа obj (не подклассы) сравнивают равный. функция должна принимать два позиционных аргумента и третий msg = None аргумент ключевого слова точно так же, как assertEqual () . Он должен поднять self.failureException (msg) при неравенстве между первыми двумя параметрами обнаруживается - возможно, обеспечивая полезный информация и подробное объяснение неравенств в ошибке сообщение.

Список методов, зависящих от типа, автоматически используемых assertEqual () приведены в следующей таблице.Примечание что обычно нет необходимости вызывать эти методы напрямую.

assertMultiLineEqual ( первый , второй , msg = None )

Проверить, что многострочная строка первая равна строке вторая . Когда не равно разница двух строк, подчеркивающая различия будет включено в сообщение об ошибке. Этот метод используется по умолчанию при сравнении строк с assertEqual () .

assertSequenceEqual ( первый , второй , msg = None , seq_type = None )

Проверяет, что две последовательности равны. Если указан seq_type , оба первый и второй должны быть экземплярами seq_type , иначе произойдет сбой. быть поднятым. Если последовательности отличаются, появляется сообщение об ошибке. построенный, который показывает разницу между ними.

Этот метод не вызывается напрямую assertEqual () , но он используется для реализации assertListEqual () и assertTupleEqual () .

assertListEqual ( первый , второй , msg = None )
assertTupleEqual ( первый , второй , msg = None )

Проверяет равенство двух списков или кортежей. В противном случае появляется сообщение об ошибке. построенный, который показывает только различия между ними. Ошибка также возникает, если какой-либо из параметров имеет неправильный тип. Эти методы используются по умолчанию при сравнении списков или кортежей с assertEqual () .

assertSetEqual ( первый , второй , msg = None )

Проверяет, что два набора равны. В противном случае создается сообщение об ошибке. в котором перечислены различия между наборами. Этот метод используется по умолчанию при сравнении наборов или замороженных наборов с assertEqual () .

Не выполняется, если для одного из первого или второго нет set.difference () метод.

assertDictEqual ( первый , второй , msg = None )

Проверка равенства двух словарей. В противном случае появляется сообщение об ошибке. построено, что показывает различия в словарях. Этот будет использоваться по умолчанию для сравнения словарей в звонки на assertEqual () .

Наконец, TestCase предоставляет следующие методы и атрибуты:

сбой ( сообщение = Нет )

Безоговорочно сигнализирует об отказе теста, с сообщением или Нет для сообщение об ошибке.

failureException

Этот атрибут класса выдает исключение, вызванное тестовым методом. Если инфраструктура тестирования должна использовать специализированное исключение, возможно, для переноса дополнительная информация, он должен создать подкласс этого исключения, чтобы «играть ярмарка »с рамкой. Начальное значение этого атрибута Ошибка утверждения .

длинное Сообщение

Этот атрибут класса определяет, что происходит, когда пользовательское сообщение об ошибке передается как аргумент msg при неудачном вызове assertXYY. Истинно - значение по умолчанию. В этом случае добавляется собственное сообщение до конца стандартного сообщения об ошибке. Если установлено значение False , настраиваемое сообщение заменяет стандартное сообщение.

Настройку класса можно переопределить в отдельных методах тестирования, назначив атрибут экземпляра self.longMessage до True или False перед вызов методов assert.

Настройка класса сбрасывается перед каждым тестовым вызовом.

maxDiff

Этот атрибут контролирует максимальную длину вывода diff с помощью assert методы, которые сообщают о различиях в случае сбоя.По умолчанию это 80 * 8 символов. Методы утверждения, на которые влияет этот атрибут: assertSequenceEqual () (включая все сравнения последовательностей методы, которые делегируют ему), assertDictEqual () и assertMultiLineEqual () .

Настройка maxDiff от до None означает, что не существует максимальной длины разн.

Среды тестирования могут использовать следующие методы для сбора информации о тест:

countTestCases ()

Вернуть количество тестов, представленных этим тестовым объектом.Для TestCase , это всегда будет 1 .

defaultTestResult ()

Вернуть экземпляр класса результата теста, который должен использоваться для этого класс тестового примера (если в run () метод).

Для экземпляров TestCase это всегда будет экземпляр TestResult ; подклассы TestCase должны переопределить это как нужно.

id ()

Вернуть строку, идентифицирующую конкретный тестовый пример. Обычно это полное имя тестового метода, включая имя модуля и класса.

краткое Описание ()

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

Изменено в версии 3.1: В версии 3.1 это было изменено, чтобы добавить имя теста в краткое описание даже при наличии строки документации. Это вызвало проблемы с совместимостью с расширениями unittest и добавление имени теста было перемещено в TextTestResult в Python 3.2.

addCleanup ( функция , /, * args , ** kwargs )

Добавить функцию, которая будет вызываться после tearDown () для очистки ресурсов использовался во время теста.Функции будут вызываться в обратном порядке к порядок их добавления ( LIFO ). Они вызываются с любыми аргументами и аргументами ключевого слова, переданными в addCleanup () при их добавлении.

Если setUp () завершается неудачно, что означает, что tearDown () не вызывается, тогда все добавленные функции очистки будут по-прежнему вызываться.

doCleanups ()

Этот метод вызывается безоговорочно после tearDown () , или после setUp () , если setUp () вызывает исключение.

Он отвечает за вызов всех функций очистки, добавленных addCleanup () . Если вам нужно вызвать функции очистки до до tearDown () , затем вы можете позвонить doCleanups () сам.

doCleanups () извлекает методы из стека очистки функционирует по одному, поэтому его можно вызывать в любое время.

classmethod addClassCleanup ( функция , /, * args , ** kwargs )

Добавить функцию, которая будет вызываться после tearDownClass () для очистки ресурсы, используемые во время тестового класса.Функции будут вызываться в обратном порядке порядок их добавления ( LIFO ). Они вызываются с любыми аргументами и аргументами ключевого слова, переданными в addClassCleanup () при их добавлении.

Если setUpClass () завершается неудачно, это означает, что tearDownClass () не является вызывается, то все добавленные функции очистки будут по-прежнему вызываться.

classmethod doClassCleanups ()

Этот метод вызывается безоговорочно после tearDownClass () , или после setUpClass () , если setUpClass () вызывает исключение.

Он отвечает за вызов всех функций очистки, добавленных addClassCleanup () . Если вам нужно вызвать функции очистки до до tearDownClass () , тогда вы можете позвонить doClassCleanups () самостоятельно.

doClassCleanups () извлекает методы из стека очистки функционирует по одному, поэтому его можно вызывать в любое время.

класс unittest. IsolatedAsyncioTestCase ( methodName = 'runTest' )

Этот класс предоставляет API, аналогичный TestCase , а также принимает сопрограммы как тестовые функции.

сопрограмма asyncSetUp ()

Метод, вызываемый для подготовки испытательного приспособления. Это вызывается после setUp () . Это вызывается непосредственно перед вызовом тестового метода; Кроме как AssertionError или SkipTest , любое исключение, вызванное этим методом будет считаться ошибкой, а не провалом теста. Реализация по умолчанию ничего не делает.

сопрограмма asyncTearDown ()

Метод, вызываемый сразу после вызова метода тестирования и результат записан.Это вызывается до tearDown () . Это называется, даже если метод тестирования вызвал исключение, поэтому для реализации в подклассах может потребоваться быть особенно внимательным при проверке внутреннего состояния. Любое исключение, кроме AssertionError или SkipTest , вызванные этим методом, будут считается дополнительной ошибкой, а не провалом теста (таким образом, увеличивая общее количество сообщенных ошибок). Этот метод будет вызываться только в том случае, если asyncSetUp () завершается успешно, независимо от результата метода тестирования.Реализация по умолчанию ничего не делает.

addAsyncCleanup ( функция , /, * args , ** kwargs )

Этот метод принимает сопрограмму, которая может использоваться как функция очистки.

прогон ( результат = нет )

Устанавливает новый цикл событий для запуска теста, собирая результат в объект TestResult передан как результат .Если результат опущено или Нет , создается временный объект результата (путем вызова defaultTestResult () метод) и использовали. Объект результата вернулся к вызывающей стороне run () . По окончании теста все задания в цикле событий отменяются.

Пример заказа:

 из unittest import IsolatedAsyncioTestCase

события = []


класс Test (IsolatedAsyncioTestCase):


    def setUp (сам):
        События.append ("setUp")

    async def asyncSetUp (сам):
        self._async_connection = ждать AsyncConnection ()
        events.append ("asyncSetUp")

    async def test_response (сам):
        events.append ("test_response")
        response = await self._async_connection.get ("https://example.com")
        self.assertEqual (response.status_code, 200)
        self.addAsyncCleanup (self.on_cleanup)

    def tearDown (сам):
        events.append ("tearDown")

    async def asyncTearDown (сам):
        ждать себя._async_connection.close ()
        events.append ("asyncTearDown")

    async def on_cleanup (сам):
        events.append («очистка»)

если __name__ == "__main__":
    unittest.main ()
 

После запуска теста событие будет содержать ["setUp", "asyncSetUp", "test_response", "asyncTearDown", "tearDown", "cleanup"] .

класс unittest. FunctionTestCase ( testFunc , setUp = None , tearDown = None , description = None )

Этот класс реализует часть интерфейса TestCase , который позволяет исполнителю теста проводить тест, но не предоставляет методы какой тестовый код можно использовать для проверки и сообщения об ошибках.Это используется для создания тестовые примеры с использованием устаревшего тестового кода, что позволяет интегрировать его в unittest Фреймворк для тестирования на основе .

Устаревшие псевдонимы

По историческим причинам некоторые из методов TestCase имели один или несколько псевдонимы, которые теперь устарели. В следующей таблице перечислены правильные имена. вместе с их устаревшими псевдонимами:

Не рекомендуется, начиная с версии 3.1: псевдонимы fail *, перечисленные во втором столбце, устарели.

Не рекомендуется, начиная с версии 3.2: псевдонимы assert *, перечисленные в третьем столбце, устарели.

Не рекомендуется, начиная с версии 3.5: имя assertNotRegexpMatches устарело в пользу assertNotRegex () .

Групповые испытания

класс unittest. TestSuite ( тестов = () )

Этот класс представляет собой совокупность отдельных тестовых примеров и наборов тестов.Класс представляет интерфейс, необходимый для запуска тестов. как и любой другой тестовый пример. Запуск экземпляра TestSuite такой же, как итерация по набору, запуск каждого теста индивидуально.

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

TestSuite объекта ведут себя так же, как TestCase объекта, за исключением они фактически не проводят испытания.Вместо этого они используются для агрегирования тесты на группы тестов, которые следует запускать вместе. Некоторые дополнительные доступны методы для добавления тестов в экземпляры TestSuite :

addTest ( тест )

Добавьте в набор TestCase или TestSuite .

addTests ( тестов )

Сложите все тесты из итерации TestCase и TestSuite экземпляры к этому набору тестов.

Это эквивалентно повторению тестов , вызову addTest () для каждый элемент.

TestSuite использует следующие методы с TestCase :

пробег ( результат )

Запустите тесты, связанные с этим набором, собрав результат в объект результата проверки передан как результат . Обратите внимание, что в отличие от TestCase.run () , TestSuite.run () требует, чтобы объект результата пройти.

отладка ()

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

countTestCases ()

Вернуть количество тестов, представленных этим тестовым объектом, включая все индивидуальные тесты и подкомплексы.

__iter__ ()

Тесты, сгруппированные по TestSuite , всегда доступны по итерации. Подклассы могут лениво предоставлять тесты, переопределяя __iter __ () . Примечание что этот метод может вызываться несколько раз в одном пакете (для пример при подсчете тестов или сравнении на равенство), поэтому тесты возвращенный повторными итерациями до TestSuite.run () должен быть то же самое для каждой итерации вызова. После TestSuite.run () , вызывающие должны не полагаться на тесты, возвращаемые этим методом, если вызывающий не использует подкласс, который переопределяет TestSuite._removeTestAtIndex () для сохранения тестовые ссылки.

Изменено в версии 3.2: В более ранних версиях TestSuite обращался к тестам напрямую, а не чем через итерацию, поэтому переопределения __iter __ () было недостаточно для предоставления тестов.

Изменено в версии 3.4: в более ранних версиях TestSuite содержал ссылки на каждый TestCase после TestSuite.запустить () . Подклассы могут восстанавливать это поведение путем переопределения TestSuite._removeTestAtIndex () .

При типичном использовании объекта TestSuite метод run () вызывается TestRunner , а не тестовой системой конечного пользователя.

Нагрузочные и ходовые испытания

класс unittest. Загрузчик тестов

Класс TestLoader используется для создания наборов тестов из классов и модули.Обычно нет необходимости создавать экземпляр этого класса; то unittest Модуль предоставляет экземпляр, который можно использовать как unittest.defaultTestLoader . Однако при использовании подкласса или экземпляра позволяет настраивать некоторые настраиваемые свойства.

Объекты TestLoader имеют следующие атрибуты:

ошибки

Список нефатальных ошибок, обнаруженных при нагрузочных тестах. Не сбрасывать загрузчиком в любой момент.Неустранимые ошибки сигнализируются соответствующими метод, вызывающий исключение для вызывающей стороны. Также возможны нефатальные ошибки. указывается синтетическим тестом, который вызывает исходную ошибку, когда запустить.

TestLoader объекты имеют следующие методы:

loadTestsFromTestCase ( testCaseClass )

Возвращает набор всех тестовых случаев, содержащихся в TestCase, производном от . testCaseClass .

Экземпляр тестового примера создается для каждого метода, названного getTestCaseNames () .По умолчанию это имена методов начиная с тест . Если getTestCaseNames () возвращает no методов, но реализован метод runTest () , единственный тест case создается вместо этого для этого метода.

loadTestsFromModule ( модуль , шаблон = Нет )

Вернуть набор всех тестовых примеров, содержащихся в данном модуле. Этот метод ищет в модуле классы, производные от TestCase и создает экземпляр класса для каждого метода тестирования, определенного для класс.

Примечание

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

Если модуль предоставляет функцию load_tests , он будет вызван для загрузить тесты. Это позволяет модулям настраивать тестовую загрузку.Это протокол load_tests. Аргумент шаблона передается как третий аргумент load_tests .

Изменено в версии 3.2: добавлена ​​поддержка load_tests .

Изменено в версии 3.5: Недокументированный и неофициальный аргумент use_load_tests по умолчанию устарел и игнорируется, хотя все еще принимается для обратного совместимость. Метод также теперь принимает аргумент, состоящий только из ключевых слов. шаблон , который передается в load_tests в качестве третьего аргумента.

loadTestsFromName ( имя , module = None )

Вернуть набор всех тестовых примеров с учетом спецификатора строки.

Спецификатор имя - это «имя, разделенное точками», которое может разрешать либо модуль, класс тестового примера, метод тестирования в классе тестового примера, TestSuite или вызываемый объект, который возвращает TestCase или TestSuite экземпляр. Эти проверки применяется в указанном здесь порядке; то есть метод возможного теста case-класс будет выбран как «тестовый метод в тестовом классе», а не «вызываемый объект».

Например, если у вас есть модуль SampleTests , содержащий TestCase - производный класс SampleTestCase с тремя тестами методы ( test_one () , test_two () и test_three () ), спецификатор 'SampleTests.SampleTestCase' приведет к тому, что этот метод вернуть набор, который будет запускать все три метода тестирования. Использование спецификатора 'SampleTests.SampleTestCase.test_two' заставит его вернуть тест набор, который будет запускать только тестовый метод test_two () .Спецификатор может относиться к модулям и пакетам, которые не были импортированы; они будут быть импортированным как побочный эффект.

Метод дополнительно разрешает имя относительно данного модуля .

Изменено в версии 3.5: если при перемещении возникает ошибка ImportError или AttributeError name , то синтетический тест, который вызывает эту ошибку при запуске, будет вернулся. Эти ошибки включены в ошибки, накопленные себя.ошибки.

loadTestsFromNames ( имен , module = None )

Аналогично loadTestsFromName () , но принимает последовательность имен, а не чем одно имя. Возвращаемое значение - это набор тестов, который поддерживает все тесты, определенные для каждого имени.

getTestCaseNames ( testCaseClass )

Возвращает отсортированную последовательность имен методов, найденных в testCaseClass ; это должен быть подкласс TestCase .

обнаружить ( start_dir , pattern = 'test * .py' , top_level_dir = None )

Найдите все тестовые модули, рекурсивно переходя в подкаталоги из указанный начальный каталог и вернуть объект TestSuite, содержащий их. Будут загружены только тестовые файлы, соответствующие шаблону . (Использование стиля оболочки сопоставление с шаблоном.) Только имена модулей, которые можно импортировать (т.е. Идентификаторы Python) будут загружены.

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

Если при импорте модуля произошел сбой, например, из-за синтаксической ошибки, то это будет записано как отдельная ошибка, и обнаружение будет продолжено. Если сбой импорта из-за поднятого SkipTest , он будет записывается как пропуск вместо ошибки.

Если пакет (каталог, содержащий файл с именем __init__.py ) это найден, пакет будет проверен на наличие функции load_tests . Если это существует, то он будет называться package.load_tests (загрузчик, тесты, паттерн) . Test Discovery заботится чтобы гарантировать, что пакет проверяется на тесты только один раз во время вызов, даже если функция load_tests сама вызывает загрузчик. Открытие .

Если существует load_tests , то обнаружение , а не , рекурсивно переходит в пакет, load_tests отвечает за загрузку всех тестов в упаковка.

Шаблон намеренно не сохраняется в качестве атрибута загрузчика, чтобы пакеты могут продолжить обнаружение самостоятельно. top_level_dir хранится так load_tests не нужно передавать этот аргумент в loader.discover () .

start_dir может быть именем модуля, разделенным точками, а также каталогом.

Изменено в версии 3.4: модули, которые вызывают SkipTest при импорте, записываются как пропуски, не ошибки.

Изменено в версии 3.4: Пути сортируются перед импортом, так что порядок выполнения является то же самое, даже если порядок базовой файловой системы не зависит по имени файла.

Изменено в версии 3.5: Найденные пакеты теперь проверяются на load_tests независимо от соответствует ли их путь шаблону , потому что это невозможно для имя пакета, соответствующее шаблону по умолчанию.

Следующие атрибуты TestLoader могут быть настроены либо с помощью подкласс или присвоение экземпляру:

testMethodPrefix

Строка с префиксом имени метода, который будет интерпретироваться как тест методы.Значение по умолчанию - , «тест» .

Это влияет на getTestCaseNames () и все loadTestsFrom * () методы.

sortTestMethodsUsing

Функция, которая будет использоваться для сравнения имен методов при их сортировке в getTestCaseNames () и все loadTestsFrom * () методы.

люксКласс

Вызываемый объект, который создает набор тестов из списка тестов.Нет методы на результирующем объекте необходимы. Значение по умолчанию - TestSuite класс.

Это влияет на все методы loadTestsFrom * () .

testNamePatterns

Список шаблонов имен тестов с подстановочными знаками в стиле оболочки Unix, которые тестируют методы должны соответствовать, чтобы быть включенными в наборы тестов (см. опцию -v ).

Если этот атрибут не Нет (по умолчанию), все методы тестирования должны быть входящие в комплекты тестов должны соответствовать одному из шаблонов в этом списке.Обратите внимание, что совпадения всегда выполняются с использованием fnmatch.fnmatchcase () , поэтому в отличие от шаблонов, переданных в опцию -v , простые шаблоны подстроки необходимо будет преобразовать с использованием подстановочных знаков * .

Это влияет на все методы loadTestsFrom * () .

класс unittest. Результат теста

Этот класс используется для сбора информации о том, какие тесты прошли успешно. и которые потерпели неудачу.

Объект TestResult хранит результаты набора тестов. В TestCase и TestSuite классы гарантируют, что результаты правильно записаны; авторам тестов не нужно беспокоиться о записи результат испытаний.

Фреймворки тестирования

, построенные на основе unittest , могут нуждаться в доступе к TestResult объект, созданный путем запуска набора тестов для создания отчетов цели; экземпляр TestResult возвращается TestRunner.run () для этой цели.

экземпляры TestResult имеют следующие атрибуты, которые будут Интерес при просмотре результатов запуска набора тестов:

ошибки

Список, содержащий 2 кортежа из экземпляров TestCase и строк хранение отформатированных трассировок. Каждый кортеж представляет собой тест, который поднял неожиданное исключение.

сбой

Список, содержащий 2 кортежа из экземпляров TestCase и строк хранение отформатированных трассировок.Каждый кортеж представляет собой тест, в котором произошел сбой. был явно передан с помощью методов TestCase.assert * () .

пропущено

Список, содержащий 2 кортежа из экземпляров TestCase и строк удерживая причину пропуска теста.

ожидаемый сбой

Список, содержащий 2 кортежа из экземпляров TestCase и строк хранение отформатированных трассировок.Каждый кортеж представляет собой ожидаемый сбой или ошибка тестового примера.

неожиданный успех

Список, содержащий экземпляра TestCase , которые были отмечены как ожидалось неудачи, но удалось.

следует остановить

Устанавливается на Истинно , когда выполнение тестов должно останавливаться на stop () .

тест Выполнить

Общее количество выполненных тестов.

буфер

Если установлено значение true, sys.stdout и sys.stderr будут помещены в буфер между Вызываются startTest () и stopTest () . Собранный результат будет будет отображаться только на реальных sys.stdout и sys.stderr , если тест сбои или ошибки. Любой вывод также прилагается к сообщению об ошибке / сбое.

отказоустойчивый

Если установлено значение true stop () будет вызываться при первом сбое или ошибке, остановка пробного запуска.

tb_locals

Если установлено значение true, то в трассировке будут отображаться локальные переменные.

был успешным ()

Вернуть Истинно , если все тесты пройдены до сих пор, в противном случае возвращает Ложь .

стоп ()

Этот метод может быть вызван, чтобы сигнализировать, что набор выполняемых тестов должен быть прервано установкой для атрибута shouldStop значения True . TestRunner объекта должны учитывать этот флаг и возвращаться без выполнение любых дополнительных тестов.

Например, эта функция используется классом TextTestRunner для остановить тестовую среду, когда пользователь сигнализирует о прерывании от клавиатура. Интерактивные инструменты, обеспечивающие TestRunner реализации могут использовать это аналогичным образом.

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

startTest ( test )

Вызывается, когда будет запущен тестовый пример test .

stopTest ( test )

Вызывается после выполнения тестового примера test , независимо от исход.

startTestRun ()

Вызывается один раз перед выполнением любых тестов.

stopTestRun ()

Вызывается один раз после выполнения всех тестов.

addError ( test , err )

Вызывается, когда тестовый пример test вызывает непредвиденное исключение. err - это кортеж формы, возвращенный функцией sys.exc_info () : (тип, значение, трассировка) .

Реализация по умолчанию добавляет кортеж (test, formatted_err) к ошибка экземпляра атрибут, где formatted_err - это отформатированная трассировка, полученная из err .

addFailure ( test , err )

Вызывается, когда тестовый пример test сигнализирует об ошибке. err - это кортеж форма, возвращаемая sys.exc_info () : (тип, значение, трассировка) .

Реализация по умолчанию добавляет кортеж (test, formatted_err) к сбой экземпляра атрибут , где formatted_err - это отформатированная трассировка, полученная из err .

addSuccess ( тест )

Вызывается, когда тестовый пример проходит успешно.

Реализация по умолчанию ничего не делает.

addSkip ( тест , причина )

Вызывается, когда пропущен тестовый пример test . причина причина тест дали на пропуск.

Реализация по умолчанию добавляет кортеж (тест, причина) в экземпляра пропустил атрибут .

addExpectedFailure ( test , err )

Вызывается, когда тестовый пример тест завершается неудачно или возникает ошибка, но был отмечен значком декоратор expectedFailure () .

Реализация по умолчанию добавляет кортеж (test, formatted_err) к атрибут expectedFailures экземпляра , где formatted_err это отформатированная трассировка, полученная из err .

addUnexpectedSuccess ( тест )

Вызывается, когда тестовый пример test был отмечен expectedFailure () декоратор, но успешно.

Реализация по умолчанию добавляет тест к экземпляру unknownSuccesses Атрибут .

addSubTest ( тест , субтест , результат )

Вызывается после завершения субтеста. тест - тестовый пример соответствующий методу испытаний. субтест кастомный TestCase экземпляр, описывающий подтест.

Если результат - Нет , подтест завершился успешно. Иначе, это не удалось, за исключением случая, когда результат является кортежем вида возвращается sys.exc_info () : (тип, значение, трассировка) .

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

класс unittest. TextTestResult ( поток , описаний , подробностей )

Конкретная реализация TestResult , используемая TextTestRunner .

Новое в версии 3.2: этот класс ранее назывался _TextTestResult . Старое имя все еще существует как псевдоним, но устарел.

unittest. defaultTestLoader

Экземпляр класса TestLoader , предназначенный для совместного использования. Если нет требуется настройка TestLoader , этот экземпляр можно использовать вместо того, чтобы многократно создавать новые экземпляры.

класс unittest. TextTestRunner ( stream = None , descriptions = True , verbosity = 1 , failfast = False , buffer = False , resultclass = None , warnings = None , tb_locals = Ложь )

Базовая реализация средства выполнения тестов, которая выводит результаты в поток.Если поток Нет , по умолчанию sys.stderr используется в качестве выходного потока. Этот класс имеет несколько настраиваемых параметров, но по сути очень прост. Графический приложения, которые запускают наборы тестов, должны предоставлять альтернативные реализации. Такой реализации должны принимать ** kwargs в качестве интерфейса для создания бегунов изменяется при добавлении функций в unittest.

По умолчанию этот бегун показывает DeprecationWarning , PendingDeprecationWarning , ResourceWarning и ImportWarning , даже если они по умолчанию игнорируются.Предупреждения об устаревании, вызванные устаревшим модулем unittest методы также имеют специальный регистр и, когда предупреждение фильтры 'по умолчанию' или 'всегда' , они появятся только один раз на модуль, чтобы избежать слишком большого количества предупреждающих сообщений. Такое поведение может можно переопределить с помощью параметров Python -Wd или -Wa (см. Предупреждение) и оставив предупреждений с по Нет .

Изменено в версии 3.2: Добавлен аргумент предупреждения .

Изменено в версии 3.2: поток по умолчанию установлен на sys.stderr во время создания экземпляра, а не чем время импорта.

Изменено в версии 3.5: Добавлен параметр tb_locals.

_makeResult ()

Этот метод возвращает экземпляр TestResult , используемый run () . Он не предназначен для прямого вызова, но может быть переопределен в подклассы для предоставления настраиваемого TestResult .

_makeResult () создает экземпляр класса или вызываемого объекта, переданного в TextTestRunner в качестве аргумента resultclass .Это по умолчанию TextTestResult , если не указан resultclass . Класс результата создается со следующими аргументами:

 поток, описания, многословие
 
пробег ( проба )

Этот метод является основным общедоступным интерфейсом к TextTestRunner . Этот Метод принимает экземпляр TestSuite или TestCase . А TestResult создается путем вызова _makeResult () и тесты выполняются, а результаты выводятся на стандартный вывод.

unittest. основной ( module = '__ main__' , defaultTest = None , argv = None , testRunner = None , testLoader = unittest.defaultTestLoader , 36 exit = 1 , failfast = Нет , catchbreak = Нет , buffer = Нет , предупреждений = Нет )

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

, если __name__ == '__main__':
    unittest.main ()
 

Вы можете запустить тесты с более подробной информацией, передав многословие аргумент:

, если __name__ == '__main__':
    unittest.main (многословие = 2)
 

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

Аргумент argv может быть списком параметров, переданных программе, с первым элементом является имя программы. Если не указано или Нет , используются значения sys.argv .

Аргумент testRunner может быть либо классом тестового исполнителя, либо уже создал его экземпляр. По умолчанию основной вызывает sys.exit () с код выхода, указывающий на успешное или неудачное выполнение тестов.

Аргумент testLoader должен быть экземпляром TestLoader , и по умолчанию defaultTestLoader .

main поддерживает использование из интерактивного интерпретатора путем передачи аргумент выход = ложь . Результат отобразится на стандартном выходе без вызов sys.exit () :

 >>> из unittest import main
>>> main (module = 'test_module', exit = False)
 

Параметры failfast , catchbreak и buffer имеют одинаковые эффект как одноименные параметры командной строки.

Аргумент предупреждений указывает фильтр предупреждений это следует использовать при запуске тестов. Если не указано иное, будет останется Нет , если параметр -W передан в python (см. Предупреждение), в противном случае будет установлено значение «по умолчанию» .

Вызов main фактически возвращает экземпляр класса TestProgram . Это сохраняет результат выполненных тестов как атрибут result .

Изменено в версии 3.1: добавлен параметр exit .

Изменено в версии 3.2: многословие , failfast , catchbreak , buffer и предупреждений добавлено параметров.

Изменено в версии 3.4: Параметр defaultTest был изменен, чтобы также принимать итерацию имена тестов.

load_tests Протокол
Модули или пакеты

могут настраивать способ загрузки тестов из них в нормальном режиме. запуски тестов или обнаружение тестов путем реализации функции с именем load_tests .

Если тестовый модуль определяет load_tests , он будет вызываться TestLoader.loadTestsFromModule () со следующими аргументами:

 load_tests (загрузчик, стандартные_тесты, шаблон)
 

, где шаблон передается напрямую из loadTestsFromModule . Это по умолчанию Нет .

Он должен вернуть TestSuite .

загрузчик - это экземпляр TestLoader , выполняющий загрузку. standard_tests - это тесты, которые по умолчанию загружаются из модуль. Обычно тестовые модули хотят только добавлять или удалять тесты. из стандартного набора тестов. Третий аргумент используется при загрузке пакетов в рамках обнаружения тестов.

Типичная функция load_tests , которая загружает тесты из определенного набора TestCase классы могут выглядеть так:

 test_cases = (TestCase1, TestCase2, TestCase3)

def load_tests (загрузчик, тесты, шаблон):
    suite = TestSuite ()
    для test_class в test_cases:
        тесты = загрузчик.loadTestsFromTestCase (тестовый_класс)
        suite.addTests (тесты)
    возвращение люкс
 

Если обнаружение запущено в каталоге, содержащем пакет, либо из в командной строке или вызвав TestLoader.discover () , затем пакет __init__.py будет проверен на load_tests . Если эта функция не существует, обнаружение будет рекурсивно в пакет, как если бы это было просто другой каталог. В противном случае обнаружение тестов пакета будет отложено. на load_tests , который вызывается со следующими аргументами:

 load_tests (загрузчик, стандартные_тесты, шаблон)
 

Это должно вернуть TestSuite , представляющий все тесты из упаковки.( standard_tests будет содержать только тесты собрано с __init__.py .)

Поскольку шаблон передается в load_tests , пакет можно бесплатно продолжить (и потенциально изменить) обнаружение теста. "Ничего не делать" load_tests для тестового пакета будет выглядеть так:

 def load_tests (загрузчик, стандартные_тесты, шаблон):
    # каталог верхнего уровня, кэшируемый на экземпляре загрузчика
    this_dir = os.path.dirname (__ file__)
    package_tests = загрузчик.обнаружить (start_dir = this_dir, pattern = pattern)
    standard_tests.addTests (package_tests)
    вернуть стандартные_тесты
 

Изменено в версии 3.5: Discovery больше не проверяет имена пакетов на соответствие шаблону из-за невозможность совпадения имен пакетов с шаблоном по умолчанию.

Приспособления для классов и модулей

Приспособления для классов и модулей

реализованы в TestSuite . Когда набор тестов встречает тест из нового класса, затем tearDownClass () из предыдущего класса (если он есть) вызывается, за которым следует setUpClass () из нового класса.

Аналогично, если тест взят из модуля, отличного от предыдущего теста, тогда tearDownModule из предыдущего модуля, за которым следует setUpModule из нового модуля.

После завершения всех тестов последний tearDownClass и tearDownModule запущены.

Обратите внимание, что общие приборы плохо работают с [потенциальными] функциями, такими как test распараллеливание, и они нарушают изоляцию тестов. Их следует использовать с осторожностью.

По умолчанию тесты, создаваемые загрузчиками модульных тестов, группируются. все тесты из одних и тех же модулей и классов вместе. Это приведет к setUpClass / setUpModule (и т. Д.) Вызывается ровно один раз для каждого класса и модуль. Если вы рандомизируете порядок, чтобы тесты из разных модулей и классы смежны друг с другом, тогда эти общие функции фикстуры могут быть вызывается несколько раз за один тестовый прогон.

Общие светильники не предназначены для работы с апартаментами с нестандартными заказ. BaseTestSuite все еще существует для фреймворков, которые не хотят поддержка общих светильников.

Если возникают какие-либо исключения во время одной из общих функций прибора тест регистрируется как ошибка. Потому что нет соответствующего теста экземпляр объекта _ErrorHolder (который имеет тот же интерфейс, что и TestCase ) создается для представления ошибки. Если вы просто используете стандартного средства запуска unittest test, то эта деталь не имеет значения, но если вы автор фреймворка, это может быть актуально.

setUpClass и tearDownClass

Они должны быть реализованы как методы класса:

 импортный unittest

класс Test (unittest.TestCase):
    @classmethod
    def setUpClass (cls):
        cls._connection = createExuredConnectionObject ()

    @classmethod
    def tearDownClass (cls):
        cls._connection.destroy ()
 

Если вам нужны setUpClass и tearDownClass в базовых классах, называемых тогда вы должны сами позвонить им. Реализации в TestCase пустые.

Если исключение возникает во время setUpClass , тогда тесты в классе не запускаются, и tearDownClass не запускается. Пропущенные занятия не будут иметь setUpClass или tearDownClass запустить. Если исключение составляет SkipTest исключение, тогда класс будет пропущен а не как ошибку.

setUpModule и tearDownModule

Они должны быть реализованы как функции:

 по умолчанию setUpModule ():
    createConnection ()

def tearDownModule ():
    closeConnection ()
 

Если исключение возникает в setUpModule , то ни один из тестов в модуль будет запущен и tearDownModule не будет запущен.Если исключение составляет SkipTest исключение, тогда модуль будет пропущен а не как ошибку.

Чтобы добавить код очистки, который должен запускаться даже в случае исключения, используйте addModuleCleanup :

unittest. addModuleCleanup ( функция , /, * args , ** kwargs )

Добавить функцию, которая будет вызываться после tearDownModule () для очистки ресурсы, используемые во время тестового класса.Функции будут вызываться в обратном порядке порядок их добавления ( LIFO ). Они вызываются с любыми аргументами и аргументами ключевого слова, переданными в addModuleCleanup () при их добавлении.

Если setUpModule () завершается неудачно, что означает, что tearDownModule () не является вызывается, то все добавленные функции очистки будут по-прежнему вызываться.

unittest. doModuleCleanups ()

Эта функция вызывается безоговорочно после tearDownModule () , или после setUpModule () , если setUpModule () вызывает исключение.

Он отвечает за вызов всех функций очистки, добавленных addCleanupModule () . Если вам нужно вызвать функции очистки до до tearDownModule () , тогда вы можете позвонить doModuleCleanups () самостоятельно.

doModuleCleanups () извлекает методы из стека очистки функционирует по одному, поэтому его можно вызывать в любое время.

Обработка сигналов

Параметр командной строки -c / - catch для unittest, вместе с параметром catchbreak до unittest.main () , укажите более удобное обращение с control-C во время тестового прогона. С перерывом с включенным поведением control-C позволит завершить текущий тест, После этого тестовый запуск завершится, и будут представлены все результаты на текущий момент. Второй control-c вызовет KeyboardInterrupt обычным способом.

Обработчик сигнала обработки control-c пытается оставаться совместимым с кодом или тесты, которые устанавливают собственный обработчик сигнала signal.SIGINT . Если unittest вызывается обработчик, но - это не установленный сигнал .Обработчик SIGINT , то есть он был заменен тестируемой системой и делегирован, затем он вызывает обработчик по умолчанию. Обычно это ожидаемое поведение по коду. который заменяет установленный обработчик и делегирует ему полномочия. Для индивидуальных тестов что нужно unittest control-c обработка отключила removeHandler () декоратор можно использовать.

Для авторов фреймворка есть несколько служебных функций, позволяющих включить control-c функциональность обработки в рамках тестовой среды.

unittest. installHandler ()

Установите обработчик control-c. При получении сигнала .SIGINT (обычно в ответ на нажатие пользователем Ctrl-c) все зарегистрированные результаты вызовите stop () .

unittest. registerResult ( результат )

Зарегистрируйте объект TestResult для обработки control-c. Регистрация result сохраняет слабую ссылку на него, поэтому он не препятствует сборщик мусора.

Регистрация объекта TestResult не имеет побочных эффектов, если control-c обработка не включена, поэтому тестовые фреймворки могут безоговорочно регистрировать все результаты, которые они создают, независимо от того, включена ли обработка.

unittest. removeResult ( результат )

Удалить зарегистрированный результат. Как только результат был удален, тогда stop () больше не будет вызываться для этого объекта результата в ответ на Control-c.

unittest. removeHandler ( function = None )

При вызове без аргументов эта функция удаляет обработчик control-c если он был установлен. Эту функцию также можно использовать как декоратор тестов. для временного удаления обработчика во время выполнения теста:

 @ unittest.removeHandler
def test_signal_handling (сам):
    ...
 

ScalaTest

ScalaTest делает три утверждения доступными по умолчанию для любого признака стиля.Ты можешь использовать:

  • assert для общих утверждений;
  • assertResult , чтобы отличить ожидаемые значения от фактических;
  • assertThrows , чтобы убедиться, что фрагмент кода генерирует ожидаемое исключение.

Чтобы быстро приступить к работе в ScalaTest, изучите и используйте эти три утверждения. Позже, если хочешь можно переключиться на более выразительные сопоставители DSL.

Утверждения ScalaTest определены в трейте Утверждения , который расширен Suite , суперпризнанный все стилевые черты.Черта Утверждения также предоставляет:

  • предположим, что условно отменит тест ;
  • не пройден безоговорочно не пройден тест;
  • отменить для безоговорочной отмены теста;
  • успешно , чтобы проверка прошла безоговорочно;
  • перехватить , чтобы убедиться, что фрагмент кода генерирует ожидаемое исключение, а затем делает утверждения об исключении;
  • assertDoesNotCompile , чтобы гарантировать, что часть кода не компилируется;
  • assertCompiles , чтобы гарантировать компиляцию небольшого количества кода;
  • assertTypeError , чтобы гарантировать, что часть кода не компилируется из-за ошибки типа (не синтаксического анализа);
  • withClue , чтобы добавить дополнительную информацию об ошибке.

Все эти конструкции описаны ниже.

утверждает макрос

В любой программе Scala вы можете писать утверждения, вызывая assert и передавая логическое выражение , например:

val left = 2
val right = 1
утверждать (слева == справа)
 

Если переданное выражение истинно , assert вернется нормально. Если ложь , Scala assert внезапно завершится с ошибкой AssertionError .Такое поведение обеспечивается метод assert , определенный в объекте Predef , члены которого неявно импортируются в каждый Исходный файл Scala. Эта черта Assertions определяет еще один метод assert , который скрывает один из Predef . Он ведет себя так же, за исключением того, что если передано false , он выбрасывает TestFailedException вместо AssertionError . Почему? Поскольку в отличие от AssertionError , TestFailedException несет информацию о точном какой элемент в трассировке стека представляет строка тестового кода, которая завершилась неудачно, что может помочь пользователям быстрее найти вызывающую нарушение строка кода в неудачном тесте.Кроме того, утверждение в ScalaTest предоставляет более качественные сообщения об ошибках, чем утверждение в Scala .

Если вы передадите предыдущее логическое выражение , left == right до подтвердит в тесте ScalaTest, об ошибке будет сообщено, что, поскольку assert реализован как макрос, включает отчет о левом и правом значениях. Например, учитывая тот же код, что и выше, но с использованием утверждений ScalaTest:

импортировать org.scalatest.Утверждения._
val left = 2
val right = 1
утверждать (слева == справа)
 

Подробное сообщение в брошенном TestFailedException из этого assert будет: «2 не равно 1».

Макрос assert в ScalaTest работает путем распознавания шаблонов в AST выражения, переданного в assert и, для конечного набора общих выражений, выдавая сообщение об ошибке, что эквивалентный сопоставитель ScalaTest выражение даст. Вот несколько примеров, где a равно 1, b равно 2, c равно 3, d равно 4, xs равно List (a, b, c) и num равно 1.0:

assert (a == b || c> = d)


утверждать (xs.exists (_ == 4))


assert ("привет" .startsWith ("h") && "до свидания" .endsWith ("y"))


assert (num.isInstanceOf [Int])


assert (Некоторые (2) .isEmpty)

 

Для выражений, которые не распознаются, макрос в настоящее время выводит строку представление (обессахаренного) AST и добавляет "было ложным" . Вот несколько примеров сообщения об ошибках для нераспознанных выражений:

assert (Нет. определено)


assert (xs.exists (я => я> 10))

 

Стандартное сообщение об ошибке можно дополнить, указав в качестве второго аргумента строку на утверждать , например:

попытка val = 2
assert (попытка == 1, "Выполнение было предпринято" + влево + "раз вместо 1 раза")
 

Используя эту форму assert , отчет об ошибках будет более конкретным для вашей проблемной области, тем самым помогая вам отладить проблему.Эта черта Assertions также смешивается с TripleEquals , что дает вам оператор === который позволяет настраивать Equality , выполнять проверки равенства с числовыми Допуск и принудительное применение ограничений типа во время компиляции с помощью родственный признак TypeCheckedTripleEquals .

Ожидаемые результаты

Хотя макрос assert обеспечивает естественное, читаемое расширение механизма assert в Scala, который предоставляет хорошие сообщения об ошибках, поскольку операнды становятся длиннее, код становится менее читаемым.Кроме того, сообщения об ошибках сгенерировано для == и === сравнений не делайте различий между фактическими и ожидаемыми значениями. Операнды называются слева и справа , потому что, если бы один был назван ожидаемым , а другой фактическим , людям было бы трудно помните, что было что. Чтобы помочь с этими ограничениями утверждений, Suite включает метод под названием assertResult , который может использоваться как альтернатива assert .Чтобы использовать assertResult , вы помещаете ожидаемое значение в круглых скобках после assertResult , за которым следуют фигурные скобки, содержащие код это должно привести к ожидаемому значению. Например:

val a = 5
значение b = 2
assertResult (2) {
  а - б
}
 

В этом случае ожидаемое значение 2 , а тестируемый код a - b . Это утверждение не будет выполнено, и подробное сообщение в TestFailedException будет читать: «Ожидается 2, но получено 3."

Форсирование отказов

Если вам просто нужно, чтобы тест завершился неудачно, вы можете написать:

неудача()
 

Или, если вы хотите, чтобы тест не прошел с сообщением, напишите:

fail ("У меня плохое предчувствие по этому поводу.")
 
Достижение успеха

В тестах асинхронного стиля вы должны завершить тестовое тело с помощью Future [Assertion] или Утверждение . Утверждения ScalaTest (включая выражения сопоставления) имеют тип результата Утверждение , поэтому завершение утверждения удовлетворит компилятор.Если тестовое тело или тело функции передано в Future.map , , а не , заканчиваются типом Утверждение , однако вы можете исправить ошибку типа, поместив преуспел в конце тело теста или функции:

добиться успеха
 
Ожидаемые исключения

Иногда необходимо проверить, вызывает ли метод ожидаемое исключение при определенных обстоятельствах, например как когда в метод передаются недопустимые аргументы. Вы можете сделать это в стиле JUnit 3, например:

val s = "привет"
пытаться {
  с.charAt (-1)
  неудача()
}
ловить {
  case _: IndexOutOfBoundsException =>
}
 

Если charAt выдает IndexOutOfBoundsException , как ожидалось, управление будет передано к корпусу catch, который ничего не делает. Если, однако, charAt не сгенерирует исключение, следующий оператор fail () будет запущен. Ошибка Метод всегда завершается внезапно с TestFailedException , тем самым сигнализируя о неудавшемся тесте.

Чтобы упростить выражение и чтение этого распространенного варианта использования, ScalaTest предоставляет два метода: assert Выбрасывает и перехват .Вот как вы используете assertThrows :

val s = "привет"
assertThrows [IndexOutOfBoundsException] {
  s.charAt (-1)
}
 

Этот код во многом похож на предыдущий пример. Если charAt выдает экземпляр IndexOutOfBoundsException , assertThrows вернет Успешно . Но если charAt завершается нормально, или выдает другой исключение, assertThrows завершится внезапно с TestFailedException .

Метод перехвата ведет себя так же, как assertThrows , за исключением того, что вместо возврата Succeeded , перехват возвращает перехваченное исключение, чтобы вы могли изучить его дальше, если хотите. Например, вам может понадобиться чтобы гарантировать, что данные, содержащиеся внутри исключения, имеют ожидаемые значения. Вот пример:

val s = "привет"
val поймал =
  перехват [IndexOutOfBoundsException] {
    s.charAt (-1)
  }
assert (поймано.getMessage.indexOf ("- 1")! = -1)
 
Проверка того, что фрагмент кода компилируется или не компилируется.

Часто при создании библиотек может потребоваться обеспечить, чтобы определенные механизмы кода представляют собой потенциальные «ошибки пользователя», которые не компилируются, так что ваша библиотека более устойчива к ошибкам. Типаж ScalaTest Assertions включает следующий синтаксис для этой цели:

assertDoesNotCompile ("val a: String = 1")
 

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

assertTypeError ("val a: String = 1")
 

Обратите внимание, что вызов assertTypeError будет успешным только в том случае, если данный фрагмент кода не скомпилировать из-за ошибки типа.Синтаксическая ошибка по-прежнему приведет к возникновению исключения TestFailedException .

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

assertCompiles ("val a: Int = 1")
 

Хотя предыдущие три конструкции реализованы с помощью макросов, которые во время компиляции определяют, фрагмент кода, представленный строкой, компилируется или не компилируется, ошибки сообщаются как сбои теста во время выполнения.

Допущения

Признак Утверждения также предоставляют методы, которые позволяют отменить тест .Вы бы отменили тест, если ресурс, требуемый для теста, был недоступен. Например, если тест требует, чтобы внешняя база данных была в сети, а это не так, тест может быть отменен, чтобы указать не удалось запустить из-за отсутствия базы данных. Такой тест предполагает, что база данных доступен, и вы можете использовать метод предположить , чтобы указать это в начале тест, например:

Предположим (database.isAvailable)
 

Для каждого перегруженного метода assert трейт Assertions предоставляет перегруженный предполагает метод с идентичной сигнатурой и поведением, за исключением предполагает, что метода генерируют TestCanceledException , тогда как assert методы генерируют TestFailedException .Как и в случае с assert , предположим, что скрывает метод Scala в Predef , который выполняет аналогичный функция, но выдает AssertionError . И так же, как вы можете с assert , вы получите сообщение об ошибке, извлеченное макросом из AST, переданного на , предположим , и можете необязательно укажите строку подсказки, чтобы дополнить это сообщение об ошибке. Вот несколько примеров:

Предположим (database.isAvailable, "База данных снова не работает")
Предположим (база данных.getAllUsers.count === 9)
 
Принудительные отмены

Для каждого перегруженного метода fail существует соответствующий метод cancel с идентичной подписью и поведением, за исключением отмены методов throw TestCanceledException , тогда как не работают методы бросают TestFailedException . Таким образом, если вам просто нужно отменить тест, вы можете написать:

отменить()
 

Если вы хотите отменить тест с сообщением, просто поместите сообщение в круглые скобки:

отменить («Невозможно запустить тест, потому что не было найдено интернет-соединение»)
 
Получение подсказки

Если вам нужно больше информации, чем предоставляется по умолчанию методами этой черты, вы можете указать строку «подсказки» одним из нескольких способов.Предоставляемая вами дополнительная информация (или "подсказки") будет быть включенным в подробное сообщение о возникшем исключении. Оба assert и assertResult обеспечивают способ получения подсказки включены напрямую, перехват нет. Вот пример подсказок, предоставленных непосредственно в assert :

assert (1 + 1 === 3, "это ключ")
 

и в assertResult :

assertResult (3, "это ключ") {1 + 1}
 

Исключения, созданные двумя предыдущими операторами, будут включать подсказку строка, "это ключ" в подробном сообщении об исключении.Чтобы получить ту же подсказку в подробном сообщении о сгенерированном исключении при неудачном вызове assertThrows требуется использование withClue :

withClue ("это ключ") {
  assertThrows [IndexOutOfBoundsException] {
    "привет" .charAt (-1)
  }
}
 

Метод withClue только добавит строку подсказки к детали сообщение типов исключений, которые смешиваются с чертой ModifiableMessage . См. Документацию для ModifiableMessage для получения дополнительной информации.Если вы хотите разместить строку подсказки после блока кода, см. Документацию для Прикладные ключи .

Затем узнайте, как пометить свои тесты тегами.

В чем разница между GED и дипломом о среднем образовании?

Если вы собираетесь пройти GED, у вас может возникнуть целый ряд вопросов об этом типе сертификации. В чем разница между GED и аттестатом о среднем образовании? Заботятся ли работодатели и колледжи о том, какой у вас есть? Есть ли ограничения на то, что вы можете делать с дипломом GED по сравнению с дипломом о среднем образовании? В GED Testing Services есть ответы на все вопросы и многое другое!

Что такое GED?

GED состоит из теста GED и учетных данных GED.Тест GED включает экзамены по четырем различным темам, включая математику, логическое мышление с помощью языковых искусств, естественные науки и общественные науки. Если эти предметы кажутся знакомыми, это потому, что старшеклассники сталкиваются с ними каждый день в классе. Фактически, если вы посещали среднюю школу до первого года обучения, вы должны быть вполне уверены в своей способности подготовиться к экзамену GED и сдать его.

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

Приравнивается ли GED к аттестату средней школы?

GED - это аттестат об окончании средней школы, поэтому вы можете использовать его для подачи заявления в колледж или для резюме на работу, как и с аттестатом о среднем образовании. И если вам интересно, какие школы и рабочие места принимают GED, у нас есть хорошие новости! Более 98 процентов школ в США принимают GED, включая общественные колледжи, университеты и частные школы. Сопоставьте свой GED с хорошим результатом SAT или ACT, и у вас будет отличная возможность поступить в любую школу, которую вы пожелаете.

Если вы готовы окунуться в рабочую силу, GED - отличный вариант и в этой области. Работодатели рассматривают GED как аттестат об окончании средней школы, поэтому у вас не должно возникнуть проблем с подачей заявления о приеме на работу, если у вас есть навыки и опыт, необходимые для этой должности. Кроме того, получение GED может значительно увеличить ваши доходы. Многие выпускники GED продолжают зарабатывать на 9000 долларов больше в год, чем те, кто не имеет аттестата средней школы.

Какой вариант вам подходит?

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

К счастью, выпускники GED могут подготовиться к получению сертификата всего за несколько месяцев, и этот тест могут сдать даже те, кто прошел старшую школу.

В конечном счете, оба варианта - отличный способ получить знания и жизненный опыт, чтобы открыть новые возможности, включая более высокую заработную плату, непрерывное образование и карьерный рост.

GED Math Practice Test (обновлен в 2021 г.)

GED означает общий уровень развития образования или диплом об общем образовании.GED - это дополнительный вариант для лиц, которые не закончили среднюю школу и получили аттестат о среднем образовании. GED, признанный во всех 50 штатах, служит сертификатом соответствия средней школе. Имея это удостоверение, выпускники могут подавать заявки на поступление в колледжи и на рабочие места начального уровня. Математический раздел этого экзамена проверяет способность учащегося решать алгебраические и количественные задачи.

Кто имеет право сдавать тест GED по математике?

Вы имеете право сдать тест GED по математике, если отвечаете следующим требованиям:

  • Вам не менее 16 лет
  • Вы не записаны в среднюю школу
  • Вы не окончили среднюю школу
  • Вы соответствуете все дополнительные требования вашего штата (например,время, прошедшее после окончания школы)

Сколько стоит тест GED по математике?

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

Какой тип математики входит в тест GED?

Раздел математического обоснования теста GED состоит из двух типов задач: количественного решения проблем и алгебраического решения проблем. Вот некоторые из множества тем:

  • Среднее и медианное значение
  • Площадь поверхности
  • Наклон линии
  • Периметр
  • Окружность
  • Простой процент
  • Теорема Пифагора
  • Квадратичная формула
  • Общая стоимость

Сколько времени такое математический тест GED?

Математический тест GED составляет 115 минут (1 час 55 минут).

Можете ли вы использовать калькулятор на математическом тесте GED?

Математический тест GED состоит из двух разделов. По первому разделу, который состоит из 5 вопросов, вам не разрешается пользоваться калькулятором. Для второго раздела, который включает 41 вопрос, вы можете использовать калькулятор. Обратите внимание, что вы должны принести свой калькулятор TI-30XS.

Сколько вопросов вы можете пропустить на тесте GED по математике?

Система подсчета очков GED сложна, поэтому один вопрос не всегда дает один балл.Некоторые вопросы заполняются пустым или множественным выбором, где вы должны выбрать несколько ответов, что означает несколько баллов. Секция GED Math состоит из 46 вопросов, проходной балл - 145–164. Нет точного количества вопросов, которые вы можете пропустить и все же пройти, но, по данным службы тестирования GED, вам нужно примерно 60% -65% ваших баллов, чтобы пройти.

Сколько раз вы можете пересдавать тест по математике GED?

Нет никаких ограничений на то, сколько раз вы можете пересдавать тест GED по математике.Как правило, вы можете пройти GED 3 раза, а после 3-й попытки вам придется подождать 60 дней. Аналогичные правила применяются к учащимся, сдающим тест на разных языках. Например, если студент сдает тест по испанскому языку 3 раза, после 3-й попытки у него есть 60-дневный период ожидания, чтобы сдать его по английскому языку. В некоторых штатах действуют индивидуальные правила пересдачи. Например, в округе Колумбия (округ Колумбия) после первой попытки существует 30-дневный период ожидания, прежде чем вы сможете пересдать тест. Студентам рекомендуется ознакомиться с политикой повторного тестирования своего штата.

Что нужно набрать, чтобы пройти тест по математике GED?

Чтобы пройти тест по математике GED, вы должны набрать не менее 145 баллов. Наивысший балл - 164, а все, что ниже 145, считается неуспешным.

Сколько вопросов в тесте GED по математике?

Математический тест GED состоит из 46 вопросов. Некоторые из многих типов вопросов включают в себя множественный выбор, перетаскивание, горячую точку и заполнение поля.

Практический тест GED по математике

Чего ожидать в день теста

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

  • Приезжайте на место проведения испытаний как минимум на 15 минут раньше. Некоторые места проведения тестирования не позволят вам пройти тест, если вы опоздали более чем на 15 минут.
  • Возьмите с собой удостоверение личности с фотографией, срок действия которого еще не истек, например водительское удостоверение, удостоверение личности государственного образца, военный билет или паспорт.
  • Вы сможете сделать перерыв, если запланировали более одного предмета на один день.
  • Вы не сможете есть или пить в зоне тестирования.
  • Сотовые телефоны и другая электроника не допускаются в зону тестирования.
  • Вы должны принести свой калькулятор TI-30XS.
  • Вы получите справочный лист и лист с математическими формулами.
  • Любые дополнительные предметы, такие как рюкзаки и сумки, помещаются на хранение, если таковые имеются.

Как подготовиться к тесту GED по математике

Нервничать ли вас мысль о прохождении теста GED по математике? Не волнуйтесь - вы попали в нужное место! Наши эксперты по сдаче тестов тщательно изучили GED для создания Mometrix GED Study Guide.Это всеобъемлющее учебное пособие не только охватывает основные темы математического теста GED, такие как переменные и построение линий, но также включает вопросы практического теста. С нашими легкими для чтения пояснениями вы обязательно пройдете как практический, так и официальный тест! Учебное пособие Mometrix GED Study Guide охватывает все четыре раздела (общественные науки, естествознание, логическое мышление и математическое мышление) теста GED.

Повторение - одна из самых проверенных стратегий исследования, поэтому наши специалисты также разработали карты памяти Mometrix GED Flash.Флэш-карты Mometrix GED делают процесс обучения увлекательным и эффективным и идеально подходят для проведения викторин и учебы в дороге! Эти универсальные карточки охватывают все основные темы по всем четырем разделам теста GED. Вы также можете рассчитывать на изучение эффективных стратегий сдачи тестов, которые будут иметь большое значение в день тестирования!

Поздравляем вас с тем, что вы сделали первые несколько шагов на пути к получению GED.