python单元测试断言,Python的Unitest单元测试框架之断言assert

自动化脚本最重要的是断言,正确设置断言可以有效判断测试用例执行结果。python unitest单元测试框架提供了一整套内置的断言方法。

思路:

每个testcase增加unitest的断言,

1.断言如果失败,则抛出一个AssertionError,测试用例为fail。(如果异常,则当做错误来处理)

2.如果断言成功,则testcase为pass状态

以下是常用的断言方法,msg是断言失败输出的提示信息,可以为空。

Boolean型断言:True or False

1:assertEqual(arg1, arg2, msg=None) ,验证arg1=arg2,不等则fail

2:assertNotEqual(arg1, arg2, msg=None),验证arg1 != arg2, 相等则fail

3:assertTrue(expr, msg=None),验证expr是true,如果为false,则fail

4:assertFalse(expr,msg=None),验证expr是false,如果为true,则fail

5:assertIs(arg1, arg2, msg=None),验证arg1、arg2是同一个对象,不是则fail

6:assertIsNot(arg1, arg2, msg=None),验证arg1、arg2不是同一个对象,是则fail

7:assertIsNone(expr, msg=None),验证expr是None,不是则fail

8:assertIsNotNone(expr, msg=None),验证expr不是None,是则fail

9:assertIn(arg1, arg2, msg=None),验证arg1是arg2的子串,不是则fail

10:assertNotIn(arg1, arg2, msg=None),验证arg1不是arg2的子串,是则fail

11:assertIsInstance(obj, cls, msg=None),验证obj是cls的实例,不是则fail

12:assertNotIsInstance(obj, cls, msg=None),验证obj不是cls的实例,是则fail

比较两个变量的断言

13:assertAlmostEqual (first, second, places = 7, msg = None, delta = None)

验证first约等于second。palces: 指定精确到小数点后多少位,默认为7

14:assertNotAlmostEqual (first, second, places, msg, delta),验证first不约等于second。palces: 指定精确到小数点后多少位,默认为7

==注: 在上述的两个函数中,如果delta指定了值,则first和second之间的差值必须≤delta==

15:assertGreater (first, second, msg = None),验证first > second,否则fail

16:assertGreaterEqual (first, second, msg = None),验证first ≥ second,否则fail

17:assertLess (first, second, msg = None),验证first < second,否则fail

18:assertLessEqual (first, second, msg = None),验证first ≤ second,否则fail

19:assertRegexpMatches (text, regexp, msg = None),验证正则表达式regexp搜索==匹配==的文本text。regexp:通常使用re.search()

20:assertNotRegexpMatches (text, regexp, msg = None),验证正则表达式regexp搜索==不匹配==的文本text。regexp:通常使用re.search()

可以处理元组、列表、字典等更复杂的数据类型的断言

21:assertEqual(arg1, arg2, msg=None),验证arg1=arg2,不等则fail

22:assertNotEqual(arg1, arg2, msg=None),验证arg1 != arg2, 相等则fail

23:assertTrue(expr, msg=None),验证expr是true,如果为false,则fail

24:assertFalse(expr,msg=None),验证expr是false,如果为true,则fail

25:assertIs(arg1, arg2, msg=None),验证arg1、arg2是同一个对象,不是则fail

26:assertIsNot(arg1, arg2, msg=None),验证arg1、arg2不是同一个对象,是则fail

27:assertIsNone(expr, msg=None),验证expr是None,不是则fail

28:assertIsNotNone(expr, msg=None),验证expr不是None,是则fail

29:assertIn(arg1, arg2, msg=None),验证arg1是arg2的子串,不是则fail

30:assertNotIn(arg1, arg2, msg=None),验证arg1不是arg2的子串,是则fail

31:assertIsInstance(obj, cls, msg=None),验证obj是cls的实例,不是则fail

32:assertNotIsInstance(obj, cls, msg=None),验证obj不是cls的实例,是则fail

以下是示例代码:

# coding=utf-8

import time

import unittest

from util import HTMLTestRunner

class Case(unittest.TestCase):

@classmethod # 所有case执行之前准备环境只执行一次,所有case结束后只执行一次tearDownClass

def setUpClass(cls):

print('setupclass')

@classmethod

def tearDownClass(cls):

print('teardownclass')

def test_01(self):

print("test01-assertEqual:验证arg1=arg2,不等则fail")

self.assertEqual('a', 'b', 'mesg')

def test_02(self):

print('test02-assertNotEqual:验证arg1 != arg2, 相等则fai')

self.assertNotEqual('a', 'b','mesg')

def test_03(self):

print('test03-assertTrue:验证expr是true,如果为false,则fail')

expr=True

self.assertTrue(expr,'mesg')

def test_04(self):

print('test04-assertIs:验证arg1、arg2是同一个对象,不是则fail')

arg1=2

arg2=2

self.assertIs(arg1,arg2,'mesg')

def test_05(self):

print('test05-assertIn:验证arg1是arg2的子串,不是则fail')

arg1='ab'

arg2='abcdefg'

self.assertIn(arg1,arg2,'mesg')

def test_06(self):

print('test06-assertIn:验证arg1是arg2的子串,不是则fail')

arg1='ab'

self.assertIsInstance(23,str)

if __name__=='__main__':

suite=unittest.TestSuite()

t=(Case('test_01'),Case('test_02'),Case('test_03'),Case('test_04'),Case('test_05'),Case('test_06'))

suite.addTests(t)

unittest.TestSuite().run(suite)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值