How can I access a record of the Command Window using MATLAB Grader?

4 次查看(过去 30 天)
I have asked learners to write a function that displays some messages to the Command Window.
In MATLAB I know I can use the diary function to access a record of the Command Window text, like this:
% Start the diary
diary CommandLog
% run the learner solution here
% Access the log then assess if correct
printOuts = fileread('CommandLog')
For some reason, this comes up as empty char in MATLAB Grader. Is there an alterative?
  2 个评论
Cris LaPierre
Cris LaPierre 2023-4-17
Could you share an example? How many outputs does their function create? How are they created?
IFM
IFM 2023-4-18
How the learners display the messages is up to them. Here are some MWE functions that might be produced by the students.
function y = myFunction(x)
fprintf('Num #1 is passed')
y=32;
end
%% Second example to show they can print out in any way
function y = myFunction2(x)
s=sprintf('check #1 passed')
disp(s)
y=64;
end
And here is what I tried in the MATLAB Grader Testing Suite (just on a function with one output for ease of testing):
diary CommandLog.out
% Run learner solution.
x = 1;
y = myFunction(x);
% Run reference solution.
yRef = reference.myFunction(x);
% Compare.
assessVariableEqual('y', yRef);
% Access "diary" to see all stuf fin Command Window.
printOuts = fileread('CommandLog.out');
whos printOuts
if isempty(printOuts)
error('Your function does not display any messages to the Command Window')
end
However the test fails regardless, even if myFunction is displaying something. "printOuts" is always empty.

请先登录,再进行评论。

采纳的回答

Cris LaPierre
Cris LaPierre 2023-4-17
One workaround could be to write an assessment test that calls the functions using evalc. This captures the command window output in a variable you can then use for assessment.

更多回答(0 个)

社区

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by