单元测试框架unittest-2

本文详细介绍了Python单元测试框架unittest中的关键断言方法,包括assertEqual、assertTrue、assertFalse和assertIn的使用,并强调了断言在测试用例中的重要性。同时,文章还讨论了不正确的if应用和异常处理可能导致的测试误判问题,以及如何批量执行测试用例和生成测试报告。
摘要由CSDN通过智能技术生成

6.测试断言

断言就是判断实际测试结果与预期结果是否一致,一致则测试通过,否则失败。因此,在自动化测试中,无断言的测试用例是无效的。这是因为当一个功能自动化已全部实现,在每次版本迭代中执行测试用例时,执行的结果必须是权威的,也就是说自动化测试用例执行结果应该无功能性和逻辑性问题。在自动化测试中最忌讳的就是自动化测试的用例功能测试虽然是通过的,但是被测功能本身却是存在问题的。自动化测试用例经常应用在回归测试中,发现的问题不是特别多,如果测试结果存在功能上的问题,自动化测试就没有太大意义了。
所以每一个测试用例必须要有断言。测试结果只有两种可能,通过or失败。在TestCase类中提供了assert方法来检查和报告失败,常用的方法如下:

Method Checks that New in
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 3.1
assertIsNot(a,b) a is not b 3.1
assertIsNone(x) x is None 3.1
assertIsNotNone(x) x is not None 3.1
assertIn(a,b) a in b 3.1
assertNotIn(a,b) a not in b 3.1
assertassertIsInstance(a,b) isinstance(a,b) 3.2
assertNotIsInstance(a,b) not isinstance(a,b) 3.2

6.1 assertEqual

assertEqual方法用于测试两个值是否相等,如果不相等则测试失败。注意“相等”指的是内容相同且类型相同。例如,两个值虽然内容一致,但一个是bytes类型一个是str类型,则两个值仍为不相等,测试失败。如:

__author__ = 'xiaotufei'

import unittest
from selenium import webdriver

class BaiduTest(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.get('http://www.baidu.com')

    def tearDown(self):
        self.driver.quit()

    def test_baidu_title(self):
        #验证测试百度首页的title
        self.assertEqual(self.driver.title,'百度一下,你就知道'.encode('gbk'))  #转化类型

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

以上代码会执行失败,这是因为self.driver.title获取的内容是“百度一下,你就知道”,它的类型是str类型,而我们将它转化成bytes类型后,内容一致,类型不一致,所以失败:

D:\Python\python.exe D:/Work/Tools/python_workspace/Python_unitest/1/assert6.py
test_baidu_title (__main__.BaiduTest) ... FAIL

======================================================================
FAIL: test_baidu_title (__main__.BaiduTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:/Work/Tools/python_workspace/Python_unitest/1/assert6.py", line 17, in test_baidu_title
    self.assertEqual(self.driver.title,'百度一下,你就知道'.encode('gbk'))
AssertionError: '百度一下,你就知道' != b'\xb0\xd9\xb6\xc8\xd2\xbb\xcf\xc2\xa3\xac\xc4\xe3\xbe\xcd\xd6\xaa\xb5\xc0'

----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值