zoukankan      html  css  js  c++  java
  • python之重学unittest框架

    重学unittest框架。

    自动化步骤:

    1:写用例 TestCaase,所有用例已test_开头,一个用例就是一个函数,不能传参,只有self关键字。

    2:写断言 Assert ,对比实际结果和期望结果

    3:执行用例 1:TestSuite 存储用例    2:TestLoader 找用例,加载用例,存储到TestSuite里面

    4:出测试报告 HTMLTestRunner

    5:运行时鼠标不能乱放,鼠标最好放末尾和开头,防止只运行一条用例。

    usage:

    测试目标:测试加法和乘法 :

    class TestMethod():
        # 编写用例
        #:一个用例就是一个函数,不能传参,只有self关键字
        #:所有用例已test_开头
        def __init__(self,a,b):
            self.a = a
            self.b = b
    
        def add(self):
            '''加法'''
            return self.a+self.b
    
        def multi(self):
            '''乘法'''
            return self.a*self.b

    测试用例和断言:

    from TaceCase.math_method import TestMethod     # todo 测试的目标类
    import unittest
    
    
    #1: 写用例 TestCaase
    #2: 执行用例  1:TestSuite 存储用例  2:TestLoader 找用例,加载用例,存储到TestSuite里面
    #3:对比实际结果和期望结果   断言Assert
    #4:测试报告   htmltestrunner
    
    
    class TestMathMethod(unittest.TestCase):
        '''测试数学方法'''
    
        # 编写用例
        # :一个用例就是一个函数,不能传参,只有self关键字
        # :所有用例已test_开头
        # :运行时光标不能乱放,鼠标最好放末尾和开头
        def setUp(self):
            '''用来做准备工作'''
            print('开始执行用例')
    
        def test_add_two_positive(self):
            '''测试2个正数相加'''
            result = TestMethod(3,3).add()
            print("3+3的结果值是:",result)
            # todo 断言,期望值和实际值的比对,一致就通过,不一致就失败
            self.assertEqual(6,result,'3+3算错了')
    
        def test_add_two_zero(self):
            '''测试2个0相加'''
            result = TestMethod(0,0).add()
            print("0+0的结果值是:",result)
            self.assertEqual(0,result)
    
        def test_add_two_negative(self):
            '''测试2个负数相加'''
            result = TestMethod(-3,-3).add()
            print("-3+-3的结果值是:",result)
            self.assertEqual(-6,result)
    
        def tearDown(self):
            '''用来做数据清理'''
            print('用例执行完毕')
    
    if __name__ == '__main__':
        '''unittest的执行顺序为ascii编码,a-z的顺序执行'''
        unittest.main()

    执行用例:

    from TaceCase.unit_testing import TestMathMethod
    import unittest
    import HTMLTestRunner
    
    
    
    suite = unittest.TestSuite()  # todo 实例化对象,存储用例
    
    # 方法1
    # 执行单条用例,传用例(函数)名称
    #suite.addTest(TestMathMethod.test_add_two_positive)
    
    # 方法2 TestLoader创建一个加载器
    loader = unittest.TestLoader()
    # TODO 传执行的类名
    suite.addTest(loader.loadTestsFromTestCase(TestMathMethod))
    
    # 方法3
    from TaceCase import unit_testing
    # TODO 传执行的.py模块名
    #suite.addTest(loader.loadTestsFromModule(unit_testing))
    
    # 执行
    runner = unittest.TextTestRunner()
    runner.run(suite)

    测试报告:

    # 出html报告
    with open('../report.html','wb') as f:
         runner = HTMLTestRunner.HTMLTestRunner(stream=f,verbosity=1, title="测试报告")
         runner.run(suite)
  • 相关阅读:
    老男孩Python全栈开发(92天全)视频教程 自学笔记08
    datagrid---columns列
    easyui---datagrid
    easyui---layout实战
    easyui---layout布局
    easyui---表单验证
    easyui---form表单_validatebox验证框
    easyui---easyloader.js
    easyui---基础组件:dialog
    easyui---基础组件:window
  • 原文地址:https://www.cnblogs.com/xiamaojjie/p/11785679.html
Copyright © 2011-2022 走看看