Python3 assert断言用法及Selenium示例代码行含义解析
Python3 assert 断言基础规则
assert是Python内置的调试校验语句,基础语法非常简单:assert 待判断表达式 [, 断言失败时的提示文本]
运行逻辑没有额外封装:
- 执行到assert语句时,先计算后面表达式的布尔值
- 表达式返回True:直接跳过,继续运行后续代码
- 表达式返回False:立刻抛出
AssertionError异常,中断当前执行流程,如果写了可选的提示文本,会把文本附在异常信息里方便排查
*注意:Python以优化模式(启动时加-O参数)运行时,全局所有assert语句都会被直接移除不执行,所以assert只适合调试、自动化测试场景做校验,不要用来写生产环境的核心业务判断。
Selenium示例代码中的assert作用解析
你问的assert "Python" in driver.title是自动化测试里最常见的页面前置校验点,逐部分拆解逻辑:
driver.title是Selenium WebDriver的内置属性,返回当前浏览器打开页面的标题(就是浏览器标签栏显示的、对应HTML里<title>标签的文本内容)"Python" in driver.title是普通的Python字符串成员判断,逻辑是检查"Python"这个字符串是不是存在于页面标题文本里- 加上assert之后的实际作用:
- 如果页面正常加载到Python官网,官网标题包含"Python",判断成立,代码继续往下执行找搜索框、输入搜索词的流程
- 如果出现网络超时、域名解析错误、页面跳转到其他地址等异常情况,页面标题里没有"Python",断言会立刻失败抛错,程序直接停在这一步,不会继续在错误的页面上执行后续的元素查找、输入操作,避免出现更难排查的元素找不到之类的报错。
示例里后面的assert "No results found." not in driver.page_source逻辑完全一致,是搜索操作后的结果校验:driver.page_source会返回当前页面的完整HTML源码,这行判断源码里不存在"无搜索结果"的提示,也就是确认搜索pycon的操作返回了有效结果,如果出现无结果的提示就断言失败,说明搜索功能不符合预期。
给你个脱离Selenium的最小运行示例,直观感受assert的执行效果:
# 校验通过场景 page_title = "Welcome to Python.org" assert "Python" in page_title print("页面校验通过,继续执行后续逻辑") # 这行会正常打印 # 校验失败场景 page_title = "403 Forbidden" assert "Python" in page_title # 执行到上一行直接抛出AssertionError,下面的打印永远不会执行 print("这行代码不会被运行")
内容的提问来源于stack exchange,提问作者chino
相关产品推荐
相关产品推荐

