python:Unittest_断言方法

断言方法

1、执行自动化测试中最重要的就是判断用例是否执行通过。python UnitTest单元测试框架提供了一整套内置的断言方法
⑴如果断言成功,则无影响,代码继续执行,标识该测试用例为成功状态
⑵如果断言失败,则抛出一个AssertionError,并标识该测试用例为失败状态
⑶如果用例执行过程中发生异常,则当做错误来处理

2、在UnitTest框架中定义了以下几类断言方法:
⑴基本的Boolean断言,即:要么True,要么False的验证
⑵简单比较断言,例如比较a,b两个变量的值
⑶复杂断言

3、基本断言应该是最常使用的断言方式:基本的断言方法提供了测试结果是True还是False

4、所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回

5、UnitTest框架内置的断言方式有:

断言方法断言描述备注
assertEqual(arg1, arg2, msg=None)验证arg1=arg2,不等则failarg1 = arg2
assertNotEqual(arg1, arg2, msg=None)验证arg1 != arg2, 相等则failarg1 != arg2
assertTrue(expr, msg=None)验证expr是true,如果为false,则failbool(expr) IS true
assertFalse(expr,msg=None)验证expr是false,如果为true,则failbool(expr) IS false
assertIs(arg1, arg2, msg=None)验证arg1、arg2是同一个对象,不是则failarg1 is arg2
assertIsNot(arg1, arg2, msg=None)验证arg1、arg2不是同一个对象,是则failarg1 not is arg2
assertIsNone(expr, msg=None)验证expr是None,不是则failexpr is one
assertIsNotNone(expr, msg=None)验证expr不是None,是则failexpr not is one
assertIn(arg1, arg2, msg=None)验证arg1是arg2的子串,不是则failarg1 in arg2
assertNotIn(arg1, arg2, msg=None)验证arg1不是arg2的子串,是则failarg1 not in arg2
assertIsInstance(obj, cls, msg=None)验证obj是cls的实例,不是则failIsInstance(obj,cls)
assertNotIsInstance(obj, cls, msg=None)验证obj不是cls的实例,是则failnot IsInstance(obj,cls)
assertGreater (first, second, msg = None)验证first > second,否则fail
assertGreaterEqual (first, second, msg = None)验证first ≥ second,否则fail
assertLess (first, second, msg = None)验证first < second,否则fail
assertLessEqual (first, second, msg = None)验证first ≤ second,否则fail
assertRegexpMatches (text, regexp, msg = None)验证正则表达式regexp搜索==匹配 ==的文本text regexp通常使用re.search()

断言是否相等

1、方法名:assertEqual(arg1, arg2, msg=None)

2、断言第一个参数与第二个参数是否相等,如果不相等则测试失败
⑴msg为可选参数,用于定义测试失败时打印的信息

例1:

import unittest
 
class InputTest(unittest.TestCase):
    def setUp(self):
        #用于测试用例执行前的初始化工作
        number = input("请输入一个整数:")
        self.number = int(number)#这个感觉跟__init__里面的变量差不多
 
    def test_case_1(self):
        self.assertEqual(self.number,10,msg="your input is not 10")
 
    def tearDown(self):
        pass
 
if __name__ == "__main__":
    unittest.main()
 
"""
#输入正确时的输出:
请输入一个整数:10
Ran 1 test in 1.889s
OK
#输入错误时的输出
self.assertEqual(self.number,10,msg="your input is not 10")
Ran 1 test in 1.716s
FAILED (failures=1)
"""

断言是否为True

1、方法名:assertTrue(expr, msg=None)

**例2:**判断一个数是否为质数

# 判断一个数是否为质数(测试代码)
def is_prime(n):
    list = []
    if n <= 1:
        return False
    else:
        for number in range(1, n + 1):
            if n % number == 0:
                list.append(number)
            else:
                pass
        if len(list) == 2:
            return True
        else:
            return False
        
        
# 单元测试代码
import unittest
 
class Is_prime(unittest.TestCase):
    def setUp(self):
        print("测试开始")
 
    def test_is_prime(self):
        self.assertTrue(is_prime(97), msg="Is not prime")
 
    def tearDown(self):
        print("测试结束")
 
 
if __name__ == "__main__":
    unittest.main()
 
"""
测试开始
测试结束
Ran 1 test in 0.001s
OK
"""

断言是否包含

1、方法名:assertIn(arg1, arg2, msg=None)

例3:

import unittest
 
class Is_In(unittest.TestCase):
    def setUp(self):
        print("测试开始")
 
    def test_is_in_case(self):
        a = "hello1"
        b = "hello,world"
        self.assertIn(a,b,msg="a is not in b")
 
    def tearDown(self):
        print("测试结束")
 
if __name__ == "__main__":
    unittest.main()
    
"""
 raise self.failureException(msg)
AssertionError: 'hello1' not found in 'hello,world' : a is not in b
"""

例3_2:

import requests
import unittest
 
class Response(unittest.TestCase):
    def setUp(self):
        print("测试开始")
 
    def tearDown(self):
        print("测试结束")
 
    def test_response_case_1(self):
        method = "get"
        url = "http://www.baidu.com/"
        response =  requests.request(method=method,url=url)
        response.encoding = "utf-8"
        response_txt = response.text
        self.assertIn("百度一下",response_txt,msg="百度主页打开错误")
 
 
if __name__=="__main__":
    unittest.main()

注:
1、测试用例的名字必须以test开头,否则unittest框架会找不到测试用例

2、从上面的例子可以看出,unittest框架不仅可以调用其他函数进行断言测试,也可以直接在测试用例中进行断言验证(实际是一样的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值