在pytest Web UI测试中,如何判断断言的通过与失败?
测试用例通过/失败的判断方法及代码修正
原代码的核心问题
你的代码目前无法正确判断测试结果,存在三个关键错误:
- 错误地将变量名作为字符串(
"review_score"、"price")进行比较,而非使用实际获取的页面元素值 - 没有从页面元素中提取评分、价格的文本内容
- 直接用字符串类型比较数字,逻辑不符合预期(比如字符串"10"会被判定为小于"4")
正确的判断逻辑与测试结果规则
测试用例只有同时满足两个校验条件才会通过,任意一个条件不满足则失败:
- 商品评分校验:获取页面上的实际评分值,转换为数值类型后判断是否≥4
- 实际评分≥4 → 该断言通过;否则断言失败,测试用例直接失败
- 商品价格校验:获取页面上的实际价格值,清理非数字字符后转换为数值类型,判断是否≤4000
- 实际价格≤4000 → 该断言通过;否则断言失败,测试用例直接失败
修正后的测试代码
def test_review(): # 处理商品评分校验 review_element = driver.find_element(By.ID, "acrCustomerReviewText") # 提取文本并转换为浮点数(适配带小数的评分,比如4.5) review_score = float(review_element.text.strip()) # 断言评分≥4,失败时输出明确提示 assert review_score >= 4, f"商品评分{review_score}低于4,不符合要求" # 处理商品价格校验 price_element = driver.find_element(By.ID, "corePriceDisplay_desktop_feature_div") # 清理价格文本中的非数字字符(示例:移除人民币符号、千分位逗号) clean_price_text = price_element.text.strip().replace("¥", "").replace(",", "") price = float(clean_price_text) # 断言价格≤4000,失败时输出明确提示 assert price <= 4000, f"商品价格{price}高于4000,不符合要求"
测试结果判断方式
运行pytest后,根据终端输出即可判断:
- 输出
PASSED→ 两个校验条件都满足,测试用例通过 - 输出
FAILED并附带断言错误提示(比如评分不足4或价格超标的具体信息)→ 测试用例失败
内容的提问来源于stack exchange,提问作者Najib Shehu
相关产品推荐
相关产品推荐

