4. 使用内置关键字进行断言

任务说明

在Robot Framework测试中,断言是验证测试结果是否符合预期的核心手段。本案例将使用内置关键字Should Be Equal和Should Contain编写一组登录功能的断言测试,覆盖精确匹配、包含匹配和失败场景,最终通过命令行执行测试并查看报告确认断言生效。

测试用例设计

被测对象为一个模拟的登录处理函数(Python实现),接收用户名和密码,返回登录结果字典。测试用例覆盖以下场景:

  • 正确用户名密码返回成功状态;
  • 错误密码返回失败状态且包含错误提示;
  • 断言失败时测试用例标记为失败并输出对比信息。

实现代码

创建被测Python模块 login_lib.py:

def do_login(username, password):
    if username == "admin" and password == "123456":
        return {"status": "success", "message": "Welcome admin"}
    else:
        return {"status": "fail", "message": "Invalid credentials"}

创建Robot Framework测试套件 assertion_test.robot:

*** Settings ***
Library    Collections
Library    login_lib.py

*** Test Cases ***
验证登录成功
    ${result}=    Do Login    admin    123456
    Should Be Equal    ${result}[status]    success
    Should Be Equal    ${result}[message]    Welcome admin

验证登录失败提示
    ${result}=    Do Login    admin    wrongpass
    Should Be Equal    ${result}[status]    fail
    Should Contain    ${result}[message]    Invalid

验证断言失败场景
    ${result}=    Do Login    admin    123456
    Should Be Equal    ${result}[status]    fail

执行与验证

在命令行执行以下命令运行测试:

robot assertion_test.robot

执行完成后,观察输出信息与生成的 report.html:

  • 前两个测试用例应显示PASS,说明Should Be Equal和Should Contain断言通过;
  • 第三个测试用例应显示FAIL,且日志中展示实际值success与期望值fail的对比,证明断言失败时能准确定位差异。
Robot Framework 断言执行流程 测试套件 assertion_test.robot 用例1: 验证登录成功 Do Login → Should Be Equal PASS status=success ✓ 用例2: 验证登录失败 Do Login → Should Contain PASS message含Invalid ✓ 用例3: 断言失败场景 期望fail 实际success FAIL success != fail 输出报告 report.html / log.html 2 PASS · 1 FAIL · 断言差异可视化展示

判定标准

测试执行完毕后,满足以下条件即表示断言编写正确:

  • report.html中前两个用例显示绿色PASS,第三个用例显示红色FAIL;
  • 失败用例的日志中明确列出实际值(success)与期望值(fail),且错误信息格式为success != fail;
  • 若将第三个用例的期望值改为success后重新执行,所有用例均通过,证明断言逻辑本身无误。