• Selenium3 + Python3自动化测试系列五——常用断言Assertion


    断言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:传入一个不被期望的值,即使类型正确

     我们来看举个栗子,python3 +selenium3,验证标题是否包含‘百度一我’:

    from selenium.webdriver import Chrome
    import time
    driver = Chrome("C:Program Files (x86)GoogleChromeApplicationchromedriver.exe")
    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)
    time.sleep(5)
    driver.quit()

    结果如下:

    三、UnitTest框架中的断言

    在unittest单元测试框架中,TestCase类提供了一些方法来检查并报告故障

    assertEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,相等则测试用例通过。

    assertNotEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,不相等则测试用例通过。

    assertTrue(x,[msg='测试失败时打印的信息']): 断言x是否True,是True则测试用例通过。

    assertFalse(x,[msg='测试失败时打印的信息']): 断言x是否False,是False则测试用例通过。

    assertIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,是则测试用例通过。

    assertNotIs(a,b,[msg='测试失败时打印的信息']): 断言a是否是b,不是则测试用例通过。

    assertIsNone(x,[msg='测试失败时打印的信息']): 断言x是否None,是None则测试用例通过。

    assertIsNotNone(x,[msg='测试失败时打印的信息']): 断言x是否None,不是None则测试用例通过。

    assertIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,在b中则测试用例通过。

    assertNotIn(a,b,[msg='测试失败时打印的信息']): 断言a是否在b中,不在b中则测试用例通过。

    assertIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,是则测试用例通过。

    assertNotIsInstance(a,b,[msg='测试失败时打印的信息']): 断言a是是b的一个实例,不是则测试用例通过。

    我们来小试一下牛刀:

    class assertEqual1(unittest.TestCase):
        def setUp(self):
            number = input ("Enter a number:")
            self.number = int (number)
    
        def test_case(self):
            self.assertEqual (self.number, 10, msg='Your input is not 10!')
    
        def tearDown(self):
            pass
    
    if __name__ == '__main__':
        unittest.main ()

       这里我先简单介绍一下常用断言,具体的如何使用应具体应用而定。

  • 相关阅读:
    位操作符:&位与、|位或、^异或、~求反、<<左移位、>>带符号右移位、>>>无符号右移位
    【leetcode】496. Next Greater Element I
    after_create and after_commit
    rails跳过回调的方法
    ruby执行周期性任务
    Nokogiri爬虫教程
    用ruby调用执行shell命令
    Redis使用详细教程
    rails中params[:id]与params["id"]分析
    mysql备份与恢复数据
  • 原文地址:https://www.cnblogs.com/wuweiblogs/p/10610555.html
Copyright © 2020-2023  润新知