def grade(questions, messages, env=None, verbose=True): format.print_line('~') print('Running tests') print() passed = 0 failed = 0 locked = 0 analytics = {} # The environment in which to run the tests. for test in questions: log.info('Running tests for {}'.format(test.name)) results = test.run(env) # if correct once, set persistent flag if results['failed'] == 0 and results['locked'] == 0: storage.store(test.name, 'correct', True) passed += results['passed'] failed += results['failed'] locked += results['locked'] analytics[test.name] = results if not verbose and (failed > 0 or locked > 0): # Stop at the first failed test break format.print_progress_bar('Test summary', passed, failed, locked, verbose=verbose) print() messages['grading'] = analytics
def grade(questions, messages, env=None, verbose=True): format.print_line('~') print('Running tests') print() passed = 0 failed = 0 locked = 0 analytics = {} # The environment in which to run the tests. for test in questions: log.info('Running tests for {}'.format(test.name)) results = test.run(env) # if correct once, set persistent flag if results['failed'] == 0 and results['locked'] == 0: storage.store(test.name, 'correct', True) passed += results['passed'] failed += results['failed'] locked += results['locked'] analytics[test.name] = results if not verbose and (failed > 0 or locked > 0): # Stop at the first failed test break format.print_progress_bar('Test summary', passed, failed, locked, verbose=verbose) print() messages['grading'] = analytics
def grade(questions, messages, env=None, verbose=True): format.print_line('~') print('Running tests') print() passed = 0 failed = 0 locked = 0 analytics = {} # The environment in which to run the tests. for test in questions: log.info('Running tests for {}'.format(test.name)) results = test.run(env) # if correct once, set persistent flag if results['failed'] == 0: storage.store(test.name, 'correct', True) passed += results['passed'] failed += results['failed'] locked += results['locked'] analytics[test.name] = results current_directory = os.getcwd() if not os.path.exists(current_directory + "/submissions"):
def testSuppressOnCorrect(self): self.make_attempt(self.test, 1) self.make_attempt(self.test, 2, succeeds=True) storage.store(self.test.name, 'correct', True) # attempts on a correct question shouldn't increase counter self.make_attempt(self.test, 2, succeeds=True) self.make_attempt(self.test, 2, succeeds=True) storage.store(self.test.name, 'correct', False) self.make_attempt(self.test, 2, succeeds=False) time.sleep(2) self.make_attempt(self.test, 3, succeeds=True)
def run(self, messages): if self.args.score or self.args.unlock or self.args.testing: return analytics = {} tests = self.assignment.specified_tests for test in tests: if get(test.name, 'correct', default=False): continue # suppress rate limiting if question is correct last_attempt, attempts = self.check_attempt(test) analytics[test.name] = { 'attempts': store(test.name, 'attempts', attempts), 'last_attempt': store(test.name, 'last_attempt', last_attempt), } messages['rate_limit'] = analytics
def run(self, messages): if self.args.score or self.args.unlock or self.args.testing: return analytics = {} tests = self.assignment.specified_tests for test in tests: if get(test.name, 'correct', default=False): continue # suppress rate limiting if question is correct last_attempt, attempts = self.check_attempt(test) analytics[test.name] = { 'attempts': store(test.name, 'attempts', attempts), 'last_attempt': store(test.name, 'last_attempt', last_attempt), } messages['rate_limit'] = analytics