exponenta event banner

matlab.unittest.diagnostics.ScreenshotDiagnostic класс

Пакет: matlab.unittest.diagnostics

Диагностика для захвата экрана в виде файла изображения

Описание

Используйте ScreenshotDiagnostic класс для создания диагностики, которая фиксирует доступные экраны в виде файлов изображений. Файлы сохраняются после того, как MATLAB ® завершит тестовый запуск, и поэтому они доступны для последующей проверки.

Строительство

ScreenshotDiagnostic() создает диагностику, которая фиксирует доступные экраны в виде файлов изображений. Когда структура тестирования диагностирует ScreenshotDiagnostic он сохраняет снимки экрана в PNG-файлы. Каждый файл имеет уникальное имя, состоящее из префикса (Screenshot_', по умолчанию), автоматически сгенерированный идентификатор и расширение файла. Пример имени файла: Screenshot_cf95fe7f-5a7c-4310-9c49-16c0c18a969f.png. Чтобы просмотреть расположение файлов, откройте FileArtifact объект через TestResult экземпляр.

ScreenshotDiagnostic('Prefix',prefix) создает диагностику, которая сохраняет снимки экрана в файлы с именами, начинающимися с указанного префикса.

Входные аргументы

развернуть все

Префикс имени файла, указанный как текст. Если префикс не указан, по умолчанию используется префикс 'Screenshot_'. Укажите значение как вектор символа или скаляр строки. Внутри объекта MATLAB сохраняет их как векторы символов.

Пример: 'LoggedScreenshot_'

Пример: "TestScreenshot-"

Свойства

развернуть все

Префикс имени файла, возвращаемый в виде символьного вектора. Префикс по умолчанию: 'Screenshot_'. Prefix свойство доступно только для чтения, и его значение  устанавливается во время построения.

Копирование семантики

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создать TestCase для интерактивного использования.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

Использовать ScreenshotDiagnostic для сохранения образа рабочего стола в качестве тестовой диагностики.

import matlab.unittest.diagnostics.ScreenshotDiagnostic
testCase.verifyTrue(false,ScreenshotDiagnostic)
Interactive verification failed.

----------------
Test Diagnostic:
----------------
Screenshot captured to:
--> C:\work\Temp\Screenshot_e99834ed-75e9-4ee1-9596-2f95e64b0ff1.png

---------------------
Framework Diagnostic:
---------------------
verifyTrue failed.
--> The value must evaluate to "true".

Actual logical:
       0

Создать TestCase для интерактивного использования.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

Использовать ScreenshotDiagnostic для регистрации образа рабочего стола в качестве тестовой диагностики с пользовательским префиксом

import matlab.unittest.diagnostics.ScreenshotDiagnostic
testCase.log(ScreenshotDiagnostic('Prefix','LoggedScreenshot_'))
Interactive diagnostic logged.
Screenshot captured to:
--> C:\work\Temp\LoggedScreenshot_35bb1ecb-441a-4f79-9f59-8b18ac3f9d12.png

В файле в текущей рабочей папке создайте ScreenShotExampleTest класс тестирования. Когда failingTest метод тестирования завершается неуспешно (это всегда происходит в этом примере), он использует ScreenshotDiagnostic для захвата изображения экрана, чтобы его можно было просмотреть позже. logScreenshotTest тест всегда захватывает изображение экрана и сохраняет его в файле с префиксом LoggedScreenshot_.

classdef ScreenShotExampleTest < matlab.unittest.TestCase
    methods (Test)
        function passingTest(testCase)
            testCase.verifyEqual(7,4+3);
        end
        function failingTest(testCase)
            import matlab.unittest.diagnostics.ScreenshotDiagnostic
            testCase.verifyFalse(true,ScreenshotDiagnostic);
        end
        function logScreenshotTest(testCase)
            import matlab.unittest.diagnostics.ScreenshotDiagnostic
            testCase.verifySubstring("Some Long Message","sage");
            testCase.log(1,ScreenshotDiagnostic('Prefix','LoggedScreenshot_'));
        end
    end
end

Запустите тесты.

res = runtests('ScreenShotExampleTest');
Running ScreenShotExampleTest
.
================================================================================
Verification failed in ScreenShotExampleTest/failingTest.

    ----------------
    Test Diagnostic:
    ----------------
    Screenshot captured to:
    --> C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\Screenshot_b24f2219-61a4-4cf8-b4da-fe7e10da92bd.png

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyFalse failed.
    --> The value must evaluate to "false".
    
    Actual logical:
           1

    ------------------
    Stack Information:
    ------------------
    In C:\work\ScreenShotExampleTest.m (ScreenShotExampleTest.failingTest) at 8
================================================================================
.   [Terse] Diagnostic logged (2016-12-22T11:21:54): 
Screenshot captured to:
--> C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\LoggedScreenshot_26def240-9a9d-4147-9d3e-c399ae157c0f.png

.
Done ScreenShotExampleTest
__________

Failure Summary:

     Name                               Failed  Incomplete  Reason(s)
    ================================================================================
     ScreenShotExampleTest/failingTest    X                 Failed by verification.

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

Поскольку второй тест завершается неуспешно, снимок экрана сохраняется как часть диагностики теста. Доступ к пути к снимку экрана через Artifacts объект на TestDiagnosticResults.

res(2).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts.FullPath
ans = 

    "C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\Screenshot_b24f2219-61a4-4cf8-b4da-fe7e10da92bd.png"

Третий тест проходит успешно, и снимок экрана сохраняется как часть зарегистрированной диагностики (через log метод на TestCase). Доступ к пути к снимку экрана через Artifacts объект на LoggedDiagnosticResults.

res(3).Details.DiagnosticRecord.LoggedDiagnosticResults.Artifacts.FullPath
ans = 

    "C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\LoggedScreenshot_26def240-9a9d-4147-9d3e-c399ae157c0f.png"

Совет

  • Расположение сохраненных снимков экрана - это папка с именем, уникальным для тестового запуска в папке, содержащейся в ArtifactsRootFolder. Если тест выполняется в интерактивном режиме, расположение корневой папки - это значение, возвращаемое tempdir().

  • Чтобы определить путь к сохраненным снимкам экрана, откройте FileArtifact объект для определенного результата теста. Например, предположим, что у вас есть TestResult массив, res. Определите местоположение сохраненной фигуры для первого элемента массива следующим образом.

    res(1).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts
    ans = 
    
      FileArtifact with properties:
    
            Name: "Screenshot_f51601ef-86bc-499c-bcec-203969f72a85.png"
        Location: "C:\work\Temp\1f4d3b64-3201-4bde-92ed-ad6859e97051"
        FullPath: "C:\work\Temp\1f4d3b64-3201-4bde-92ed-ad6859e97051\Screenshot_f51601ef-86bc-499c-bcec-203969f72a85.png"
    
Представлен в R2017a