2021-03-04 UnitTest框架一

UnitTest框架作用:

1、能够组织多个用例执行

2、提供丰富的断言方法

3、提供丰富的日志及测试结果

UnitTest核心要素:

1、TestCase(测试用例)

方法:新建类并继承TestCase

import unittest
# 在unittest中类不需要实例化
class Test01(unittest.TestCase):
        # 方法必须是test开头的命名
        def test001(self):
            print('test001被执行')
        def test002(self):
            print('test002被执行')
# 调用main函数是为了其他地方调用Test01时,本方法不会执行多次
if __name__ == '__main__':
    unittest.main()

2、TestSuite(测试套件,多条用例时)

方法:

2.1、实例化:suite = unittest.TestCase()

2.2、addTest:

     方式一、suite.addTest(类名(指定的方法名称))

from aa import bb:  #导入某路径下的类,为了获取所写用例
if __name__ == '__main__':
    # 实例化
    suite = unittest.TestSuite
    # 调用 添加用例方法
    suite.addTest(bb("bb01"))
    suite.addTest(bb("bb02"))

    runner = unittest.TextTestRunner()
    runner.run(suite)

 

     方式二、suite.addTest(unittest.makeSuite(类名))   #搜索Classname中test开头的方法并添加到测试套件中

from aa import bb:  #导入某路径下的类,为了获取所写用例
if __name__ == '__main__':
    # 实例化
    suite = unittest.TestSuite
    # 调用 添加用例方法
    suite.addTest(unittest.makeSuite(bb))

    #测试执行
    runner = unittest.TextTestRunner(verbosity=2) # 实例化,runner为实例化名称
    runner.run(suite) # suite为套件名称,可自己更改

注:verbosity 参数可以控制输出的错误报告的详细程度,默认是 1;如果设为 0,则不输出每一用例的执行结果;如果设为 2,则输出详细的执行结果

     方式三*、通过unittest.defaultTestLoader.discover()自动搜索指定目录下的指定开头的.py文件,并将测试用例组装到测试套件

用法:
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
    test_dir为指定目录,'./'为当前目录
    pattern='test*.py' 为要查找的.py文件
运行:
    runner = unittest.TextTestRunner()
    runner.run()

 

3、TextTestRunner

# 实例化   runner = unittest.TextTestRunner()
# 调用    runner.run(测试套件)

2.3、Fixture(对一个测试用例环境的搭建与摧毁就是一个fixture)

         def setUp(self):    #不论放哪儿都被首先执行

         def tearDown(self): #不论放哪儿都被最后执行

         1、必须继承unittest.TestCase

         2、如果一个类中有多个方法,则每个方法执行前都会执行setUp,结束时都会执行tearDown

# 举例
import unittest
class Test001(unittest.TestCase):
    def test001(self):
        print('test001被执行')
    def setUp(self) -> None:
        print('setUp被执行')
    def tearDown(self) -> None:
        print('tearDown被执行')
    def test002(self):
        print('test002被执行')

if __name__ == '__main__':
    unittest.main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值