Python Selenium实现断言的3种方法解析
本文详细解析Python Selenium自动化测试中三种常用的断言实现方式。通过if...else判断、try...except异常捕获以及基于unittest框架的assert系列方法,帮助开发者灵活处理页面元素验证。文章结合具体代码示例,对比各方法的适用场景与优缺点,为Web自动化测试提供实用的断言策略参考。
基于if...else判断的断言实现
第一种断言方式是利用if...else语句进行逻辑判断。在自动化测试脚本中,可以通过获取页面元素的状态或文本内容,与预期结果进行比对。若条件满足则继续执行,否则通过raise AssertionError抛出异常,终止当前测试流程。这种方式直观易懂,适合简单的逻辑验证场景。
from time import *
from selenium import webdriver
def login(user="admin",pwd="123456"):
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://192.168.1.110:8080/cms")
driver.maximize_window()
sleep(1)
driver.find_element_by_id("userAccount").send_keys(user)
sleep(1)
driver.find_element_by_id("loginPwd").send_keys(pwd)
sleep(1)
driver.find_element_by_id("loginBtn").click() #登录
sleep(1)
users = driver.find_element_by_class_name("c-white").text #获取用户名
sleep(1)
driver.quit()
if users[6:] == user:
pass
else:
raise AssertionError
if __name__ == '__main__':
login()
from time import *
from selenium import webdriver
def login(user="admin",pwd="123456"):
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://192.168.1.110:8080/cms")
driver.maximize_window()
sleep(1)
driver.find_element_by_id("userAccount").send_keys(user)
sleep(1)
driver.find_element_by_id("loginPwd").send_keys(pwd)
sleep(1)
driver.find_element_by_id("loginBtn").click() #登录
sleep(1)
users = driver.find_element_by_class_name("c-white").text #获取用户名
sleep(1)
driver.quit()
if users[6:7] == user:
pass
else:
assert False
if __name__ == '__main__':
login()
基于try...except异常的断言实现
第二种方式采用try...except结构进行断言。在执行可能抛出异常的代码块时,使用try包裹核心操作,并在except中捕获异常后手动抛出AssertionError。这种方法适用于预期操作可能失败且需要明确区分错误类型的场景,通过异常捕获机制确保测试的健壮性。
from time import *
from selenium import webdriver
def fatie(title,body):
dr = login()
sleep(2)
dr.find_element_by_partial_link_text("版块").click()
sleep(1)
dr.find_element_by_id("subject").send_keys(title)
sleep(1)
dr.find_element_by_id("fastpostmessage").send_keys(body)
sleep(2)
dr.find_element_by_name("topicsubmit").click()
sleep(2)
try:
dr.find_element_by_id("thread_subject")
except:
raise AssertionError
else:
pass
sleep(3)
dr.quit()
基于unittest框架的assert断言方法
第三种方式是基于unittest框架的assert断言方法。unittest提供了丰富的断言工具,如assertIn、assertNotIn、assertEqual和assertNotEqual等,用于验证元素是否存在、是否相等或包含特定子串。这些方法不仅语法简洁,还能在测试失败时提供详细的错误信息,便于问题定位。
- assertIn(arg1, arg2, msg=None)用于验证arg1是否包含在arg2中,若arg1不是arg2的子串,则测试失败。该方法常用于检查页面文本或属性中是否包含预期的关键词或字符串片段。
- assertNotIn(arg1, arg2, msg=None)用于验证arg1是否不包含在arg2中,若arg1是arg2的子串,则测试失败。此方法适用于需要排除特定内容或确认某元素不存在于预期文本中的场景。
- assertEqual(arg1, arg2, msg=None)用于验证arg1与arg2是否相等,若两者不相等,则测试失败。这是最常用的断言方法之一,适用于数值、字符串或对象状态的精确比对。
- assertNotEqual(arg1, arg2, msg=None)用于验证arg1与arg2是否不相等,若两者相等,则测试失败。该方法适用于需要确认两个值存在差异的场景,如验证错误提示或动态变化的数据。
import time
import unittest
class Test(unittest.TestCase):
def test01(self):
self.assertEqual(2,2,msg="test01 error!")
def test02(self):
self.assertNotEqual(1,2,msg="test02 error!")
def test03(self):
self.assertIn("fang","xinfangshuo",msg="test03 error!")
def test04(self):
self.assertNotIn("xing","xinfangshuo",msg="test04 error!")
def tearDown(self):
time.sleep(1)
if __name__ == '__main__':
unittest.main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













