zoukankan      html  css  js  c++  java
  • 断言、检查点相关函数方法

     assert*():一些断言方法:在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的

    复制代码
    assertEqual(a, b, [msg='测试失败时打印的信息'])       # a == b    断言a和b是否相等,相等则测试用例通过
    
    assertNotEqual(a,b,[msg='测试失败时打印的信息'])      # a != b    断言a和b是否相等,不相等则测试用例通过
    
    assertTrue(x,[msg='测试失败时打印的信息'])            # x is True  断言x是否True,是True则测试用例通过
    
    assertFalse(x,[msg='测试失败时打印的信息'])           # x is False  断言x是否False,是False则测试用例通过
    
    assertIn(a,b,[msg='测试失败时打印的信息'])            # a in b    断言a是否在b中,在b中则测试用例通过
    
    assertNotIn(a,b,[msg='测试失败时打印的信息'])         # a not in b    断言a是否在b中,不在b中则测试用例通过
    
    assertIsNone(x,[msg='测试失败时打印的信息'])          # x is None 断言x是否None,是None则测试用例通过
    
    assertIsNotNone(x,[msg='测试失败时打印的信息'])       # x not is None 断言x是否None,不是None则测试用例通过
    
    assertIs(a,b,[msg='测试失败时打印的信息'])            # a is b    断言a是否是b,是则测试用例通过
    
    assertNotIs(a,b,[msg='测试失败时打印的信息'])         # a not is b    断言a是否是b,不是则测试用例通过
    
    assertIsInstance(a,b,[msg='测试失败时打印的信息'])      # 断言a是是b的一个实例,是则测试用例通过
    
    assertNotIsInstance(a,b,[msg='测试失败时打印的信息'])   # 断言a是是b的一个实例,不是则测试用例通过
    复制代码

     示例:

    复制代码
    #导入unittest模块
    import unittest
    
    class Login(unittest.TestCase):
        def setUp(self):
            u'''没有前置条件可以写pass'''
            print("开始执行")
            # pass
        def test01(self): #测试用例必须以test开头
            print("执行测试用例01")
            result = '1'
            self.assertTrue(result) #断言result是不是True
        def test02(self):#判断两个参数是否相等
            print("执行测试用例02")
            result1 = '1'
            result2 = '1'
            self.assertEqual(result1,result2,msg="%s不等于%s"%(result1,result2))
        def test03(self):#判断两个参数是否不相等
            print("执行测试用例03")
            result1 = '1'
            result2 = '2'
            self.assertNotEqual(result1,result2,msg="%s等于%s"%(result1,result2))
        def test04(self):#判断一个参数是否包含另一个参数
            print("执行测试用例04")
            result1 = '1'
            result2 = '21'
            self.assertIn(result1,result2,msg="%s不包含%s"%(result2,result1))
        def test05(self):#判断一个参数是否不包含另一个参数
            print("执行测试用例05")
            result1 = '1'
            result2 = '2'
            self.assertNotIn(result1,result2,msg="%s包含%s"%(result2,result1))
        def test06(self): #测试一个参数是否为真
            print("执行测试用例06")
            result = '1'
            self.assertTrue(result,msg="%s不是True"%result)
        def test07(self):#判断一个参数是否不包含另一个参数
            print("执行测试用例07")
            result = ''
            self.assertFalse(result,msg="%s不是False"%(result))
        def test08(self):#判断一个参数是否不包含另一个参数
            print("执行测试用例08")
            result = None
            self.assertIsNone(result,msg="%s不是None"%(result))
        def test09(self):#判断一个参数是否不包含另一个参数
            print("执行测试用例09")
            result = '123'
            self.assertIsNotNone(result,msg="%s是None"%(result))
        def tearDown(self):
            u'''没有后置条件可以写pass'''
            print("结束...")
            # pass
    if __name__ == '__main__':
        unittest.main()
    复制代码

    检查点

    assertEqual、assertNotEqual

    assertEqual(actv,expv,"如果断言失败提示信息")

    self.assertEqual(self.driver.find_element_by_id('com.boohee.secret:id/tv_title').text,u'超模25','切到超模25tab失败')

    assertTrue、assertFalse

    assertTrue:判断bool值为True,则pass 

    assertFalse:判断bool值为False,则Pass 

    self.assertTrue(表达式或值,“失败提示信息”)

    self.assertTrue(self.find_element_by_id('com.boohee.secret:id/btn_login').is_enabled(),'未输密码登录按钮为不可点状态,Fail')

    assertIsNotNone、assertIsNone

    assertIsNone:不存在,则pass 

    assertIsNotNone:存在,则pass 

    self.assertIsNotNone(self.driver.find_element_by_id('com.boohee.secret:id/tv_edit_profile'),'无编辑资料按钮,登录失败,Fail')

    断言assertion:

    验证应用程序的状态是否同所期望的一致。

    常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选。

    selenium 提供了三种模式的断言:assert 、verify、waitfor

      Assert 失败时,该测试将终止。
      Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上
      Waitfor 用于等待某些条件变为真。可用于 AJAX 应用程序的测试。

      如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超过时间。一般跟setTimeout时间一起使用

    断言常用的有:
    assertLocation(判断当前是在正确的页面)、

    assertTitle(检查当前页面的 title 是否正确)、
    assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)、
    assertSelected(检查 select 的下拉菜单中选中是否正确)、
    assertSelectedOptions(检查下拉菜单中的选项的是否正确)、
    assertText(检查指定元素的文本)、
    assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、
    assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、
    assertAttribute(检查当前指定元素的属性的值)、
    assertTable(检查 table 里的某个 cell 中的值)、
    assertEditable(检查指定的 input 是否可以编辑)、

    assertNotEditable(检查指定的 input 是否不可以编辑)、
    assertAlert(检查是否有产生带指定 message 的 alert 对话框)、
    verifyTitle (检查预期的页面标题)
    verifyTextPresent (验证预期的文本是否在页面上的某个位置)
    verifyElementPresent(验证预期的UI元素,它的HTML标签的定义,是否在当前网页上)
    verifyText(核实预期的文本和相应的HTML标签是否都存在于页面上)
    verifyTable(验证表的预期内容)
    waitForPageToLoad(暂停执行,直到预期的新的页面加载)
    waitForElementPresent (等待检验某元素的存在。为真时,则执行。)

    验证和断言的区别:验证失败后不影响脚本的继续执行,断言失败后将停止脚本的执行。

    异常类型
    AssertionError:assert语句失败

    AttributeError:试图访问一个对象没有的属性

    IOError:输入输出异常,基本是无法打开文件

    ImportError:无法引入模块或者包,基本是路径问题

    IndentationError:语法错误,代码没有正确的对齐

    IndexError:下标索引超出序列边界

    KeyError:试图访问字典里不存在的键

    KeyboadrInterrupt:Ctrl+c被按下

    NameError:使用一个还未赋值对象的变量

    SyntaxError:python代码逻辑语法错误,不能执行

    TypeError:传入的对象类型与要求不符

    UnboundLocalError:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问

    ValueError:传入一个不被期望的值,即使类型正确

    例子如下python2.7+selenium3.11.0:

    # coding=utf-8
    import time
    from selenium import webdriver

    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.get('https://www.baidu.com')

    try:
    assert u"百度一下" in driver.title
    print ('Assertion test pass')
    except Exception as e:
    print ('Assertion test fail', format(e))

    print driver.title
    截图如下:


  • 相关阅读:
    Security基础(二):SELinux安全防护、加密与解密应用、扫描与抓包分析
    Security基础(一):Linux基本防护措施、使用sudo分配管理权限、提高SSH服务安全
    勤奋之致,功成之始
    Database基础(七):部署集群基础环境、MySQL-MMM架构部署、MySQL-MMM架构使用
    Database基础(六):实现MySQL读写分离、MySQL性能调优
    Database基础(五):使用binlog日志、XtraBackup备份工具、MySQL AB复制
    Database基础(四):密码恢复及设置、 用户授权及撤销、数据备份与恢复、MySQL管理工具
    Database基础(三):SQL数据导入/导出、 操作表记录、查询及匹配条件
    vue-打包上线
    vue报错-Object(...) is not a function
  • 原文地址:https://www.cnblogs.com/lp475177107/p/11308917.html
Copyright © 2011-2022 走看看