zoukankan      html  css  js  c++  java
  • Appium+python的单元测试框架unittest(4)——断言(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10051576.html)

    在我们编写的测试用例中,测试步骤和预期结果是必不可少的。当我们运行测试用例时,得到一个运行结果,需要和预期结果对比从而判断测试是否通过。

    一、断言方法

    断言:将实际结果和预期结果进行比较,从而判定测试用例执行是否通过。

    单元测试中断言是不可或缺的,单元测试框架一般会提供丰富的断言方法。unittest框架的TestCase类提供断言的方法可以用于测试结果的判断:

    实际应用:

     
        def test_add(self):
            self.driver.find_element_by_name("1").click()
            self.driver.find_element_by_name("5").click()
            self.driver.find_element_by_name("+").click()
            self.driver.find_element_by_name("8").click()
            self.driver.find_element_by_android_uiautomator("new UiSelector().text("=")").click()
            result = self.driver.find_element_by_class_name('android.widget.EditText').text  # 从应用中获取计算结果
            self.assertEqual(int(result), 23, 'The result is wrong')   # 断言,判断计算结果是否正确
            self.driver.find_element_by_name("CLR").click()
     

    来自官网:

    All the assert methods (except assertRaises()assertRaisesRegexp()) accept a msg argument that, if specified, is used as the error message on failure.

    除了assertRaises()assertRaisesRegexp()以外,所有的断言方法都接收一个msg作为失败时的信息输出。可以自定义该msg参数,若无自定义,则默认为None

    • 断言特性:当有测试用例断言验证失败时,将会退出程序,后面的程序不再执行。

    二、断言异常

    我们的用例中可能会有预期结果为抛出异常,assertRaises()方法可以断言异常

     
    import unittest
    
    class DivZeroTestCase(unittest.TestCase):
    
        def test_should_raise_exception(self):
            with self.assertRaises(ZeroDivisionError):
                1 / 0
    
    if __name__ == '__main__':
        unittest.main()
     

    运行结果通过

    $ python test_exception.py
    .
    ----------------------------------------------------------------------
    Ran 1 test in 0.000s
    
    OK
    • 上面的例子断言了当0作为除数的时候会抛出ZeroDivisionError
    • 断言异常是有套路的,使用with语句加assertRaises,assertRaises的参数中传入预期的异常(这些异常可能需要先import进来),在with的子句中放上会抛出异常的语句或表达式
    软件测试
  • 相关阅读:
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 26 删除排序数组中的重复项
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 25 K个一组翻转链表
    Java实现 LeetCode 24 两两交换链表中的节点
    Java实现 LeetCode 24 两两交换链表中的节点
    Java实现 LeetCode 24 两两交换链表中的节点
  • 原文地址:https://www.cnblogs.com/dorlin/p/10381790.html
Copyright © 2011-2022 走看看