This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Customize Test Reports

You can choose how to format and aggregate test results by customizing reports. Use the sltest.testmanager.TestResultReport class to create a subclass and then use the properties and methods to customize how the Test Manager generates the results report. You can change font styles, add plots, organize results into tables, include model images, and more. Using the custom class, requires a MATLAB® Report Generator™ license.

Inherit the Report Class

To customize the generated report, you must inherit from the sltest.testmanager.TestResultReport class. After you inherit from the class, you can modify the properties and methods. To inherit the class, add the class definition section to a new or existing MATLAB script. The subclass is your custom class name, and the superclass that you inherit from is sltest.testmanager.TestResultReport. For more information about creating subclasses, see Design Subclass Constructors (MATLAB). Then, add code to the inherited class or methods to create your customizations.

% class definition
classdef CustomReport < sltest.testmanager.TestResultReport
    %
    % Report customization code here
    %
end

Method Hierarchy

When you create the subclass, the derived class inherits methods from the sltest.testmanager.TestResultReport class. The body of the report is separated into three main groups: the result set block, the test suite result block, and the test case result block.

The result set block contains the result set table, the coverage table, and links to the table of contents.

The test suite result block contains the test suite results table, the coverage table, requirements links, and links to the table of contents.

The test case result block contains the test case and test iterations results table, the coverage table, requirements links, signal output plots, comparison plots, test case settings, and links to the table of contents.

Modify the Class

To insert your own report content or change the layout of the generated report, modify the inherited class methods. For general information about modifying methods, see Modify Inherited Methods (MATLAB).

A simple modification to the generated report could be to add some text to the title page. The method used here is addTitlePage.

% class definition
classdef CustomReport < sltest.testmanager.TestResultReport
    methods
        function this = CustomReport(resultObjects, reportFilePath)
            this@sltest.testmanager.TestResultReport(resultObjects,...
            reportFilePath);
        end
    end
    
    methods(Access=protected)
        function addTitlePage(obj)
            import mlreportgen.dom.*;
            
            % Add a custom message
            label = Text('Some custom content can be added here');
            append(obj.TitlePart,label);
            
            % Call the superclass method to get the default behavior
            addTitlePage@sltest.testmanager.TestResultReport(obj);
        end
    end
end
Click here for a code file of this example.

A more complex modification of the generated report is to include a snapshot of the model that was tested.

% class definition
classdef CustomReport < sltest.testmanager.TestResultReport
    methods
        function this = CustomReport(resultObjects,reportFilePath)
            this@sltest.testmanager.TestResultReport(resultObjects,reportFilePath);
        end
    end
    
    methods(Access=protected)
        % Method to customize test case/iteration result section in the report
        function docPart = genTestCaseResultBlock(obj,result)
            % result: A structure containing test case or iteration result
            import mlreportgen.dom.*;
            
            % Call the superclass method to get the default behavior
            docPart = genTestCaseResultBlock@sltest.testmanager.TestResultReport(...
                                                                      obj,result);
            
            % Get the test case result data for putting in the report
            tcrObj = result.Data;
            
            % Insert model screenshot at the test case result level
            if isa(tcrObj, 'sltest.testmanager.TestCaseResult')
                
                % Initialize model name
                modelName = '';
                
                % Check in the test case result if it has model information. If
                % not, it means there were iterations in the test case or a
                % model was not used.
                testSimMetaData = tcrObj.SimulationMetaData;
                
                if (~isempty(testSimMetaData))
                    modelName = testSimMetaData.modelName;
                end
                
                % Get iteration results
                iterResults = getIterationResults(tcrObj);
                
                % Get the model name in case test case had iterations
                if (~isempty(iterResults))
                    modelName = iterResults(1).SimulationMetaData.modelName;
                end
                
                % Insert model snapshot. This will not work for harnesses. With
                % minimal changes we can also open the harness used for
                % testing.
                if (~isempty(modelName))
                    try
                        open_system(modelName);
                        outputFileName = [tempdir, modelName, '.png'];
                        if exist(outputFileName,'file')
                            delete(outputFileName);
                        end
                        print(outputFileName, '-s', '-dpng');
                        para = sltest.testmanager.ReportUtility.genImageParagraph(...
                            outputFileName,...
                            '5.2in','3.7in');
                        append(docPart,para);
                    catch
                    end
                end
            end
        end
    end
end
Click here for a code file of this example.

Generate a Report Using the Custom Class

After you customize the class and methods, use the sltest.testmanager.report to generate the report. You must use the 'CustomReportClass' name-value pair for the custom class, specified as a string. For example:

% Generate the result set from imported data
result = sltest.testmanager.importResults('demoResults.mldatx');

% Specify the report file name and path
filePath = 'testreport.zip';

% Generate the report using the custom class
sltest.testmanager.report(result,filePath, ...
            'Author','MathWorks',...
            'Title','Test',...
            'IncludeMLVersion',true,...
            'IncludeTestResults',int32(0),...
            'CustomReportClass','CustomReport',...
            'LaunchReport', true);

Alternatively, you can create your custom report using the Test Manager report dialog box. Select a test result, click the Report button on the toolstrip, and specify the custom report class in the Create Test Result Report dialog box. For the Test Manager to use the custom report class, the class must be on the MATLAB path.

See Also

|

Related Topics