python单元测试

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作.
这种以测试为驱动的开发模式最大的好处就是确保一个程序模块的行为符合我们设计的测试用例。在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的,这种模式也被称为TDD

二、测试用例TestCase
软件测试中最基本的组成单元式测试用例(test case),PyUnit使用TestCase类来表示测试用例,并要求所有用于执行测试的类都必须从该类继承。TestCase子类实现的测试代码应该是自包含的(self contained),即测试用例既可以单独运行,也可以和其它测试用例构成集合共同运行。TestCase类中常用的函数或方法有:
setUp:进行测试前的初始化工作。
tearDown:执行测试后的清除工作。
failedinfo:表示不成立打印信息faliedinfo,为可选参数。
self.assertEqual(value1, value2, failedinfo):会无条件的导致测试失败,不推荐使用。
self.assertTrue(, failedinfo):断言value1 == value2。
self.assertFalse(, failedinfo):断言value为真。
self.assertRaises(ValueError, self.widget.resize, -1, -1):断言肯定发生异常,如果没发生异常,则为测试失败。参数1为异常,参数2为抛出异常的调用对象,其余参数为传递给可调用对象的参数。
TestCase在PyUnit测试框架中被视为测试单元的运行实体,Python程序员可以通过它派生自定义的测试过程与方法(测试单元),利用Command和Composite设计模式,多个TestCase还可以组合成测试用例集合。PyUnit测试框架在运行一个测试用例时,TestCase子类定义的setUp()、runTest()和tearDown()方法被依次执行,最简单的测试用例只需要覆盖runTest()方法来执行特定的测试代码就可以了。
对函数进行单元测试

'''
单元测试:
作用:用来对一个函数,一个类或者一个模块来进行正确性校验工作
结果:
单元测试通过 说明我们测试的函数功能正常
单元测试不通过:说明函数功能有问题或者测试条件输入有误
'''
def mysum(x,y):
    x+=1
    return x + y
def mysub(x,y):
    return x -y

print(mysum(1,2))
import unittest


from 对函数进行单元测试 import mysum,mysub

class Test(unittest.TestCase):
    def setUp(self):
        print("开始测试时自动调用")
    def tearDown(self):
        print("结束测试时自动调用")
    # 测试mysum
    def test_mysum(self):
        self.assertEqual(mysum(1,2),3,"加法有误")
    def test_mysum(self):
        self.assertEqual(mysum(2,1),1,"减法有误")


if __name__ == '__main__':
    unittest.main()

对类进行单元测试

class Person():
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def getvar(self):
        return self.age +1
from person import Person

per = Person("tom",20)
print(per.getvar())
import unittest

from person import Person

class Test(unittest.TestCase):
    def test_init(self):
        p = Person('jerry',25)
        self.assertEqual(p.name,'jerry',"属性赋值有误")
    def test_getvar(self):
        p = Person('jerry', 25)
        self.assertEqual(p.getvar(),p.name,'函数有误')

if __name__ == '__main__':
    unittest.main()

文档测试

import doctest
# 可以提取注释中的代码去执行,严格按照python交互模式的输入
# 提取

def mysum(x,y):
    '''
    get the sum of x,y
    :param x: firstnum
    :param y: secondnum
    :return: sum
    example:
    >>> print(mysum(1,2))#注意此处的空格必须有一个空格
    3
    '''
    return  x + y +1

print(mysum(1,2))
# 进行文档测试
doctest.testmod()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值