check_output() enables you to check for patterns or literal matches in the output the student generated with his or her submission. Where
check_output_expr() (see next section) executes the
expr argument you pass it and then tries to match it to the student’s output, the
check_output() function doesn’t perform any execution: it simply looks for matches for the
pattern you specify.
Suppose you want to check whether the student printed out
My name is <name here>. A solution could look like this:
To allow for different names here, you can use the following SCT:
The regex allows you to allow both
My, and to allow any name, as long as its first character is a letter and there’s at least one such character.
check_output_expr() executes the
expr - an R expression as a string that you specify - and records the output it generates. Next, it tries to match this output to the output that the student generated with his or her submission. With
times you can specify how often this match should occur, and with
incorrect_msg you can override the automatically generated message in case the test failed.
check_output_expr() is used very often, typically to check if the student correctly printed out a variable, whatever its class. It is also pretty robust to different solutions: how people end up printing the variable doesn’t matter, as long as the output contains the correct info it’s all good.
check_output_expr() is only appropriate to test textual output, so actual printouts to the console. It will not work to test function calls that do not generate any output, or that generate plot output. Using, for example,
test_output_contains("hist(mtcars$mpg)") to test whether a student correctly created a histogram of the
mpg column of
mtcars makes no sense: the
hist() function does not generate textual output that can be captured with
Suppose you want the student to print out the fourth row of the
mtcars data frame. The solution would look as follows:
The following SCT would check this:
You simply pass the expression that would generate the correct printout as an expression, and
check_output_expr() takes care of the rest. You can also use a custom
missing_msg to give meaningful feedback to the student.