单元测试就是对某一块代码编写测试代码,通过正确或者不正确的例子,检查被测代码编写的正确性。
举例:
'''
一个获取学生姓名和成绩拍段学生等级的类 Student
__init__ 定义属性
tryError 检查输入的学生姓名和分数数据是否合理
get_grade 根据成绩判断等级
'''
# -*- coding: utf-8 -*-
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def tryError(self):
if isinstance(self.name,str)==False:
raise ValueError
if self.score>100 or self.score<0:
raise ValueError
def get_grade(self):
if 80<=self.score<=100 :
return 'A'
elif 60<=self.score<= 80:
return 'B'
else :
return 'C'
测试代码:
'''
python 测试框架:unittest
设计一个Testcase ,使用assert判定其属性
'''
# -*- coding: utf-8 -*-
import unittest
from mystudent import Student #将需要测试的文件和类引进来
class TestStudent(unittest.TestCase):
def test_grade(self):
for score in range (1,101):
s1=Student('zaq',score)
if 80<=score<=100:
self.assertEqual(s1.get_grade(),'A')
#assertEqual=判定s1.get_grade()='A'
elif 60<=score<80:
self.assertEqual(s1.get_grade(),'B')
else:
self.assertEqual(s1.get_grade(),'C')
def test_invalid(self):
s1 = Student('Bart', -1)
s2 = Student('Lisa', 101)
with self.assertRaises(ValueError):
#assertRaises 判定抛出错误 值错误
s1.tryError()
with self.assertRaises(ValueError):
s2.tryError()
#执行测试代码
if __name__ == '__main__':
unittest.main()
执行方法可以在控制台输入:
python -m student_test(文件名)
使用unittest
框架时必须在测试类前面加Test才会被认为是测试类,同理,在测试方法前加test才会被认为是测试方法