unittest单元测试框架

Python 2.1及以后的版本,将unittest作为一个标准模块放入Python开发包中。使用unittest编写测试用例的规则import unittest 创建一个测试类,必须要继承unittest.TestCase类 创建一个测试方法,且方法要以“test” 开头from calculator import Calculatorimport unittestclass TestAdd(unittest.TestCase): def test_add(self):
摘要由CSDN通过智能技术生成

Python 2.1及以后的版本,将unittest作为一个标准模块放入Python开发包中。

使用unittest编写测试用例的规则

  1. import unittest
  2. 创建一个测试类,必须要继承unittest.TestCase类
  3. 创建一个测试方法,且方法要以“test” 开头
from calculator import Calculator
import unittest

class TestAdd(unittest.TestCase):
    def test_add(self):
        c =Calculator(3,5)
        result = c.add()
        self.assertEqual(result,8)

if __name__ =='__main__':
    unittest.main() //通过main()方法来执行测试用例;按照测试类、方法的名称ASCII值大小的顺序执行用例

unittest的执行结果

  1. “.” 表示测试用例执行通过
  2. “F”表示执行失败
  3. “E” 表示执行错误
  4. "s“表示运行跳过

三个重要概念

1. Test Case

最小的测试单元,即测试方法。unittest提供了TestCase基类,我们创建的测试类要继承该基类,它可以 用来创建新的测试用例。

2. Test Suite

测试用例、测试套件或两者的集合,用于组装一组要运行的测试。

使用TestSuite类来创建测试套件。

3. Test Runner

Test Runner是一个组件,用于协调测试的执行并向用户提供结果。

unittest提供了TextTestRunner类运行测试用例。

测试用例执行顺序

unittest默认按照ASCII码的顺序加载测试用例(包括测试目录和测试文件、测试类、测试方法),即它并不是按照测试用例的创建顺序从上到下执行的。

discover()和main()方法的执行顺序是一样的。故想让某个测试文件先执行,可以在命名上加以控制。

如何控制测试用例的执行顺序?

可以通过TestSuite类的addTest()方法按照一定的顺序来加载测试用例,这样想先被执行的用例就可以先加载。

from calculator import Calculator
import unittest

class TestAdd(unittest.TestCase):
    def test_add(self):
        c =Calculator(3,5)
        result = c.add()
        self.assertEqual(result,8)

    def test_add_decimals(self):
        c=Calculator(3.5,5.5)
        result=c.add()
        self.assertEqual(result,9)

class TestSub(unittest.TestCase):
    def test_sub(self):
        c =Calculator(5,1)
        result = c.sub()
        self.assertEqual(result,4)

if __name__ =='__main__':
    #创建测试套件
    suit = unittest.TestSuite()
    suit.addTest(TestSub("test_sub")) //添加测试用例
    suit.addTest(TestAdd("test_add_decimals"))

    #创建测试运行器
    runner = unittest.TextTestRunner()
    runner.run(suit)

执行多个测试用例

unittest.defaultTestLoader.discover()方法可以从多个文件中查找测试用例。

该类根据各种标准加载测试用例,并将它们返回给测试套件。

discover(start_dir, pattern='Test*.py', top_level_dir=None)

  1. start_dir : 待测试的模块名/测试用例目录࿱
  • 7
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值