diff options
author | adityacp | 2016-03-11 16:06:30 +0530 |
---|---|---|
committer | adityacp | 2016-03-11 16:06:30 +0530 |
commit | 994c2a2c175d70bac1a01f582a4ad9c37f569690 (patch) | |
tree | e755454557d040d653a40f0c4777c36a32e076c0 | |
parent | 5e7a49b729010b8c5c7cb12ea725dc3538f27a79 (diff) | |
download | online_test-994c2a2c175d70bac1a01f582a4ad9c37f569690.tar.gz online_test-994c2a2c175d70bac1a01f582a4ad9c37f569690.tar.bz2 online_test-994c2a2c175d70bac1a01f582a4ad9c37f569690.zip |
changes in python test cases
-rw-r--r-- | yaksh/evaluator_tests/test_python_evaluation.py | 162 |
1 files changed, 69 insertions, 93 deletions
diff --git a/yaksh/evaluator_tests/test_python_evaluation.py b/yaksh/evaluator_tests/test_python_evaluation.py index ec46b5e..b71154a 100644 --- a/yaksh/evaluator_tests/test_python_evaluation.py +++ b/yaksh/evaluator_tests/test_python_evaluation.py @@ -2,139 +2,115 @@ import unittest import os from yaksh.python_code_evaluator import PythonCodeEvaluator from yaksh.settings import SERVER_TIMEOUT -import textwrap +from textwrap import dedent class PythonEvaluationTestCases(unittest.TestCase): def setUp(self): self.language = "Python" self.test = None self.test_case_data = [{"func_name": "add", - "expected_answer": "5", - "test_id": u'null', - "pos_args": ["3", "2"], - "kw_args": {} + "expected_answer": "5", + "test_id": u'null', + "pos_args": ["3", "2"], + "kw_args": {} }] def test_correct_answer(self): - user_answer = textwrap.dedent(""" - def add(a, b): - return a + b - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b): + return a + b + """) + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertTrue(result.get("success")) self.assertEqual(result.get("error"), "Correct answer") def test_incorrect_answer(self): - user_answer = textwrap.dedent(""" - def add(a, b): - return a - b - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b): + return a - b + """) + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) self.assertEqual(result.get("error"), "AssertionError in: assert add(3, 2) == 5") def test_infinite_loop(self): - user_answer = textwrap.dedent(""" - def add(a, b): - while True: - pass - """) + user_answer = dedent(""" + def add(a, b): + while True: + pass + """) timeout_msg = ("Code took more than {0} seconds to run. " "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) self.assertEquals(result.get("error"), timeout_msg) def test_syntax_error(self): - # Do not touch any error messages as it can fail test case - user_answer = textwrap.dedent(""" - def add(a, b); - return a + b - """) - syntax_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - File "<string>", line 2 - def add(a, b); - ^ - SyntaxError: invalid syntax\n""") - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b); + return a + b + """) + syntax_error_msg = "SyntaxError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), syntax_error_msg) + self.assertIn(syntax_error_msg, result.get("error")) def test_indent_error(self): - user_answer = textwrap.dedent(""" - def add(a, b): - return a + b - """) - indent_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - File "<string>", line 3 - return a + b - ^ - IndentationError: expected an indented block - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b): + return a + b + """) + indent_error_msg = "IndentationError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), indent_error_msg) + self.assertIn(indent_error_msg, result.get("error")) def test_name_error(self): user_answer = "" - name_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - NameError: name 'add' is not defined - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + name_error_msg = "NameError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), name_error_msg) + self.assertIn(name_error_msg, result.get("error")) def test_recursion_error(self): - user_answer = textwrap.dedent(""" - def add(a, b): - return add(3, 3) - """) - recursion_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - RuntimeError: maximum recursion depth exceeded - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b): + return add(3, 3) + """) + recursion_error_msg = "RuntimeError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), recursion_error_msg) + self.assertIn(recursion_error_msg, result.get("error")) def test_type_error(self): - user_answer = textwrap.dedent(""" - def add(a): - return a + b - """) - type_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - TypeError: add() takes exactly 1 argument (2 given) - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a): + return a + b + """) + type_error_msg = "TypeError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), type_error_msg) + self.assertIn(type_error_msg, result.get("error")) def test_value_error(self): - user_answer = textwrap.dedent(""" - def add(a, b): - c = 'a' - return int(a) + int(b) + int(c) - """) - value_error_msg = textwrap.dedent("""\ - Traceback (most recent call last): - ValueError: invalid literal for int() with base 10: 'a' - """) - evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) - result = evaluator.evaluate() + user_answer = dedent(""" + def add(a, b): + c = 'a' + return int(a) + int(b) + int(c) + """) + value_error_msg = "ValueError" + get_evaluator = PythonCodeEvaluator(self.test_case_data, self.test, self.language, user_answer, ref_code_path=None, in_dir=None) + result = get_evaluator.evaluate() self.assertFalse(result.get("success")) - self.assertEquals(result.get("error"), value_error_msg) + self.assertIn(value_error_msg, result.get("error")) if __name__ == '__main__': unittest.main() |