• 为什么要用unittest


    '''为什么要使用单元测试框架?:
    1.当用例很多的时候用来组织用例和执行用例
    2.提供丰富的比较方法
    3.提供丰富的日志'''
    
    import unittest
    import HTMLTestRunner
    import os
    
    path = os.getcwd()
    class Test_baidu(unittest.TestCase):
        def setUp(self):
            print('每一个开始了-----------')
    
        def test_1(self):
            print('test_1')
            self.assertEqual('1','2',msg='1!=2')
    
        def test_2(self):
            print('test_2')
            self.assertIsInstance([1,2],list)
    
        @unittest.skip    #虽然这个方法不执行,但是setup和teardown还要执行的
        def test_3(self):
            print('test_3')
            self.assertIs('1','1')
    
        def tearDown(self):
            print('每一个结束了----------')
    
        @classmethod
        def setUpClass(cls):
            print('大项目开是啦+++++++++')
    
        @classmethod
        def tearDownClass(cls):
            print('大项目结束了+++++++++++')
    
    
    if __name__ == '__main__':
        suit = unittest.TestSuite()
        suit.addTest(Test_baidu('test_2'))   #先把要执行的顺序,一个一个添加进去  ---就是组织用例
        suit.addTest(Test_baidu('test_1'))
        suit.addTest(Test_baidu('test_3'))   #有了skip的存在,加进去也没有用的
        runner = unittest.TextTestRunner()  #把要执行的案例添加到suit之后,用TextTestRunner()对象就可以运行了  --组织好用例一键执行
        # discover = unittest.TestLoader().discover(path)
        # runner1 = HTMLTestRunner.HTMLTestRunner()
        # runner1.run(discover)
        runner.run(suit)

    上面是个 test*.py,,这个是main.py

    '''当用例很少的时候可以用suit一个一个的添加。
    我们要把所有的用例都放在TEST_Case作用,里面有很多test*.py,   现在只有一个u1.py'''
    
    import unittest,os
    path = os.getcwd()
    print(path)
    
    
    discover = unittest.defaultTestLoader.discover(path,pattern='u*.py') #discover 返回的就是suit,所以Testloader就是把所有的案例加载到suit中。
    
    runner = unittest.TextTestRunner()
    runner.run(discover)
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=1)

    skip跳过测试用例

    import unittest
    import HTMLTestRunner
    import os
    
    path = os.getcwd()
    class Test_baidu(unittest.TestCase):
        def setUp(self):
            print('每一个开始了-----------')
    
        def test_1(self):
            print('test_1')
            self.assertEqual('1','2',msg='1!=2')
    
        def test_2(self):
            print('test_2')
            self.assertIsInstance([1,2],list)
    
        @unittest.skip    #虽然这个方法不执行,但是setup和teardown还要执行的
        def test_3(self):
            print('test_3')
            self.assertIs('1','1')
    
    
        @unittest.skipIf(3<2,'当条件为真时跳过测试,条件为假的时候执行案例')
        def test_4(self):
            print('test_4')
            self.assertIs('1','1')
    
        @unittest.skipUnless(3<2,'当条件为假的时候不执行测试用例')  #unless 除非
        def test_5(self):
            print('test_5')
            self.assertIs('1','1')
    
    
        def tearDown(self):
            print('每一个结束了----------')
    
        @classmethod
        def setUpClass(cls):
            print('大项目开是啦+++++++++')
    
        @classmethod
        def tearDownClass(cls):
            print('大项目结束了+++++++++++')
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)

    生成html文件

    import unittest,os
    from HTMLTestRunner import HTMLTestRunner
    path = os.getcwd()
    print(path)
    
    
    discover = unittest.defaultTestLoader.discover(path,pattern='u*.py') #discover 返回的就是suit,所以Testloader就是把所有的案例加载到suit中。
    
    htmlpath = path+r'
    eport.html'
    print(htmlpath)
    
    f = open(htmlpath,'wb')
    runner = HTMLTestRunner(stream=f,verbosity=2,title='测试报告',description='这个是自己的的测试结果')  #htmltestrunner 就是对testrunner的封装
    
    runner.run(discover)
    f.close()
    
    
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=1)
    import time
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    '''原来的html文件名是写死的,重新生成就会覆盖,所有让每次名字不一样加入时间(文件名好像不能用:一直报错)'''
    htmlpath = 'F:/asus/auto_file/unittest_html'+'/'+now+'report.html'
    
    f = open(htmlpath,'wb')
    
    runner = HTMLTestRunner(stream=f,verbosity=2,title='测试报告',description='这个是自己的的测试结果')  #htmltestrunner 就是对testrunner的封装
    
    runner.run(discover)
    f.close()
  • 相关阅读:
    KMP 算法 C++
    java RTTI笔记 之Class学习笔记(摘自java编程思想)
    java sql
    event
    mysql 编写存储过程
    《淘宝技术这十年》重读笔记
    关于“产品”的笔记
    程序员,当你遇到一个“坑”
    C盘清理大作战
    android开发笔记
  • 原文地址:https://www.cnblogs.com/tarzen213/p/11108860.html
Copyright © 2020-2023  润新知