Пакет: matlab.unittest.plugins
Подключаемый модуль, который создает отчет о результатах тестирования
TestReportPlugin создает подключаемый модуль, который управляет TestRunner для получения отчета о результатах тестирования. С помощью этого плагина можно создавать читаемые и архивируемые отчеты о тестах.
Создать экземпляр TestReportPlugin используя один из своих статических методов:
Для создания .docx отчет, используйте producingDOCX статический метод.
Для создания .html отчет, используйте producingHTML статический метод.
Для создания PDF отчет, используйте producingPDF статический метод.
IncludeCommandWindowText - Индикатор, если включен вывод текста из окна командfalse (по умолчанию) | trueЭто свойство доступно только для чтения.
Индикатор, если включен текстовый вывод из окна команд, указанный как false или true (logical 0 или 1). По умолчанию IncludeCommandWindowText является false и вывод текста из окна команд исключается из отчета. Чтобы включить текст окна команд в отчет, укажите IncludeCommandWindowText как true при строительстве плагина.
IncludePassingDiagnostics - Индикатор включения диагностики прохождения событийfalse (по умолчанию) | trueЭто свойство доступно только для чтения.
Индикатор включения диагностики прохождения событий, указанный как false или true (logical 0 или 1). По умолчанию IncludePassingDiagnostics является false и диагностику от прохождения событий исключают из выходных данных. Чтобы включить в вывод диагностику по проходящим событиям, укажите IncludePassingDiagnostics как true при строительстве плагина.
LoggingLevel - Максимальный уровень детализации для регистрируемой диагностики, включенной в состав подключаемого модуляmatlab.unittest.Verbosity.Terse (по умолчанию) | matlab.unittest.Verbosity объект перечисленияЭто свойство доступно только для чтения.
Максимальный уровень детализации для регистрируемой диагностики, включенной плагином, возвращаемый как matlab.unittest.Verbosity объект перечисления. Плагин включает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию это свойство имеет значение matlab.unittest.Verbosity.Terse. Во время построения плагина можно указать другой уровень регистрации.
Диагностика в журнале - это диагностика, поставляемая в среду тестирования с вызовом log (TestCase) или log (Fixture) способ.
| producingDOCX | Создает подключаемый модуль .docx отчет |
| producingHTML | Создает подключаемый модуль .html отчет |
| producingPDF | Создает подключаемый модуль .pdf отчет |
Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.
.docx ФорматСоздайте тестовый пакет из двух тестовых файлов, запустите пакет и создайте .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)
.pdf Отчет, включающий прохождение диагностикиСоздайте набор тестов из функционального теста, запустите набор и создайте отчет о результатах. Включить передачу диагностики и вывода текста в командное окно.
Создание нового файла в рабочей папке с именем 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.Просмотрите результаты диагностики для третьего теста. Тестовый фреймворк сохранил два артефакта, связанных с третьим тестом. По умолчанию a FigureDiagnostic объект сохраняет фигуру как файл PNG и файл фиг.
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. Отчет о тестировании также содержит путь к артефактам.
matlab.unittest.plugins.testreport.DOCXTestReportPlugin | matlab.unittest.plugins.testreport.HTMLTestReportPlugin | matlab.unittest.plugins.testreport.PDFTestReportPlugin
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.