The output of running a problem suite is a next dictionary that can easily be converted into json: -------- problem -------- Normal case: problem = { name: name of problem cases: test case results passed: } Critical error occured (Syntax, Indentation, FunctionNotFound): problem = { name: name of problem critical_error: details of error passed: False } ---- case ---- Normal: case = { name: name of test case parts: test part results passed: all parts passed } Exception occured: case = { name: name of test case exception: details of exception passed: False } ---- part ---- Part passed: part = { description: passed: True } Part failed: part = { description: passed: False error_message: } -------------- exception_data -------------- exception_data = { name: class name of exception detail: extra info critical: does exception prevent all tests from being run }