Python使用单元测试
Posted Trami的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python使用单元测试相关的知识,希望对你有一定的参考价值。
单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作
使用unittest模块做单元测试
1)对函数进行测试
下面是一个简单的函数,它接收名和姓,返回整洁的姓名:
name_function.py
def get_formatted_name(first, last): full_name = first + ‘ ‘ + last return full_name.title()
函数get_formatted_name将名和姓组成一个完整的名字,并在名和姓之间添加一个空格,同时将首字母大写,再返回结果。
单元测试这样写:
test_name_function.py
import unittest from name_function import get_formatted_name class NamesTestCase(unittest.TestCase): ‘‘‘ test_function Begin‘‘‘ def test_first_last_name(self): formatted_name = get_formatted_name(‘du‘,‘xiaodong‘) self.assertEqual(formatted_name,‘Du Xiaodong‘)
unittest.main()
需要注意的是,1.引入了unittest模块并且NamesTestCase需要继承unittest.TestCase类。2.所有的测试函数都需要是test_function开头,并且需要在代码最后执行unittest.main()
这样测试用例就会自动执行,如果你的测试正确,执行python test_name_function.py,显示如下:
---------------------------------------------------------------------- Ran 1 test in 0.000s OK
2)对类进行测试
这里写一个类Employee,其中__init__()接收姓名和年薪,其中give_raise()这个方法是加薪,默认加薪5000。
Employee.py
class Employee(): def __init__(self,name,salary): self.name = name self.salary = salary def give_raise(self,money = 5000): self.salary += money
测试类test_Employee.py
import unittest from Employee import Employee class TestEmployee(unittest.TestCase): def setUp(self): self.employee = Employee(‘Du Xidong‘, 100000) def test_raise(self): self.employee.give_raise(10000) self.assertEqual(110000,self.employee.salary) unittest.main()
这里需要指出的是setUp()这个方法类构造的时候会被执行,然后运行 python test_Employee.py会得到如下的结果:
---------------------------------------------------------------------- Ran 1 test in 0.001s OK
总结
1、单元测试类必须继承unit.TestCase类,2、测试函数必须以test_function开头,3、使用断言assertEqual或者其他单元具体查看unittest module中的断言方法assertIn(item,list)等
以上是关于Python使用单元测试的主要内容,如果未能解决你的问题,请参考以下文章