分析业务流程什么时候适合断言?

什么样的print或者异常抛出适合做断言?

分支语句里面的。有判断,但没验证。

关键问题:assert 要断什么?

assert 的本质是:"我预期 X 应该是 Y,如果不是,就说明有 bug。"

所以你得先问自己:这个动作之后,预期结果是什么?

print 该变成什么?

print 有两种命运:

  1. 变成日志(logging),不是 assert
python 复制代码
print("执行_order_ticket") 
改为 
logger.info("执行_order_ticket")

它的作用是记录流程,不是判断对错。 所以变成日志,而不是 assert。

  1. 变成断言(如果它背后有验证逻辑)
python 复制代码
print(uname + ",请及时付款")
改成
assert "TOrder" in self.driver.current_url, "下单后未跳转到订单页"
python 复制代码
assert 条件, "失败时的提示信息"

"我预期下单后,网址里应该出现 TOrder。如果没有,就说明出 bug 了,报错告诉我。"

条件是当前页面是TOrder页面。代码含义是断言当前页面里有没有 TOrder,如果条件不满足(失败,没有跳转到TOrder_url),则提示下单后未跳转到订单页。

毕竟通过的话什么都不需要提示。

所以如果要把我的交互脚本的print改为断言的思维是判断:

"这行是在做动作,还是在验证结果?"

复制代码
做动作 → 保留,或改成日志

验证结果 → 改成 assert

功能测试和自动化测试的区别在于此

所以我们的主观判断可以通过assert判断替代。

自动化测试的本质就是:

复制代码
把功能测试用例里的"预期结果",翻译成一条条 assert。
相关推荐
import_random1 小时前
[python]IDE可以自动检测venv工具创建的虚拟环境.venv吗
python
楠风测开2 小时前
Python学习路线:搭好环境,跑通第一个脚本
python
code2cat2 小时前
【随笔】RAG重排怎样挑证据:先扩大候选,再把相关片段排到前面
人工智能·python·大语言模型·rag
云和数据.ChenGuang2 小时前
python大小整数范围解析
java·开发语言·python
cpolar技术支持2 小时前
端口被谁占了、这台机上开了哪些监听?本机起一个端口占用只读清单,cpolar 给异地同事远程看谁在监听
运维·python·内网穿透·cpolar·端口占用
长坡夜行2 小时前
没有运维的交易系统,是怎么自己活下去的
python
WeiXin_DZbishe2 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
XZ-0700012 小时前
week9-三元表达式
java·前端·python
峰哥AI手记3 小时前
金融合规问答助手-RAG查询路由落地
python·aigc