1. 程式人生 > >測試class

測試class

stc col 如果 是否 cas 用戶 進行 false 斷言

各種斷言方法:

assertEqual(a,b)

a == b

assertNotEqual(a,b)

a != b

assertTrue(x)

x == True

assertFalse(x)

x == Flase

assertIn(item,list)

判斷item 在 list中

assertNotIn(item,list)

判斷 item不在list中

編寫一個類,用於調查用戶最喜歡的運動:

class Survey():
‘‘‘問卷調查‘‘‘
def __init__(self,question):
self.question = question

self.responses = []

def show_question(self):
‘‘‘顯示問題‘‘‘
print(self.question)

def store_response(self,new_response):
‘‘‘存儲單個答案‘‘‘
self.responses.append(new_response)

def show_results(self):
‘‘‘顯示收集到的答案‘‘‘
print(‘surver_result :‘)
for response in self.responses:

print(‘- ‘ + response)

這個類,通過方法 show_question(),對用戶進行提問;通過方法 store_response()來保存用戶的答復。

最終生成一個列表:responses 用於包含用戶的答案。

編寫一個測試代碼,對這個類進測試:

import unittest
from surveys import Survey

class Test_Survey(unittest.TestCase):
‘‘‘針對Survey進測試的類‘‘‘
def test_store_single_responses(self):
‘‘‘測試1個答案的方法‘‘‘

question = "What is your favorite sports ?"
my_survey = Survey(question)
my_survey.store_response(‘compute games‘)
self.assertIn(‘compute games‘ , my_survey.responses)

這個代碼只能對一個答案進行測試,意義不大,如果用戶輸入了多個答案,如何確保程序不出錯,也需要進行測試。
import unittest
from surveys import Survey

class Test_Survey(unittest.TestCase):
‘‘‘針對Survey進測試的類‘‘‘
def test_store_single_responses(self):
‘‘‘測試1個答案的方法‘‘‘
question = "What is your favorite sports ?"
my_survey = Survey(question)
my_survey.store_response(‘compute games‘)
self.assertIn(‘compute games‘ , my_survey.responses)
def test_store_more_response(self):
‘‘‘測試多個答案的方法‘‘‘
question = "What is your favorite sports ?"
my_survey = Survey(question)
responses = [‘basketball‘ , ‘football‘ , ‘compute games‘]
for response in responses:
my_survey.store_response(response)
for response in responses:
self.assertIn(response,my_survey.responses)

通過setUp巧妙的修改這個測試代碼:

import unittest
from surveys import Survey

class Test_Survey(unittest.TestCase):
‘‘‘測試Survey類是否在各種情況正常工作‘‘‘

def setUp(self):
question = "What is your favorite sports ?"
self.my_survey = Survey(question)
self.responses = [‘basketball‘ , ‘football‘ , ‘compute games‘]

def test_single_response(self):
‘‘‘測試單個答案的方法‘‘‘
self.my_survey.store_response(self.responses[0])
self.assertIn(self.responses[0],self.my_survey.responses)
def test_more_response(self):
‘‘‘測試多個答案的方法‘‘‘
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)


測試class