清秋2018

导航

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))

 

posted on 2020-10-24 17:30  清秋2018  阅读(92)  评论(0编辑  收藏  举报