python 单元测试--unittest框架

  1. 以下内容包括: 写用例,用例描述,参数化,生成测试报告

  2. unittest框架用例执行顺序: 根据方法名字母排序,a.b.c.d…

  3. 用例前置条件:
    setUpClass(cls):所有用例执行前,会执行一次,可以把连接数据库,打开文件等操作放在这里
    tearDownClass(cls):所有用例执行完之后,会执行一次,可以把关闭数据库等操作放在这里
    setUp(self):每条测试用例运行之前都会先执行它
    tearDown(self):每条测试用例运行之后都会执行它

  4. 单个用例管理

在这里插入图片描述

import unittest
import HTMLTestRunner
import HTMLTestRunnerNew
import parameterized

def add(a,b):
    return a+b

def login():
    return 'token'

class TestAdd(unittest.TestCase):
    '''测试add方法'''#用例描述

    @classmethod
    def setUpClass(cls):#所有用例执行前,会执行一次,可以把连接数据库,打开文件等操作放在这里
        print("setUpClass")

    @classmethod
    def tearDownClass(cls):#所有用例执行完之后,会执行一次,可以把关闭数据库等操作放在这里
        print("tearDownClass")

    def test_add_normal(self):#类里面self的含义
        '''正常测试加法的,by huoziyang'''#用例描述
        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(4,result,'正常整数加法,没有通过')

    @parameterized.parameterized.expand(
        [
            [1,2,3,'参数化1'],
            [-1,2,1,'参数化第二条'],
            [-1,2,2,'参数化第三条'],
        ]
    )
    def test_param_add(self,a,b,c,desc):
        token = login()
        self._testMethodDoc = desc#在测试报告中显示对应的用例描述
        result = add(a,b)
        self.assertEqual(c,result,'预期是%s,实际结果是%s'%(c,result))


if __name__ == '__main__':
    # 不产生测试报告
    # unittest.main()

    ##单个运行某个测试用例
    test_suite = unittest.TestSuite()
    test_suite.addTest(TestAdd('test_add_error2'))
    test_suite.addTest(TestAdd('test_add_error1'))

    ##运行某个类里面所有的测试用例
    # test_suite = unittest.makeSuite(TestAdd)

    #查找某个目录下的测试用例
    # test_suite = unittest.defaultTestLoader.discover('cases','test*.py')

    with open('report.html','wb') as fw:#产生测试报告

        runner = HTMLTestRunner.HTMLTestRunner(stream=fw,title='天马座测试报告',
                                               description='天马座接口测试报告',
                                               verbosity=2
                                               )
    #     runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fw,title='天马座测试报告',
    #                                            description='天马座接口测试报告',
    #                                            verbosity=2
    #                                            )
        runner.run(test_suite)

在这里插入图片描述

测试报告:
在这里插入图片描述

import unittest

class Test(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        #所有用例运行之前,它会执行一次
        print('setUpClass\n')

    @classmethod
    def tearDownClass(cls):
        #所有用例运行完之后,它会执行一次
        print("tearDownClass\n")

    def tearDown(self):
        #每条测试用例运行之后都会执行它
        print("tearDown")

    def setUp(self):
        #每条测试用例运行之前都会先执行它
        print("setUp")


    def testa1(self):
        print('testa1\n')

    def testz(self):
        print("testz\n")

    def testb(self):
        print("testb\n")

    def testa(self):
        print("testa\n")


# class OpenAcc(unittest.TestCase):
#
#
#     def test_open_acc_normal(self):
#         '''四要素开户'''
#         pass
#
#     def test_open_acc_normal1(self):
#         '''两要素'''





if __name__ == "__main__":
    unittest.main()

执行结果:
setUpClass
setUp
testa

tearDown
setUp
testa1

tearDown
setUp
testb

tearDown
setUp
testz

tearDown
tearDownClass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值