matlab.unittest.diagnostics.ScreenshotDiagnostic class

Пакет: 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_'. The Prefix свойство доступно только для чтения, и его значение  устанавливается во время конструкции.

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

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

Создайте 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 чтобы захватить изображение экрана, чтобы вы могли изучить его позже. The logScreenshotTest test всегда захватывает изображение экрана и сохраняет его в файле с префиксом 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