matlab.unittest.plugins. Класс TestReportPlugin

Пакет: matlab.unittest.plugins

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

Описание

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

Конструкция

Инстанцируйте TestReportPlugin с помощью одного из его статических методов:

  • Чтобы представить отчет .docx, используйте статический метод producingDOCX.

  • Чтобы представить отчет PDF, используйте статический метод producingPDF.

Свойства

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

Это свойство доступно только для чтения.

Индикатор, если вывод текста из Командного окна включен, задал как false или true (logical 0 или 1). По умолчанию IncludeCommandWindowText является false, и вывод текста из Командного окна исключен из отчета. Чтобы включать текст Command Window в отчет, задайте IncludeCommandWindowText как true во время сменной конструкции.

Это свойство доступно только для чтения.

Индикатор, если диагностика для передающих событий включена, задал как false или true (logical 0 или 1). По умолчанию IncludePassingDiagnostics является false, и диагностика от передающих событий исключена из вывода. Чтобы включать диагностику от передающих событий в выводе, задайте IncludePassingDiagnostics как true во время сменной конструкции.

Это свойство доступно только для чтения.

Максимальный уровень многословия для регистрируемой диагностики, включенной плагином, возвращенным как объект перечисления matlab.unittest.Verbosity. Плагин включает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Terse. Можно задать различный уровень журналирования во время сменной конструкции.

Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log или TestCase.log.

Методы

producingDOCXПлагин построений, который представляет отчет .docx
producingHTMLПлагин построений, который представляет отчет .html
producingPDFПлагин построений, который представляет отчет .pdf

Примеры

свернуть все

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

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

%% Test double class
expSolution = 'double';
actSolution = ones;
assert(isa(actSolution,expSolution))

%% Test single class
expSolution = 'single';
actSolution = ones('single');
assert(isa(actSolution,expSolution))

%% Test uint16 class
expSolution = 'uint16';
actSolution = ones('uint16');
assert(isa(actSolution,expSolution))

%% Test that fails
assert(false==true);

%% Another test that fails
assert(strcmp('correlation','causation'))

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

classdef ClassBasedTest < matlab.unittest.TestCase
    properties (ClassSetupParameter)
        generator = {'twister','combRecursive','multFibonacci'};
    end
    properties (MethodSetupParameter)
        seed = {0,123,4294967295};
    end
    properties (TestParameter)
        dim1 = struct('small',1,'medium',2,'large',3);
        dim2 = struct('small',2,'medium',3,'large',4);
        dim3 = struct('small',3,'medium',4,'large',5);
        type = {'single','double'};
    end
    methods (TestClassSetup)
        function ClassSetup(testCase,generator)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(0, generator)
        end
    end
    methods (TestMethodSetup)
        function MethodSetup(testCase,seed)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(seed)
        end
    end
    methods (Test, ParameterCombination='sequential')
        function testSize(testCase,dim1,dim2,dim3)
            testCase.verifySize(rand(dim1,dim2,dim3),[dim1 dim2 dim3])
        end 
    end
    methods (Test, ParameterCombination='pairwise')
        function testRepeatable(testCase,dim1,dim2,dim3)
            state = rng;
            firstRun = rand(dim1,dim2,dim3);
            rng(state)
            secondRun = rand(dim1,dim2,dim3);
            testCase.verifyEqual(firstRun,secondRun);
        end
    end
    methods (Test)
        function testClass(testCase,dim1,dim2,type)
            testCase.verifyClass(rand(dim1,dim2,type),type)
        end
    end
end

В командной строке создайте тестовый набор из обоих тестовых файлов.

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite({'ScriptBasedTest','ClassBasedTest'})
suite = 

  1×284 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   17 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Создайте тихого исполнителя тестов, так, чтобы не было никакого вывода информации к командному окну. Создайте TestReportPlugin, который отправляет вывод в файл MyTestReport.docx.

runner = TestRunner.withNoPlugins;
docxFile = 'MyTestReport.docx';
plugin = TestReportPlugin.producingDOCX(docxFile);

Добавьте плагин в TestRunner и запустите комплект.

runner.addPlugin(plugin);
result = runner.run(suite)
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\work\MyTestReport.docx

result = 

  1×284 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   282 Passed, 2 Failed, 2 Incomplete.
   0.73477 seconds testing time.

Откройте протокол испытаний.

open(docxFile)

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

Создайте новый файл в своей рабочей папке под названием FunctionBasedTest.m , содержащий следующий функциональный тест. Тестовый файл включает два проваливающих теста.

%% Main function to generate tests
function tests = FunctionBasedTest
tests = functiontests(localfunctions);
end

%% Test Functions
function passingTest(testCase)
actSolution = 13*3+7*5;
expSolution = 74;
verifyEqual(testCase,actSolution,expSolution)
end

function failingTest(testCase)
actSolution = single(1);
verifyTrue(testCase,actSolution)
end

function anotherPassingTest(testCase)
verifyClass(testCase,string('some text'),'string')
end

function anotherFailingTest(testCase)
verifyTrue(testCase,strcmp('42','everything'))
end

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

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite('FunctionBasedTest');
runner = TestRunner.withTextOutput;

Создайте TestReportPlugin, который отправляет вывод в файл MyTestReport2.pdf. Включайте передающую диагностику и вывод текста из Командного окна в отчете.

pdfFile = 'MyTestReport2.pdf';
plugin = TestReportPlugin.producingPDF(pdfFile,...
    'IncludingPassingDiagnostics',true,'IncludingCommandWindowText',true);

Добавьте плагин в TestRunner и запустите комплект.

runner.addPlugin(plugin);
result = runner.run(suite);
Running FunctionBasedTest
.
================================================================================
Verification failed in FunctionBasedTest/failingTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must be logical. It is of type "single".
    
    Actual single:
             1

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (failingTest) at 15
================================================================================
..
================================================================================
Verification failed in FunctionBasedTest/anotherFailingTest.

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

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (anotherFailingTest) at 23
================================================================================
.
Done FunctionBasedTest
__________

Failure Summary:

     Name                                  Failed  Incomplete  Reason(s)
    ===================================================================================
     FunctionBasedTest/failingTest           X                 Failed by verification.
    -----------------------------------------------------------------------------------
     FunctionBasedTest/anotherFailingTest    X                 Failed by verification.
    
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\Work\MyTestReport2.pdf

Откройте протокол испытаний.

open(pdfFile)

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

classdef FigurePropTest < matlab.unittest.TestCase
    properties
        TestFigure
    end
    methods(TestMethodSetup)
        function createFigure(testCase)
            testCase.TestFigure = figure;
        end
    end
    methods(TestMethodTeardown)
        function closeFigure(testCase)
            close(testCase.TestFigure)
        end
    end
    methods(Test)
        function defaultCurrentPoint(testCase)
            cp = testCase.TestFigure.CurrentPoint;
            testCase.verifyEqual(cp,[0 0], ...
                'Default current point is incorrect')
        end
        function defaultCurrentObject(testCase)
            import matlab.unittest.constraints.IsEmpty
            co = testCase.TestFigure.CurrentObject;
            testCase.verifyThat(co,IsEmpty, ...
                'Default current object should be empty')
        end
        function failingTest(testCase)
            import matlab.unittest.diagnostics.FigureDiagnostic
            fig = testCase.TestFigure;
            ax = axes(fig);
            surf(ax,peaks)
            testCase.verifyEmpty(testCase.TestFigure.Children, ...
                FigureDiagnostic(testCase.TestFigure))
        end
    end
end

В командной строке создайте тестовый набор.

suite = testsuite('FigurePropTest');

Создайте тихого исполнителя тестов, который записывает диагностику и генерирует отчет PDF.

import matlab.unittest.plugins.DiagnosticsRecordingPlugin
import matlab.unittest.plugins.TestReportPlugin
runner = matlab.unittest.TestRunner.withNoPlugins;
runner.addPlugin(DiagnosticsRecordingPlugin);
runner.addPlugin(TestReportPlugin.producingPDF('MyTestReport.pdf'));

Измените корень артефакта по умолчанию на свою текущую рабочую папку.

runner.ArtifactsRootFolder = pwd;

Запущение тестов. Третьи тестовые сбои.

results = runner.run(suite)
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\work\MyTestReport.pdf

results = 

  1×3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 1 Failed, 0 Incomplete.
   1.2295 seconds testing time.

Отобразите тестовые результаты диагностики для третьего теста. Среда тестирования сохраненные два артефакта, связанные с третьим тестом. По умолчанию объект FigureDiagnostic сохраняет фигуру и как файл PNG и как файл FIG.

results(3).Details.DiagnosticRecord.TestDiagnosticResults
ans = 

  DiagnosticResult with properties:

         Artifacts: [1×2 matlab.unittest.diagnostics.FileArtifact]
    DiagnosticText: 'Figure saved to:↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.png'

Отобразите сохраненное местоположение первого артефакта.

results(3).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts(1)
ans = 

  FileArtifact with properties:

        Name: "Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig"
    Location: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392"
    FullPath: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig"

Чтобы осмотреть изображение, связанное с проваленным тестом, откройте файл в местоположении, показанном в поле FullPath. Кроме того, поскольку вы сгенерировали протокол испытаний PDF, изображение получено в MyTestReport.pdf. Протокол испытаний также содержит путь к артефактам.

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте