python的unittest单元测试框架断言整理

本文详细介绍了Python的unittest单元测试框架中的断言使用,包括assertEqual的使用方法,以及在测试用例中遇到的问题和解决方案。强调了即使测试用例失败,也不会阻止后续用例的执行,同时讨论了setUpClass和tearDownClass的执行特点。

 unittest中通过设置断言可以帮助我们不阻碍测试用例的执行,下面是整理的一些常用的断言,后续根据使用继续更新

一、用assertEqual来举例:

assertEqual(a,b)  如果a!=b,运行之后控制台会报错:

AssertionError: 2 != 3

FAILED (failures=1)

但是程序会运行结束。

二、踩坑总结

如果一次性运行两个或者多个test用例,即使前面的测试用例失败了,也不会影响后面case的运行。

代码中如果是多个测试用例的话,可以在后面添加,如下面代码:

suit.addTest(testFun("test1","test2"))

 假如第一个运行失败,后面会继续运行,failure后面有一个数量,展示的是失败的用例个数。

这个是所有代码:

import unittest
from test.functions import  fun_add,fun_minus,fun_multi,fun_div
class testFun(unittest.TestCase):
    times = 0
    @classmethod
    def setUpClass(cls):
        testFun.times += 1
        print("setUpClass")
    @classmethod
    def tearDownClass(cls):
        testFun.times += 1
        print("tearDownClass")
    def test1(self):
        # self.assertEqual(2,fun_div(3))
        self.assertEqual(2,3)
        # self.failUnlessEqual(2,2)
        # self.assertTrue(1<2)
        # self.failUnless(2 ==2)
        # self.assertNotEquals(2,1)
    def test2(self):
        self.assertEqual(3,5)
if __name__ == '__main__':
    suit = unittest.TestCase()
    suit.addTest(testFun("test1","test2"))
    runner = unittest.TextTestRunner()
    runner.run(suit)



下面是运行的结果图:

 

从运行结果我们可以总结出:

(1)测试用例的运行不管成功与否,都是互不影响的;

(2)不管测试用例有多少,setUpClass() 和 tearDownClass() 都是只运行一次。一般情况下,setUpClass()函数是测试之前的各种准备,比如:连接数据库,准备数据。tearDownClass()函数是测试结束后要进行的操作,比如:断开数据库连接,释放资源等等

 三、常用的断言

assertEqual(a, b)     a == b  

assertNotEqual(a, b)     a != b      

assertTrue(x)     bool(x) is True      

assertFalse(x)     bool(x) is False      

assertIs(a, b)     a is b     2.7

assertIsNot(a, b)     a is not b     2.7

assertIsNone(x)     x is None     2.7

assertIsNotNone(x)     x is not None     2.7

assertIn(a, b)     a in b     2.7

assertNotIn(a, b)     a not in b     2.7

assertIsInstance(a, b)     isinstance(a, b)     2.7

assertNotIsInstance(a, b)     not isinstance(a, b)     2.7

assertAlmostEqual(a, b)     round(a-b, 7) == 0      

assertNotAlmostEqual(a, b)     round(a-b, 7) != 0      

assertGreater(a, b)     a > b     2.7

assertGreaterEqual(a, b)     a >= b     2.7

assertLess(a, b)     a < b     2.7

assertLessEqual(a, b)     a <= b     2.7

assertRegexpMatches(s, re)     regex.search(s)     2.7

assertNotRegexpMatches(s, re)     not regex.search(s)     2.7

assertItemsEqual(a, b)     sorted(a) == sorted(b) and works with unhashable objs     2.7

assertDictContainsSubset(a, b)     all the key/value pairs in a exist in b     2.7

assertMultiLineEqual(a, b)     strings     2.7

assertSequenceEqual(a, b)     sequences     2.7

assertListEqual(a, b)     lists     2.7

assertTupleEqual(a, b)     tuples     2.7

assertSetEqual(a, b)     sets or frozensets     2.7

assertDictEqual(a, b)     dicts     2.7

assertMultiLineEqual(a, b)     strings     2.7

assertSequenceEqual(a, b)     sequences     2.7

assertListEqual(a, b)     lists     2.7

assertTupleEqual(a, b)     tuples     2.7

assertSetEqual(a, b)     sets or frozensets     2.7

assertDictEqual(a, b)     dicts     2.7

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值