Поделиться через


Проверка платформы

Чтобы упростить написание тестов, TAEF предоставляет платформу Verify, которая использует преимущества WexLogger для создания отчетов по подробным журналам с минимальным объемом кода. Платформа Проверки помогает тестам предоставлять структурированные выходные данные журнала. Она выводит журнал успешного выполнения, если заданная проверка успешно завершена, и выводит подробные сведения в случае сбоя проверки.

Использование проверки из C++

API Проверки предоставляется в C++ в виде набора макросов, определенных в файле заголовка Verify.h (Примечание. Не нужно явно включать Verify.h. Следует включить "WexTestClass.h", который содержит все необходимое для маркировки тестов C++ и взаимодействия с API Verify и WexLogger).

Для собственных тестов C++ доступны следующие макросы Проверки:

Макрос Функциональность
VERIFY_ARE_EQUAL(ожидаемое, фактическое, [необязательное сообщение]) Проверяет равенство двух указанных объектов. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_ARE_NOT_EQUAL(ожидаемое, фактическое, [необязательное сообщение]) Проверяет, что два указанных объекта не равны. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_GREATER_THAN(expectedGreater, expectedLess, [необязательное сообщение]) Проверяет, что первый параметр больше второго. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_GREATER_THAN_OR_EQUAL(expectedGreater, expectedLess, [необязательное сообщение]) Проверяет, что первый параметр больше или равен второму параметру. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_LESS_THAN(expectedLess, expectedGreater, [необязательное сообщение]) Проверяет, что первый параметр меньше второго. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_LESS_THAN_OR_EQUAL(expectedLess, expectedGreater, [необязательное сообщение]) Проверяет, что первый параметр меньше или равен второму параметру. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_ARE_SAME(ожидаемое, фактическое, [необязательное сообщение]) Проверяет, относятся ли два указанных параметра к одному и тому же объекту. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_ARE_NOT_SAME(ожидаемый, фактический; [необязательное сообщение]) Проверяет, что два указанных параметра не относятся к одному и тому же объекту. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_FAIL ([необязательное сообщение]) Завершается сбоем без проверки каких-либо условий. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_TRUE(условие, [необязательное сообщение]) Проверяет, имеет ли указанный логическое значение true. Позвоните VERIFY_IS_TRUE(!! __condition) или VERIFY_WIN32_BOOL_SUCCEEDED (__condition), чтобы протестировать логическое значение Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_FALSE(условие, [необязательное сообщение]) Проверяет, имеет ли указанный логическое значение false. Позвоните VERIFY_IS_FALSE(!! __condition) или VERIFY_WIN32_BOOL_FAILED (__condition) для тестирования ЛОГИЧЕСКОЕ ЗНАЧЕНИЕ Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_NULL(объект; [необязательное сообщение]) Проверяет, имеет ли указанный параметр значение NULL. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_IS_NOT_NULL(object, [необязательное сообщение]) Проверяет, что указанный параметр не имеет значения NULL. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_SUCCEEDED(hresult, [необязательное сообщение]) Проверяет успешное выполнение указанного HRESULT. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_SUCCEEDED_RETURN(hresult, [необязательное сообщение]) Проверяет успешное выполнение указанного HRESULT и возвращает HRESULT, переданный в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_FAILED(hresult, [необязательное сообщение]) Проверяет, не выполнен ли указанный HRESULT. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_FAILED_RETURN(hresult, [необязательное сообщение]) Проверяет, что указанный HRESULT не выполнен успешно, и возвращает HRESULT, переданный в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_THROWS(операция, исключение, [необязательное сообщение]) Проверяет, вызывает ли указанная операция заданный тип исключения. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_NO_THROW(операция, [необязательное сообщение]) Проверяет, не вызывает ли указанная операция исключение. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_SUCCEEDED(win32Result, [необязательное сообщение]) Проверяет, успешно ли выполнен указанный результат Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_SUCCEEDED_RETURN(win32Result, [необязательное сообщение]) Проверяет успешность указанного результата Win32 и возвращает значение LONG, переданное в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_FAILED(win32Result, [необязательное сообщение]) Проверяет, не удалось ли выполнить указанный результат Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_FAILED_RETURN(win32Result, [необязательное сообщение]) Проверяет, что указанный результат Win32 завершился сбоем, и возвращает значение LONG, переданное в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_BOOL_SUCCEEDED(win32Bool, [необязательное сообщение]) Проверяет, успешно ли выполнен указанный логическое значение Win32 (!= FALSE). Регистрирует результат GetLastError() в случае сбоя проверки. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_BOOL_SUCCEEDED_RETURN(win32Bool, [необязательное сообщение]) Проверяет, успешно ли выполнен указанный логический код Win32 (!= FALSE), и возвращает значение BOOL, переданное в макрос. Регистрирует результат GetLastError() в случае сбоя проверки. Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_BOOL_FAILED(win32Bool, [необязательное сообщение]) Проверяет, не удалось ли выполнить указанный boOL Win32 (== FALSE). Не регистрирует результат GetLastError(). Кроме того, регистрирует пользовательское сообщение, если оно указано.
VERIFY_WIN32_BOOL_FAILED_RETURN(win32Bool, [необязательное сообщение]) Проверяет, что указанный логический код Win32 завершился сбоем (== FALSE), и возвращает значение BOOL, переданное в макрос. Не регистрирует результат GetLastError(). Кроме того, регистрирует пользовательское сообщение, если оно указано.

Проверка использования на основе исключений

Если исходный код компилируется с включенными исключениями C++ (путем указания параметра командной строки "/EHsc" или макроса "USE_NATIVE_EH=1" в исходном файле), макросы Verify по умолчанию регистрируют ошибку при сбое, после чего создается собственное исключение C++. Возникает исключение WEX::TestExecution::VerifyFailureException. Вам не нужно перехватывать это исключение— платформа TAEF перехватит его и перейдет к следующему тестовом варианту.

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

if (NULL != m_key)
{
    DisableVerifyExceptions disable;
    VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName));
    VERIFY_WIN32_SUCCEEDED(::RegCloseKey(m_key));
}

В приведенном выше примере исключения отключены только в блоке if (NULL != m_key). Если первый вызов проверки завершается ошибкой, то второй вызов проверки по-прежнему выполняется.

Класс DisableVerifyExceptions подсчитывается по ссылке, а также работает для каждого потока.

Проверка использования, не основанного на исключениях

Если исходный код не компилируется с включенными исключениями C++, макросы Verify не будут выдавать собственный код C++ при сбое проверки. Кроме того, если исходный код компилируется с включенными исключениями C++, но вы хотите отключить проверку исключений, просто #define NO_VERIFY_EXCEPTIONS перед включением "WexTestClass.h".

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

if (VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName)))
{
    ...
}

Проверка параметров вывода

Если вы хотите настроить выходные данные, созданные API проверки, можно использовать класс SetVerifyOutput . Время существования объекта управляет временем установки выходных параметров. Класс SetVerifyOutput подсчитывается по ссылке и функционирует для каждого потока.

if (NULL != m_key)
{
    SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures);
    VERIFY_IS_TRUE(true, L"Should NOT log a comment");
    VERIFY_IS_TRUE(false, L"Should log an error");
}
VERIFY_IS_TRUE(true, L"Should log a comment");

В приведенном выше примере указанные параметры относятся только к вызовам, выполненным в блоке "if (NULL != m_key)", и регистрируется только вызов проверки, который завершается сбоем. Однако третий вызов проверки будет зарегистрирован, даже если он будет выполнен успешно. Это связано с тем, что класс SetVerifyOutput вышел из область.

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

VerifyOutputSettings::LogOnlyFailures
Регистрируются только неудачные вызовы проверки; все успешные вызовы игнорируются.

VerifyOutputSettings::LogFailuresAsBlocked
Регистрируют все сбои как заблокированные, а не регистрируют ошибку.

VerifyOutputSettings::LogFailuresAsWarnings
Регистрируют все сбои как предупреждения, а не регистрируют ошибки.

VerifyOutputSettings::LogValuesOnSuccess
Регистрировать значения переданных параметров, даже если вызов Verify выполнен успешно.

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

SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures | VerifyOutputSettings::LogFailuresAsBlocked);

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

Платформа проверки C++ позволяет создавать подробные выходные данные для любого пользовательского типа. Для этого необходимо реализовать специализацию шаблона класса WEX::TestExecution::VerifyOutputTraits .

Специализация шаблона класса WEX::TestExecution::VerifyOutputTraits должна существовать в пространстве имен WEX::TestExecution . Он также должен предоставить открытый статический метод с именем ToString, который принимает ссылку на класс и возвращает WEX::Common::NoThrowString , содержащий строковое представление его значения.

    class MyClass
    {
    public:
        MyClass(int value)
            : m_myValue(value)
        {
        }

        int GetValue()
        {
            return m_myValue;
        }

    private:
        int m_myValue;
    }

    namespace WEX { namespace TestExecution
    {
        template <>
        class VerifyOutputTraits<MyClass>
        {
        public:
            static WEX::Common::NoThrowString ToString(const MyClass& myClass)
            {
                return WEX::Common::NoThrowString().Format(L"%d", myClass.GetValue());
            }
        };
    }}

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

Платформа проверки C++ предоставляет возможность определять компараторы для пользовательских типов, которые не реализуют соответствующие перегрузки операторов (operator=, operator< и т. д.). Для этого необходимо реализовать специализацию шаблона класса WEX::TestExecution::VerifyCompareTraits .

Специализация шаблона класса WEX::TestExecution::VerifyCompareTraits должна существовать в пространстве имен WEX::TestExecution . Кроме того, ожидается, что будут предоставлены общедоступные статические методы AreEqual, AreSame, IsLessThan, IsGreaterThan и IsNull.

    class MyClass
    {
    public:
        MyClass(int value)
            : m_myValue(value)
        {
        }

        int GetValue()
        {
            return m_myValue;
        }

    private:
        int m_myValue;
    }

    namespace WEX { namespace TestExecution
    {
        template <>
        class VerifyCompareTraits<MyClass, MyClass>
        {
        public:
            static bool AreEqual(const MyClass& expected, const MyClass& actual)
            {
                return expected.GetValue() == actual.GetValue();
            }

            static bool AreSame(const MyClass& expected, const MyClass& actual)
            {
                return &expected == &actual;
            }

            static bool IsLessThan(const MyClass& expectedLess, const MyClass& expectedGreater)
            {
                return (expectedLess.GetValue() < expectedGreater.GetValue());
            }

            static bool IsGreaterThan(const MyClass& expectedGreater, const MyClass& expectedLess)
            {
                return (expectedGreater.GetValue() > expectedLess.GetValue());
            }

            static bool IsNull(const MyClass& object)
            {
                return object.GetValue() == 0;
            }
        };
    }}

Использование проверки из C #

Использование C# Verify аналогично использованию C++. Однако он предоставляется через WEX. Класс TestExecution.Verify , расположенный в Te.Managed.dll.

Для тестов C# доступны следующие методы Проверки:

Макрос Функциональность
AreEqual(object expected, object actual) Проверяет, равны ли два указанных объекта.
AreEqual(object expected, object actual, string message) Проверяет, что два указанных объекта равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
AreEqual<T>(T expected, T actual) Проверяет, равны ли два указанных объекта.
AreEqual<T>(T expected, T actual, string message) Проверяет, что два указанных объекта равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
AreNotEqual(object expected, object actual) Проверяет, что два указанных объекта не равны.
AreNotEqual(object expected, object actual, string message) Проверяет, что два указанных объекта не равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
AreNotEqual<T>(T expected, T actual) Проверяет, что два указанных объекта не равны.
AreNotEqual<T>(T expected, T actual, string message) Проверяет, что два указанных объекта не равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
AreSame(объект ожидается, объект фактический) Проверяет, ссылаются ли два указанных параметра на один и тот же объект.
AreSame(object expected, object actual, string message) Проверяет, ссылаются ли два указанных параметра на один и тот же объект; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
AreNotSame(объект ожидается, объект фактический) Проверяет, что два указанных параметра не ссылаются на один и тот же объект.
AreNotSame(object expected, object actual, string message) Проверяет, что два указанных параметра не ссылаются на один и тот же объект; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsGreaterThan(IComparable expectedGreater, IComparable expectedLess) Проверяет, что первый параметр больше второго.
IsGreaterThan(IComparable expectedGreater, IComparable expectedLess, string message) Проверяет, что первый параметр больше второго; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess) Проверяет, что первый параметр больше или равен второму параметру.
IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess, string message) Проверяет, что первый параметр больше или равен второму параметру; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsLessThan(IComparable expectedLess, IComparable expectedGreater) Проверяет, что первый параметр меньше второго.
IsLessThan(IComparable expectedLess, IComparable expectedGreater, string message) Проверяет, что первый параметр меньше второго; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater) Проверяет, что первый параметр меньше или равен второму параметру.
IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater, string message) Проверяет, что первый параметр меньше или равен второму параметру; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
Fail(string message) Завершается сбоем без проверки каких-либо условий.
IsTrue(bool condition) Проверяет, верно ли указанное условие.
IsTrue(bool condition, string message) Проверяет, является ли указанное условие истинным; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsFalse(bool condition) Проверяет, имеет ли указанное условие значение false.
IsFalse(bool condition, string message) Проверяет, имеет ли указанное условие значение false; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsNull(object obj) Проверяет, имеет ли указанный параметр значение NULL.
IsNull(object obj, string message) Проверяет, имеет ли указанный параметр значение NULL; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
IsNotNull(object obj) Проверяет, что указанный параметр не равен NULL.
IsNotNull(object obj, string message) Проверяет, не имеет ли указанный параметр значение NULL; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.
Вызывает T<>(операцию VerifyOperation) Проверяет, что указанная операция создает исключение заданного типа. Также возвращает исключение для дальнейшей проверки.
<Вызывает T>(операция VerifyOperation, строковое сообщение) Проверяет, вызывает ли указанная операция заданный тип исключения; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. Также возвращает исключение для дальнейшей проверки.
NoThrow(VerifyOperation operation) Проверяет, не вызывает ли указанная операция исключение.
NoThrow(VerifyOperation operation, string message) Проверяет, не вызывает ли указанная операция исключение; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки.

Проверка использования на основе исключений

При сбое проверки в тестовых случаях C# в средство ведения журнала и WEX записывается ошибка . Возникает исключение TestExecution.VerifyFailureException . Как и в собственной модели C++, вам не нужно беспокоиться о перехвате этих исключений. Платформа TAEF перехватит ее и перейдет к следующему тестовой ситуации.

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

using (new DisableVerifyExceptions())
{
    Verify.AreSame(item1, item2);
    Verify.AreEqual(item1, item2);
}

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

Кроме того, можно добиться того же результата, установив параметр Verify.DisableVerifyExceptions = true перед операциями Verify, как показано ниже.

Verify.DisableVerifyExceptions = true;
try
{
    Verify.AreSame(item1, item2);
    Verify.AreEqual(item1, item2);
}
finally
{
    Verify.DisableVerifyExceptions = false;
}

Обратите внимание, что хотя такой параметр доступен, объявление DisableVerifyExeptions в качестве объекта в блоке using по-прежнему является рекомендуемым вариантом.

Если вы хотите остановиться в отладчике при возникновении ошибки проверки, откроется диалоговое окно исключений (CTRL+ALT+E), нажмите кнопку Добавить, выберите "Исключения среды CLR" в раскрывающемся списке и введите "WEX. TestExecution.VerifyFailureException" в поле Имя.

Проверка параметров вывода

Если вы хотите настроить выходные данные, созданные API проверки, можно использовать класс SetVerifyOutput . Время существования объекта управляет временем установки выходных параметров. Класс SetVerifyOutput подсчитывается по ссылке и функционирует для каждого потока.

using (new SetVerifyOutput(VerifyOutputSettings.LogOnlyFailures))
{
    Log.Comment("Only the following error should be logged:");
    Verify.IsTrue(true, "Should NOT log a comment");
    Verify.IsTrue(false, "Should log an error");
}
Verify.IsTrue(true, "Should log a comment");

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

Кроме того, можно добиться того же результата, установив параметр Verify.OutputSettings = VerifyOutputSettings.LogOnlyFailures перед операциями Verify, как показано ниже.

Verify.OutputSettings = VerifyOutputSettings.LogFailuresAsWarnings
try
{
    Verify.AreSame(item1, item2);
    Verify.AreEqual(item1, item2);
}
finally
{
    Verify.OutputSettings = VerifyOutputSettings.None;
}

Обратите внимание, что, хотя такой параметр доступен, объявление SetVerifyOutput в качестве объекта в блоке using по-прежнему является рекомендуемым вариантом.

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

VerifyOutputSettings.LogOnlyFailures
Регистрируются только неудачные вызовы проверки; все успешные вызовы игнорируются.

VerifyOutputSettings.LogFailuresAsBlocked
Регистрируют все сбои как заблокированные, а не регистрируют ошибку.

VerifyOutputSettings.LogFailuresAsWarnings
Регистрируют все сбои как предупреждения, а не регистрируют ошибки.

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

using (new SetVerifyOutput(VerifyOutputSettings.LogFailuresAsBlocked | VerifyOutputSettings.LogOnlyFailures))
{
...
}

Использование проверки из скрипта

API проверки также доступен для языков сценариев, следуя тем же шаблонам использования, что и C++ и C#.

Установки

При использовании api проверки с поддержкой скриптов в методе теста TAEF установка не требуется— необходимые API регистрируются с помощью com-сервера "Бесплатная регистрация". Чтобы использовать скриптируемый API извне метода теста TAEF (за пределами TAEF или в дочернем процессе), просто зарегистрируйте двоичный файл Te.Common.dll с помощью regsvr32 из командной строки с повышенными привилегиями; Например:

regsvr32 Te.Common.dll

При развертывании TAEF с помощью файла развертывания для выполнения лаборатории Te.Common.dll регистрируется автоматически.

Использование

Api проверки, доступные для сценариев, отображаются через "TE. COM-класс Common.Verify — просто создайте экземпляр этого класса и вызовите в нем методы. Класс Verify будет автоматически работать с WEXLogger для записи проверок pass и fail в журнал.

1   <?xml version="1.0" ?>
2   <?component error="false" debug="false"?>
3   <package>
4     <component id="Example">
5       <object id="Log" progid="Wex.Logger.Log" />
6       <object id="Verify" progid="Te.Common.Verify" />
7       <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
8       <reference guid="f8bb9db9-e54e-4555-b3e5-e3ddf2fef401" version="1.0"/>
9
10      <public>
11        <method name="HelloWorld"/>
12      </public>
13
14      <script language="JScript">
15          function HelloWorld() {
16              Verify.IsTrue(true);
17              Verify.IsFalse(false);
18          }
19      </script>
20    </component>
21  </package>

В этом примере определяется тестовый класс скрипта TAEF с одним методом HelloWorld. В строке 6 элемент object используется для определения переменной Verify в глобальном область. В строке 8 элемент reference используется для включения всех констант из указанной библиотеки типов (в данном случае Te.Common.dll библиотеки типов) в глобальный область скрипта; в этом случае добавляются константы VerifySettings. В строках 16 и 17 показано простое использование API проверки. При выполнении примера будут выведены следующие выходные данные:

Test Authoring and Execution Framework v2.7 Build 6.2.7922.0 (fbl_esc_end_dev(mschofie).110202-1000) For x86

StartGroup: Example::HelloWorld
Verify: IsTrue
Verify: IsFalse
EndGroup: Example::HelloWorld [Passed]

Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0

API проверки с помощью скриптов

Ниже приведены методы проверки в API проверки с помощью скриптов.

Метод Функциональность
bool Verify.AreEqual(expected, actual, [optional message]) Проверяет равенство двух значений. Если параметр "VerifySettings_CoerceTypes" включен, этот метод использует определение равенства JScript. Если параметр "VerifySettings_CoerceTypes" не включен, метод использует определение идентификатора JScript. По умолчанию параметр "VerifySettings_CoerceTypes" включен.
bool Verify.AreNotEqual(expected, actual, [optional message]) Проверяет, что два значения не равны. Если параметр "VerifySettings_CoerceTypes" включен, этот метод использует определение равенства JScript. Если параметр "VerifySettings_CoerceTypes" не включен, метод использует определение идентификатора JScript. По умолчанию параметр "VerifySettings_CoerceTypes" включен.
bool Verify.IsGreaterThan(expectedGreater, expectedLess, [необязательное сообщение]) Проверяет, что первое значение больше второго.
bool Verify.IsGreaterThanOrEqual(expectedGreater, expectedLess, [необязательное сообщение]) Проверяет, что первое значение больше или равно второму.
bool Verify.IsLessThan(expectedLess, expectedGreater, [необязательное сообщение]) Проверяет, что первое значение меньше второго.
bool Verify.IsLessThanOrEqual(expectedLess, expectedGreater, [необязательное сообщение]) Проверяет, что первое значение меньше или равно второму.
bool Verify.AreSame(expected, actual, [optional message]) Проверяет, совпадают ли значения.
bool Verify.AreNotSame(expected, actual, [optional message]) Проверяет, не совпадают ли значения.
bool Verify.Fail([необязательное сообщение]) Сбой без проверки условий.
bool Verify.IsTrue(expression, [optional message]) Проверяет, имеет ли данное выражение значение true.
bool Verify.IsFalse(expression, [optional message]) Проверяет, имеет ли данное выражение значение false.
bool Verify.IsNull(expected, [optional message]) Проверяет, имеет ли данное значение значение null.
bool Verify.IsNotNull(expected, [optional message]) Проверяет, не равно ли заданное значение null.
bool Verify.Throws(function, [optional message]) Проверяет, вызывает ли данная функция исключение и .
bool Verify.NoThrow(function, [optional message]) Проверяет, что данная функция не создает исключение и .

Существует два метода в классе Verify для управления параметрами:

Метод Функциональность
object Verify.EnableSettings(settings) Указанный флаг параметра или флаги будут включены.
object Verify.DisableSettings(settings) Указанный флаг параметра или флаги будут отключены.

Значение параметров, передаваемое в методы Verify.EnableSettings или Verify.DisableSettings, может иметь любое из следующих значений:

VerifySettings_LogOnlyFailures = 0x01
Регистрируются только сбои— нет выходных данных для успешных вызовов Проверки.

VerifySettings_LogFailuresAsBlocked = 0x02
Сбои регистрируются как "Заблокировано" вместо ошибки по умолчанию.

VerifySettings_LogFailuresAsWarnings = 0x04
Ошибки регистрируются как "Предупреждение" вместо ошибки по умолчанию.

VerifySettings_LogValuesOnSuccess = 0x08
Значения проверяемых параметров записываются как часть сообщения Проверка журнала. Этот параметр включен по умолчанию.

VerifySettings_CoerceTypes = 0x1000
Значения, передаваемые в методы Verify, будут приведены в соответствие с правилами приведения JScript. Этот параметр включен по умолчанию.

VerifySettings_DisableExceptions = 0x2000
Исключения не будут создаваться при сбое проверки.

Проверка параметров

API проверки предоставляет параметры для настройки его поведения. Методы EnableSettings и DisableSettings можно использовать для включения или отключения определенных параметров, которые поддерживает класс Verify. Эти методы принимают один или несколько параметров для включения или отключения.

    Verify.EnableSettings(VerifySettings_LogOnlyFailures);

Чтобы включить или отключить несколько параметров в одном вызове, можно включить несколько флагов VerifySettings:

    Verify.EnableSettings(VerifySettings_LogOnlyFailures | VerifySettings_DisableExceptions);

Методы EnableSettings и DisableSettings возвращают объект , который можно использовать для восстановления исходных параметров, позволяя включать или отключать параметры для заданного область;

1    var guard = Verify.EnableSettings(VerifySettings_LogOnlyFailures);
2    try
3    {
4        Verify.AreEqual(10, 0xa);
5    }
6    finally
7    {
8        guard.Restore();
9    }

В этом примере метод Verify.EnableSettings передается "VerifySettings_LogOnlyFailures", который будет включен в параметры, которые уже присутствуют в объекте Verify. Вызов Verify выполняется в блоке try-finally, чтобы во время блока finally можно было использовать объект guard для восстановления исходных параметров.

Проверка использования на основе исключений

По умолчанию методы Verify создают исключение при сбое проверки. При выполнении в TAEF, если исключение создается из метода теста, тест завершится ошибкой. Пример:

1    var guard = Verify.EnableSettings(VerifySettings_CoerceTypes);
2    try
3    {
4        Verify.AreEqual(1, "1");
5        Verify.AreEqual("1", 1);
6    }
7    finally
8    {
9        guard.Restore();
10   }

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

1    var guard = Verify.EnableSettings(VerifySettings_CoerceTypes | VerifySettings_DisableExceptions);
2    try
3    {
4        Verify.AreEqual(1, "1");
5        Verify.AreEqual("1", 1);
6    }
7    finally
8    {
9        guard.Restore();
10   }

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

Использование API проверки с поддержкой скриптов за пределами TAEF

Api проверки с поддержкой скриптов можно использовать за пределами TAEF. Убедитесь, что Te.Common.dll зарегистрирована, как указано в разделе Установка, и просто создайте TE. Класс Common.Verify".

var VerifySettings_DisableExceptions = 0x2000;

var Verify = new ActiveXObject("TE.Common.Verify");
var Log = new ActiveXObject("WEX.Logger.Log");

Verify.EnableSettings(VerifySettings_DisableExceptions);

Log.StartGroup("Group A");
Verify.AreEqual(1, 2);
Log.EndGroup("Group A");

Log.StartGroup("Group B");
Verify.AreEqual(2, 2);
Log.EndGroup("Group B");

Приведенный выше код создает следующие выходные данные консоли при выполнении с помощью cscript:

StartGroup: Group A
Error: Verify: AreEqual - Values (1, 2)
EndGroup: Group A [Failed]

StartGroup: Group B
Verify: AreEqual - Values (2, 2)
EndGroup: Group B [Passed]

Non-passing Tests:

    Group A [Failed]

Summary: Total=2, Passed=1, Failed=1, Blocked=0, Not Run=0, Skipped=0

Wex. API Logger.Log можно использовать для настройки средства ведения журнала WEX по мере необходимости (например, в качестве дочернего процесса), и скриптируемый API проверки воспользуется этой конфигурацией.