zoukankan      html  css  js  c++  java
  • python 17篇 unittest单元测试框架

    单元测试:开发程序的人自己测试自己的代码

    unittest自动化测试框架

    1、单元测试

    import unittest
    
    def add(a,b):
        return a+b
    # 在运行时不要用run unittest in xxx,否则不能生成测试报告
    class TestAdd(unittest.TestCase):
        '''测试add方法'''
        def test_add_normal(self): # 测试用例必须以test开头
            '''正常测试加法用例'''
            result = add(1, 2)
            self.assertEqual(3, result)
        def test_add_error1(self):
            '''测试失败加法用例'''
            result = add(1, 2)
            self.assertEqual(4, result)
        def test_add_error2(self):
            '''测试失败加法用例有msg'''
            result = add(1, 2)
            self.assertEqual(5, result, '正常用例,没有通过')
    
        def test_param_add(self, a, b, c):
            result = add(a, b)
            self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))
    if __name__ == '__main__':
        # 不产生测试用例,执行所有测试用例
        unittest.main()

    2、产生测试报告

    2.1 HTMLTestRunnerNew

    下载HTMLTestRunnerNew.py放到python的环境变量里

    import unittest
    import HTMLTestRunner
    import HTMLTestRunnerNew
    
    def add(a,b):
        return a+b
    # 在运行时不要用run unittest in xxx,否则不能生成测试报告
    class TestAdd(unittest.TestCase):
        '''测试add方法'''
        def test_add_normal(self): # 测试用例必须以test开头
            '''正常测试加法用例'''
            result = add(1, 2)
            self.assertEqual(3, result)
        def test_add_error1(self):
            '''测试失败加法用例'''
            result = add(1, 2)
            self.assertEqual(4, result)
        def test_add_error2(self):
            '''测试失败加法用例有msg'''
            result = add(1, 2)
            self.assertEqual(5, result, '正常用例,没有通过')
        def test_param_add(self, a, b, c):
            result = add(a, b)
            self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))
    if __name__ == '__main__':
        # 不产生测试用例
        # unittest.main()
    
        # 执行某条或几条测试用例
        # test_suit = unittest.TestSuite()
        # test_suit.addTest(TestAdd('test_add_error1'))
        # test_suit.addTest(TestAdd('test_add_normal'))
    
        # 执行某个类中所有测试用例
        test_suit = unittest.makeSuite(TestAdd)
    
        # 查找某个目录下的测试用例
        # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py')
    
        with open('report.html', 'wb') as fw:
            runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fw, title='tmz测试报告', description='tmz接口测试报告', verbosity=2)
            runner.run(test_suit)

    测试报告如何打开查看:

    1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开

    2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开

    执行的测试报告如图所示:

    2.1 HTMLTestRunner

    下载HTMLTestRunner.py放到python的环境变量里

    import unittest
    import HTMLTestRunner
    import HTMLTestRunnerNew
    
    def add(a,b):
        return a+b
    # 在运行时不要用run unittest in xxx,否则不能生成测试报告
    class TestAdd(unittest.TestCase):
        '''测试add方法'''
        def test_add_normal(self): # 测试用例必须以test开头
            '''正常测试加法用例'''
            result = add(1, 2)
            self.assertEqual(3, result)
        def test_add_error1(self):
            '''测试失败加法用例'''
            result = add(1, 2)
            self.assertEqual(4, result)
        def test_add_error2(self):
            '''测试失败加法用例有msg'''
            result = add(1, 2)
            self.assertEqual(5, result, '正常用例,没有通过')
        def test_param_add(self, a, b, c, desc):
            self._testMethodDoc = desc
            result = add(a, b)
            self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))
    if __name__ == '__main__':
        # 不产生测试用例
        # unittest.main()
    
        # 执行某条或几条测试用例
        # test_suit = unittest.TestSuite()
        # test_suit.addTest(TestAdd('test_add_error1'))
        # test_suit.addTest(TestAdd('test_add_normal'))
    
        # 执行某个类中所有测试用例
        test_suit = unittest.makeSuite(TestAdd)
    
        # 查找某个目录下的测试用例
        # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py')
    
        with open('report.html', 'wb') as fw:
            runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title = 'tmz测试报告',description= 'tmz接口测试报告',verbosity=2)
            runner.run(test_suit)

    测试报告如何打开查看:

    1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开

    2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开

    执行的测试报告如图所示:

    3、参数化

    import unittest
    import HTMLTestRunner
    import HTMLTestRunnerNew
    import parameterized
    
    def add(a,b):
        return a+b
    # 在运行时不要用run unittest in xxx,否则不能生成测试报告
    class TestAdd(unittest.TestCase):
            @parameterized.parameterized.expand(
           [
            [1, 2, 3, '参数化说明1'],
            [-1, 2, 1, '参数化说明2'],
            [-1, 2, 2, '参数化说明3']
            ]
        )
        def test_param_add(self, a, b, c, desc):
            self._testMethodDoc = desc
            result = add(a, b)
            self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))
  • 相关阅读:
    脚本执行策略设置
    获取日期与时间戳小笔记
    Intellij IDEA部分简介
    Intellij IDEA脚本参数化、关联、检查点
    LR中的时间戳
    LeetCode 35.Search Insert Position
    LeetCode 34.Search for a Range
    LeetCode 33.Search in Rotated Sorted Array(M)
    LeetCode 81.Search in Rotated Sorted Array II(M)
    LeetCode 278.First Bad Version(E)(P)
  • 原文地址:https://www.cnblogs.com/lhy-qingqiu/p/13870179.html
Copyright © 2011-2022 走看看