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使用单元测试的主要内容,如果未能解决你的问题,请参考以下文章

python单元测试

使用python对pyspark代码进行单元测试

使用 Python 对 C 代码进行单元测试的最简单方法

单元测试不了解 XCTest 期望的异步 UI 代码?

如何使用Python进行单元测试建议收藏

如何使用Python进行单元测试建议收藏