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)

猜你喜欢

转载自www.cnblogs.com/xiamaojjie/p/11785679.html