zoukankan      html  css  js  c++  java
  • unittest框架(二)单元测试及测试报告

    如果要自测代码,可使用单元测试,需要导入unittest模块,import unittest即可。

    例如,自测一个计算连个数相除的函数,代码如下:

    import unittest
    def calc(a,b):
        return round(a/b,1)  #返回a除以b的结果,保留1位小数
    class TestCacl(unittest.TestCase):
        def test1(self):  #测试用例要以test开头,不然不会被执行
            res = calc(1,2)
            self.assertEqual(0.5,res,'计算不正确')  #判断实际结果是不是等于预期结果
        def test2(self):
            res = calc(1,0)
            self.assertIsNone(res,'原因,写不写都可以')  #判断返回值是不是None,如果是None就通过了
    unittest.main()  #会运行当前python文件里面的所有测试用例

    在测试完成后,需要获取测试结果,那么此时就需要产生测试报告,下面介绍两种产生测试报告的模块,一个是HTMLTestRunner,另一个是BeautifulReport。

    第一种HTMLTestRunner需要打开文件,而且生成的报告相对于BeautifulReport模块产生报告来说,没那么美观,所以,在工作中一般使用好看的报告模块。

    import unittest
    import HTMLTestRunner
    from BeautifulReport import BeautifulReport as bf
    
    class TestCalc(unittest.TestCase):
        def setUp(self):  #每条用例运行之前自动运行
            print('我是setUp,是啥时候运行的')
        def tearDown(self):  #每个用例运行之后自动运行的,不需要去调用
            print('tearDown是啥时候运行的')
        @classmethod  #类方法
        def setUpClass(self):   #所有用例运行之前运行的
            print('setUpClass是啥时候运行的')
        @classmethod
        def tearDownClass(self):  #所有用例运行完成之后运行的
            print('tearDownClass是啥时候运行的')
        def testh(self):
            '''用例注释'''
            print('testh')
            self.assertEqual(1,1)
    
        def testb(self):   #用例的运行顺序是按照测试用例名称的字母顺序来运行的
            '''用例注释'''
            print('testb')
            self.assertEqual(1,2)
        def testa(self):
            print('testa')
            self.assertEqual(1,1)
        def testc(self):
            print('testc')
            self.assertEqual(1,2)
    
    #测试套件(用例集),也就是存放测试用例的
    #1、先把所有的测试用例都放到用例集里面
    #2、运行这些测试用例
    #3、产生报告
    suite = unittest.TestSuite()  #测试集合
    suite.addTest( unittest.makeSuite(TestCalc)) #把刚才写的用例加进来
    f = open('test.html','wb')
    runner = HTMLTestRunner.HTMLTestRunner(f,title = '双鱼座用例标题',description='这是用例描述')
    runner.run(suite)  #运行用例

    下面介绍好看的测试报告怎么产生的吧。。。。

    import unittest
    import HTMLTestRunner
    from BeautifulReport import BeautifulReport as bf
    
    class TestCalc(unittest.TestCase):
        def testb(self):
            '''用例注释'''
            print('testb')
            self.assertEqual(1,2)
        def testa(self):
            print('testa')
            self.assertEqual(1,1)
        def testc(self):
            print('testc')
            self.assertEqual(1,2)
    suite = unittest.TestSuite()  #测试集合
    suite.addTest( unittest.makeSuite(TestCalc)) #把刚才写的用例加进来
    run = bf(suite)
    run.report(filename='test',description='这是描述信息,必须写')  #log_path是默认在当前目录下,可以不写,如果要生成在指定目录下就可以写上路径
  • 相关阅读:
    智能算法浅介模拟退火,遗传算法,禁忌搜索,神经网络等
    shell 字符串操作(长度,查找,替换)详解
    如何实现两个文件相减的功能(剔除)
    shell数值操作(四则运算,浮点数,科学计数法)awk,bc
    CUDA程序优化的记录
    随机化算法模拟退火
    (转)AspNetPager 样式以及使用(漂亮)
    (转)做项目时,如何做比较美观大方的数据输入窗体
    (转)26个Jquery使用小技巧(jQuery tips, tricks & solutions)
    (转)【译】Asp.net MVC并不仅仅只是Linq to SQL
  • 原文地址:https://www.cnblogs.com/mululu/p/9152122.html
Copyright © 2011-2022 走看看