码迷,mamicode.com
首页 > 其他好文 > 详细

unittest

时间:2020-05-05 17:51:13      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:dfa   obj   ssm   cep   用例   ble   dem   sts   嵌套   

Unittest

Unittest框架简析

什么是unittest框架

unittest框架有4个重要概念:test fixture / test case / test suite / test runner

  • Test case的实例就是一个测试用例,一个完整的测试流程
    1. 测试准备前环境的搭建:setUp
    2. 执行测试代码:run
    3. 测试后环境的还原:tearDown
  • Test suite多个测试用例的集合,且Test suit可以自我嵌套
  • Test runner执行测试用例,run会启用TestSuite/TestCase的run方法
  • TestLoader加载Test case至Test suite当中
  • Test fixture对测试环境的搭建和销毁就是一个完整的fixture,通过覆盖TestCase中的setUp()和tearDown()方法来实现

使用Python搭建unittest的完整步骤

  1. 编写一个测试类,继承unittest中的TestCase类
  2. 在类中定义测试方法,每个方法的方法名要以test开头,且没有额外的参数,TestCase中提供了一些常用的assert断言方法
  3. 执行unittest.main(),该函数负责运行测试,它会实例化所有TestCase的子类,运行其中所有以test开头的方法并生成相关测试报告

使用的完整流程

import unittest
class DemoTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print(‘call class start‘)
    def setUp(self):
        print(‘call setUp‘)
    def tearDown(self):
        print(‘call tearDown‘)
    def test_demo(self):
        print(‘this is a test‘)
    @classmethodd
    def tearDownClass(cls):
        print(‘end class‘)

其中setUpClass和tearDownClass每个测试类均只执行一次

setUp和tearDown每个test的测试用例均会执行一次

Unittest断言简析

code compare
assertEqual(a,b) a==b
assertNotEqual(a,b) a!=b
assertTrue(x) / assertFalse(x) bool(x) is True/False
assertIs(a,b)/IsNot(a,b) a is b/ a is not b
assertIsNone(x)/IsNotNone is None / is not None
assertIn(a,b) / NotlN(a,b) a in b/ a not in b
assertIsInstance(a,b) isinstance(a.b)
assertNotIsnstance(a,b) not isinstance(a,b)

注意:is是判断地址是否相等,而==是判断内容是否一致(注意可变对象与不可变对象的地址区别)

抛出异常:assertRaises(ValueError,self.object,var1,var2)

参数一为抛出的异常,参数二为异常的调用对象,后面为传递的参数

此断言抛出异常,如果没有抛出异常,则为测试失败

Unittest常见装饰器

decorator description
@unittest.skip(reason) 跳过此测试(方法)
@unittest.skipIf(condition,reason) condition=True,skip test
@unittest.skipUnless(condition,reason) condition=False,skip test
@unittest.expectedFailure if pass->test fail else test success
exception unittest.SkipTest(reason) rasie expection to skip test

一套常用的组合拳

# 使用用例组合进行套测试
suite = unittest.TestSuite()
suite.addTest(Class(method))
suite.addTest(Class(method1))
# 可以利用列表进行批量添加,注意,method均为字符串类型
suite.addTests([Class(method1),Class(method2)])
# 创建运行器对象->对象调用组合套进行run
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
# 使用加载器
loader = unittest.TestLoader()
tests1 = loader.loadTestsFromName(‘dir.Class‘)
tests2 = loader.loadTestsFromName(‘dir.Class‘)
suite.addTests([tests1,tests2])
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
# 写入文件的方法
with open(‘filename.txt‘,‘w+‘) as f:
    runner = unittest.TextTestRunner(stream=f,verbosity=2)
    runner.run(suite)

unittest

标签:dfa   obj   ssm   cep   用例   ble   dem   sts   嵌套   

原文地址:https://www.cnblogs.com/WheelCode/p/12828179.html

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