“动动小手,点点关注呗~”
相爱着的人又是往往的爱闹意见,反而是漠不相干的人能够互相容忍。 ——张爱玲《茉莉香片》
在Web自动化测试领域,断言是至关重要的一环。它就像是测试过程中的“裁判”,用于判断实际测试结果是否符合预期。通过断言,我们能够准确地识别出被测系统是否存在缺陷,确保系统的功能和性能符合要求。本文将深入探讨Python语言在Web自动化测试中断言的应用,以硬核干货的形式,助你掌握断言的核心技术。
一、断言基础概念
断言,简单来说就是对程序中某个条件的判断。在Web自动化测试中,我们通常通过断言来验证页面元素是否存在、元素的属性是否正确、页面的文本内容是否符合预期、页面的跳转是否正常等。如果断言失败,说明实际结果与预期结果不一致,测试用例也就失败了;只有当所有断言都成功时,测试用例才被认为是通过的。
在Python中,内置了assert语句用于进行断言。assert语句的基本语法如下:
其中,condition是一个布尔表达式,是需要判断的条件;message是可选参数,当condition为False时,会输出该消息,用于提示断言失败的原因 。
例如:
在上述代码中,x的值为5,不满足x > 10这个条件,所以断言失败,会输出提示信息"x的值不大于10"。
二、Web自动化测试常用断言场景
在Web自动化测试中,有多种常见的断言场景,我们将结合Selenium库(Python中常用的Web自动化测试库)来进行详细介绍。
(一)验证元素是否存在
在Web页面操作中,常常需要验证某个元素是否成功加载到页面中。可以使用Selenium的find_elements方法结合断言来实现。find_elements方法会返回一个包含所有匹配元素的列表,如果列表为空,说明元素不存在。
在上述代码中,首先使用webdriver.Chrome()启动Chrome浏览器,并打开指定的网页。然后通过find_elements方法查找id为"target_element_id"的元素,将结果存储在elements列表中。最后使用断言判断列表长度是否大于0,如果不大于0,说明元素未找到,断言失败并输出提示信息。
运行结果:如果页面中存在id为"target_element_id"的元素,程序正常执行并关闭浏览器;如果不存在,会抛出AssertionError异常,并显示"元素未找到"的提示信息。
(二)验证元素的属性
除了验证元素是否存在,还经常需要验证元素的属性是否正确,比如元素的href属性(链接地址)、value属性(输入框的值)等。
上述代码中,通过find_element方法获取id为"button_id"的按钮元素,然后使用get_attribute方法获取该按钮的disabled属性值。最后使用断言判断该属性值是否为False,如果不是,则断言失败并输出提示信息。
运行结果:如果按钮的disabled属性为False,程序正常执行;如果为True,则抛出AssertionError异常,并显示"按钮不可用"的提示。
(三)验证页面文本内容
在很多情况下,需要验证页面上显示的文本内容是否符合预期,比如提示信息、标题等。
在这段代码中,先获取id为"text_element_id"的元素,然后定义预期的文本内容expected_text。通过断言比较元素的text属性值与预期文本是否一致,如果不一致,断言失败并输出实际的文本内容。
运行结果:若元素的文本内容与expected_text相同,程序正常运行;若不同,抛出AssertionError异常,并显示实际的文本内容。
(四)验证页面标题
页面标题是一个重要的验证点,它可以帮助我们确认是否正确跳转到了预期的页面。
上述代码通过driver.title获取当前页面的标题,然后与expected_title进行比较,使用断言判断是否一致。如果不一致,断言失败并输出实际的页面标题。
运行结果:当页面标题与expected_title相符时,程序正常执行;不相符时,抛出AssertionError异常,并显示实际标题。
(五)验证页面跳转
在测试涉及页面跳转的功能时,需要验证是否成功跳转到了预期的页面,这可以通过验证页面的URL来实现。
此代码先打开初始页面,然后模拟点击链接操作,等待页面跳转后,通过driver.current_url获取当前页面的URL,并与expected_url进行断言比较。若不一致,断言失败并输出实际的URL。
运行结果:若页面成功跳转到expected_url,程序正常运行;否则,抛出AssertionError异常,并显示实际的URL。
三、高级断言技巧
(一)使用try-except捕获断言异常
在实际测试中,为了让测试脚本更加健壮,避免一个断言失败导致整个测试流程中断,可以使用try-except语句来捕获断言异常,并进行相应的处理。
在上述代码中,将断言语句放在try块中,如果断言失败,会抛出AssertionError异常,except块会捕获该异常,并输出错误信息,同时可以执行一些额外的操作,如保存截图。
运行结果:当断言失败时,会输出错误信息,并保存当前页面截图;断言成功时,程序正常执行。
(二)自定义断言函数
为了提高代码的复用性和可读性,可以将常用的断言逻辑封装成自定义函数。
上述代码定义了一个assert_element_present函数,用于验证元素是否存在。在使用时,只需调用该函数并传入WebDriver对象、定位方式和定位表达式即可。
运行结果:与直接使用断言语句类似,若元素存在,程序正常执行;否则,抛出AssertionError异常并显示相应提示信息。
(三)组合断言
在一些复杂的测试场景中,可能需要同时进行多个断言,以确保系统的多个方面都符合预期。
在这段代码中,依次进行了元素存在性验证、元素文本内容验证和元素属性验证,只有当这三个断言都成功时,整个测试用例才通过。
运行结果:只要有一个断言失败,就会抛出AssertionError异常,并显示相应的错误信息;所有断言成功,程序正常执行。
四、总结
在Web自动化测试中,断言是确保测试准确性和有效性的关键手段。通过合理运用Python中的断言语句,结合Selenium等Web自动化测试库,我们能够对Web页面的各种元素和行为进行全面的验证。从基础的元素存在性、属性和文本内容验证,到高级的异常捕获、自定义断言函数和组合断言,这些技巧和方法可以帮助我们构建出更加健壮、可靠的自动化测试脚本。
在实际项目中,应根据具体的测试需求灵活选择和组合断言方式,同时注意断言的准确性和全面性,以确保能够及时发现Web系统中的缺陷,提高软件质量。希望本文的硬核干货内容能为你在Web自动化测试中断言的应用提供有力的帮助。
“动动小手,点点关注呗~”🫰
领取专属 10元无门槛券
私享最新 技术干货