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

Была ли эта тема полезной?