def test_question_expected(self): u = User(nickname = 'john', email = '*****@*****.**', role = ROLE_RESEARCHER) db.session.add(u) survey = Survey(title = "test",researcher = u) db.session.add(survey) s1 = Section (title = "1",description = "a", sequence = 1, percent = 1, survey = survey) db.session.add(s1) q1 = QuestionText(text="q1",section=s1,expectedAnswer="1",maxNumberAttempt=3) db.session.add(q1) db.session.commit() ans = Answer(user=u,question=q1,answerText="2") db.session.add(ans) db.session.commit() self.assertFalse(ans.answerAttempt()) self.assertTrue(ans.isMoreAttempt()) ans.answerText="1" self.assertTrue(ans.answerAttempt()) ans.numberAttempt=4 self.assertFalse(ans.isMoreAttempt()) q2 = QuestionYN(text="q1",section=s1,expectedAnswer="yes",maxNumberAttempt=0) db.session.add(q2) ans = Answer(user=u,question=q2,answerYN=False) db.session.add(ans) db.session.commit() self.assertTrue(ans.isMoreAttempt()) self.assertFalse(ans.answerAttempt()) ans.answerYN=True self.assertTrue(ans.answerAttempt())
def answer_question(user,q, time): l=[0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10] l2=[0,2,4,6,8,10,12,14,16,18,20] if q.decision=="decision_one_v1": i=random.choice(l) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_one_v2": i=random.choice(l) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_two": i=random.choice(l) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_three": i=random.choice(l) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_four": i=random.choice(l2) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_six": i=random.choice(l2) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText=(i) elif q.decision=="decision_five": i=random.randrange(0,2) answer=models.Answer(answerNumeric=i,user=user,question=q) answer.answerText = q.choices[answer.answerNumeric] elif isinstance (q, QuestionYN): answer = Answer (answerYN =random.randrange(0,2)==1, user= user, question = q) answer.answerText = str(answer.answerYN) elif isinstance (q, QuestionText): if q.isExpectedAnswer(): if random.choice([0,1,1])==1: # 66% of know the answer answer = Answer (answerText =q.expectedAnswer.lower(), user= user, question = q) answer.numberAttempt= random.randrange(1, q.maxNumberAttempt+1) else: answer = Answer (answerText =forgery_py.forgery.lorem_ipsum.word(), user= user, question = q) answer.numberAttempt= q.maxNumberAttempt+1 elif q.isNumber: answer = Answer (answerNumeric =random.randrange(0,100), user= user, question = q) answer.answerText = answer.answerNumeric else: answer = Answer (answerText =forgery_py.forgery.lorem_ipsum.word(), user= user, question = q) elif isinstance (q,QuestionChoice): if q.is_range: answer = Answer (answerNumeric =random.randrange(q.range_min,q.range_max), user= user, question = q) answer.answerText = answer.answerNumeric else: answer = Answer (answerNumeric =random.randrange(0,len(q.choices)), user= user, question = q) answer.answerText = q.choices[answer.answerNumeric] elif isinstance (q,QuestionLikertScale): answer = Answer (answerNumeric =random.randrange(q.minLikert,q.maxLikert+1), user= user, question = q) answer.answerText = answer.answerNumeric else: print "tipo de pregunta invalido" quit() t = random.randrange(900, 6500) time = time + t answer.globalTime = time answer.differentialTime = t db.session.add(answer) return time