我的任務是測試我的Statslist的合理投入,可能會使用我的StatsList類。對於如何爲這些問題提供單元測試,我感到非常困惑。我已經正確地完成了第一堂課。這些問題是:UnitTesting的問題來檢查我的編碼
什麼是數,平均數,中位數,而空單的模式(StatsList,沒有什麼一直追加到)?
帶有一個值的列表的計數,平均值,中位數和模式是什麼?
有兩個值的列表的計數,平均值,中位數和模式是什麼?
如果值的插入順序錯誤(如上例所示),中位數是否仍然有效?
如果按順序插入值,中位數是否仍然有效?
如果有多個值都顯示相同的次數,那麼模式是什麼?
編碼: 進口單元測試 進口statslist
class StatsTest(unittest.TestCase):
def test_Append(self):
sl = statslist.StatsList()
self.assertEqual(0, sl.count())
sl.append(10)
self.assertEqual(1, sl.count())
def test_OneValue(self):
def test_Mean(self):
self.assert
def test_Median(self):
def test_Mode(self):
if __name__ == '__main__':
unittest.main()
編碼StatsList:
class StatsList:
def __init__(self):
self.sum = 0
self.nums = []
def append(self, number):
self.nums.append(number)
def count(self):
count = len(self.nums)
return count
def mean(self):
for num in self.nums:
self.sum = self.sum + num
return self.sum /len(self.nums)
def median(self):
self.nums.sort()
midPos = self.count() // 2
if self.count() % 2 == 0:
median = (nums[midPos] + nums[midPos-1])/2.0
else:
median = self.nums[midPos]
return median
def mode(self):
counts= {}
for num in self.nums:
counts[num] = counts.get(num,0) + 1
mode = max(counts, key = counts.get)
return mode
def byFreq(pair):
return pair[1]
def main():
l = StatsList()
l.append(1)
l.append(11)
l.append(3)
l.append(1)
l.append(4)
print("Count:", l.count()) # should print 5
print("Mean:", l.mean()) # should print 4.0
print("Median:", l.median()) # should print 3
print("Mode:", l.mode()) # should print 1
if __name__ == '__main__':
main()