什么样的print或者异常抛出适合做断言?
分支语句里面的。有判断,但没验证。
关键问题:assert 要断什么?
assert 的本质是:"我预期 X 应该是 Y,如果不是,就说明有 bug。"
所以你得先问自己:这个动作之后,预期结果是什么?
print 该变成什么?
print 有两种命运:
- 变成日志(logging),不是 assert
python
print("执行_order_ticket")
改为
logger.info("执行_order_ticket")
它的作用是记录流程,不是判断对错。 所以变成日志,而不是 assert。
- 变成断言(如果它背后有验证逻辑)
python
print(uname + ",请及时付款")
改成
assert "TOrder" in self.driver.current_url, "下单后未跳转到订单页"
python
assert 条件, "失败时的提示信息"
"我预期下单后,网址里应该出现 TOrder。如果没有,就说明出 bug 了,报错告诉我。"
条件是当前页面是TOrder页面。代码含义是断言当前页面里有没有 TOrder,如果条件不满足(失败,没有跳转到TOrder_url),则提示下单后未跳转到订单页。
毕竟通过的话什么都不需要提示。
所以如果要把我的交互脚本的print改为断言的思维是判断:
"这行是在做动作,还是在验证结果?"
做动作 → 保留,或改成日志
验证结果 → 改成 assert
功能测试和自动化测试的区别在于此

所以我们的主观判断可以通过assert判断替代。
自动化测试的本质就是:
把功能测试用例里的"预期结果",翻译成一条条 assert。