码迷,mamicode.com
首页 > 编程语言 > 详细

Python使用单元测试

时间:2018-09-01 22:00:03      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:mod   str   dong   strong   code   __init__   nbsp   空格   tle   

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作

使用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使用单元测试

标签:mod   str   dong   strong   code   __init__   nbsp   空格   tle   

原文地址:https://www.cnblogs.com/Rollerman/p/9571510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!