Unittest单元测试框架之旅1(测试套件,断言)

19 篇文章 0 订阅
2 篇文章 0 订阅

新建一个calculator.py

class Count(object):

    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

一个简单的类,有构造方法,运行一个加法运算

再建立一个test.py

import calculator

class TestCount():

    def test_add(self):
        try:
            j = calculator.Count(2,3)
            add = j.add()
            #这个意思就是断言 若果不等于 抛出自定义异常信息
            assert(add == 5),'Integer addition result error!'

        except AssertionError as msg:
            print(msg)
        else:
            print('Test pass')


mytest = TestCount()
mytest.test_add()

运行成功

运行失败

 

利用unittest运行

from calculator import Count
import unittest

class TestCount(unittest.TestCase):
    #起始方法
    def setUp(self):
        print('test start')

    def test_add(self):
        j = Count(2,3)
        self.assertEqual(j.add(),5)
    #结束方法
    def tearDown(self):
        print('test end')

#if __name__ == '__main__':
#设置这个要用unittest的main来执行
#目前还没有理解清楚,个人理解
#每一个py文件都可以单独执行,也就是说每一个py文件里都有隐藏的__mian__方法
if __name__ == '__main__':
    unittest.main()

 UnitTest的四个重要概念

1.Test Case

一个TestCase就是一个测试用例

2.Test Suite

一个功能的验证往往需要多个测试用例,这个就是测试套件

3.Test Runner

运行测试用例和套件的,并返回测试结果

4.Test Fixture

对一个测试用例环境的搭建与销毁,通过覆盖setUp盒tearDown实现

tearDown的过程很重要,要为下一个testcase留下一个干净的环境

--------利用测试套件,再放入Runner运行-----

暂时失败

#from calculator import Count
from com.sola.unittest import calculator
import unittest

class TestCount(unittest.TestCase):
    #起始方法
    def setUp(self):
        print('test start')

    def test_add(self):
        j = calculator.Count(2,3)
        self.assertEqual(j.add(),5)

    def test_add2(self):
        j = calculator.Count(8,6)
        self.assertEqual(j.add(),14)
    #结束方法
    def tearDown(self):
        print('test end')

if __name__ == '__main__':
    #构造测试集
    suite = unittest.TestSuite()
    #把类和方法放入运行
    suite.addTest(TestCount("test_add1"))
    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

改善下成功了,这里是弄得两个py 为了显示方便弄一个

import unittest

class TestOne(unittest.TestCase):

    def setUp(self):
        print('开始准测试了')

    def funcOne(self):
        print('我是用例1')

    def funcTwo(self):
        print('我是用例2')

    def tearDown(self):
        print('结束测试了')
#分割线

import unittest
from MyTest import TestOne

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestOne('funcOne'))
    #suite.addTest(TestOne('funcTwo'))

    runner = unittest.TextTestRunner()

    runner.run(suite)

 

还可以给套件传入数组

suite = unittest.TestSuite()

    case = [TestCount("test_add1"),TestCount("test_add2")]

    suite.addTest(case)

————————————————————————————————————————————————————————

断言

断言A数与B数是否相当,如果不相当设定异常msg

import unittest

class Asstest(unittest.TestCase):

    def setUp(self):
        #运行后输入一个参数
        number = input("Enter a number")
        self.number = int(number)

    def test_case(self):
        #断言是否10,不是抛出断言异常,并抛出设定好的断言信息
        self.assertEqual(self.number,10,msg='Your input is not 10')

    def tearDown(self):
        pass

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

assertIn的用法(判断是否包含)

import unittest

class testtt(unittest.TestCase):

    def testOne(self):
        self.assertIn('王','王八蛋',msg='瞅瞅')

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

assertIs是否为同一对象

import unittest

class testtt(unittest.TestCase):

    def testOne(self):

        numA = 5

        numB = 5

        self.assertIs(numA,numB,'是否为同一对象')

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

还有asserIsNone对象是否为空,assertIsInstance判断对象是否为一个实例等

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值