예제 #1
0
class QuestionTestCases(unittest.TestCase):
    def setUp(self):
        # Single question details
        # self.question = Question(summary='Demo question', language='Python',
        #                          type='Code', active=True,
        #                          description='Write a function', points=1.0,
        #                          test='Test Cases', snippet='def myfunc()')
        self.question = Question(summary='Demo question', language='Python',
                                 type='Code', active=True,
                                 description='Write a function', points=1.0,
                                 snippet='def myfunc()')
        self.question.save()
        self.question.tags.add('python', 'function')
        self.testcase = TestCase(question=self.question, 
                                 func_name='def myfunc', kw_args='a=10,b=11',
                                 pos_args='12,13', expected_answer='15')
        answer_data = {"user_answer": "demo_answer", 
                        "test_parameter": [{"func_name": "def myfunc", 
                                            "expected_answer": "15", 
                                            "test_id": self.testcase.id, 
                                            "pos_args": ["12", "13"], 
                                            "kw_args": {"a": "10", 
                                                        "b": "11"}
                                        }], 
                        "id": self.question.id, 
                        "language": "Python"}
        self.answer_data_json = json.dumps(answer_data)
        self.user_answer = "demo_answer"

    def test_question(self):
        """ Test question """
        self.assertEqual(self.question.summary, 'Demo question')
        self.assertEqual(self.question.language, 'Python')
        self.assertEqual(self.question.type, 'Code')
        self.assertFalse(self.question.options)
        self.assertEqual(self.question.description, 'Write a function')
        self.assertEqual(self.question.points, 1.0)
        self.assertTrue(self.question.active)
        self.assertEqual(self.question.snippet, 'def myfunc()')
        tag_list = []
        for tag in self.question.tags.all():
                    tag_list.append(tag.name)
        self.assertEqual(tag_list, ['python', 'function'])

    def test_consolidate_answer_data(self):
        """ Test consolidate_answer_data function """
        result = self.question.consolidate_answer_data([self.testcase], 
                                                         self.user_answer)
        self.assertEqual(result, self.answer_data_json)