目录

    pybot 命令

    • 执行所有测试用例
    pybot .
    
    • 执行某个测试套件
    pybot testsuite.txt
    
    • 执行某个测试套件中的测试用例
    pybot --test case_name testsuit.txt
    
    • 将测试结果输出到固定路径
    pybot --ouputdir your_ouput_dir testsuit.txt
    
    • 执行包含某个 tag 的测试用例
    pybot --include tag_name testsuit.txt
    

    关于日志

    默认情况下,Robot Framework 中低于 INFO 级别的日志消息不会写日志。这个阈值可以通过命令行选项 --loglevel 修改。

    在 Robot Framework 中有五种日志级别:

    • FAIL

    当关键字失败时使用,只能由Robot Framework自己使用

    • WARN

    用来展示警告, 警告消息同样会出现在 控制台以及日志文件的测试执行错误区,,不过它们不会影响到测试用例的状态

    • INFO

    默认的消息级别,默认情况下日志文件中不会显示低于此级别的消息

    • DEBUG

    用于调试目的.,当需要记录测试库内部执行过程时很有用。当关键字失败时,代码失败的地方会自动使用该级别打印 traceback 信息

    • TRACE

    更详细的调试级别,使用该级别时,关键字的参数和返回值会自动写入日志

    在测试用例中,可以调用内置关键字 log 输出相应的日志:

    例如:

    log    "this is my log"    warn
    log    ${num}    warn
    

    输出:

    [ WARN ] "this is my log"
    [ WARN ] 100
    

    第一个参数是日志内容,第二个参数是日志级别,默认是 info。

    声明变量

    • 变量

    在测试套件中:

    ${num}    100
    ${string}   abcdef
    

    在测试用例中:

    ${num}    Set Variable    100
    ${string}    Set Variable    abcdef
    
    • 列表

    在测试套件中:

    @{num_list}       1    2    3
    @{string_list}    a    b    c
    

    在测试用例中:

    @{num_list}    Create  List    1        2         3
    @{string_list}    Create  List    a       b          c
    

    列表的访问方法有两种:

    1. @{变量名}[index]
    2. ${变量名[index]}
    • 字典

    在测试套件中:

    &{user}  name=admin    [email protected]
    

    在测试用例中:

    &{user}    Create Dictionary    name=admin    [email protected]
    

    也可以使用标量符声明字典变量 ${user}

    访问方法:

    log    ${user.name}
    log    ${user['name']}
    

    条件表达式

    语法结构:

    Run Keyword If  判断条件  其他关键字  参数
    
    ...     ELSE IF   判断条件  其他关键字  参数
    
    ...     ELSE  判断条件  其他关键字  参数
    

    例如:

    testCase
        ${n}    Set Variable    3
        Run Keyword If    ${n}==100    log    num is 100
        ...    ELSE IF    ${n}>100    log    num is more than 100
        ...    ELSE    log    num is less than 100
    

    需要注意的是,关键字不区别大小写,但是这里的 ELSE ,ELSE IF 严格区分大小。

    循环表达式

    语法结构:

    :For 变量  IN  序列(or 列表)
    
         关键字 参数值
    
    :For 变量  IN RANGE 循环限量
    
         关键字  参数值
    

    例如:

    testCase
        ${t}    create list    123    qwe    dfg
        : FOR    ${x}    IN    @{t}
        \    log    ${x}    warn
    

    参数与返回值

    在 Robot Framework 中给关键字传递参数,或者从关键字中获取返回值是很常见的操作。

    在关键字定义中,通过 [Arguments] 定义参数,也可以设置默认值 ${version}=0 。具有默认值的参数,使用时可以不传,否则必须传递。传递参数时,可以使用默认位置传递,也可以使用 key/value 的形式。

    在关键字定义中,通过 [Return] 返回值。

    *** Test Cases ***
    testCase
        ${tem} =    获取完整版本    18
        log    ${tem}    warn
    
    *** Keywords ***
    获取完整版本
        [Arguments]    ${version}=0
        ${full_version}    set variable    Test-${version}
        [Return]    ${full_version}
    

    Variables 方式扩展 Python 变量

    在 Robot Framework 中,有时需要使用 Python 处理一些逻辑,获取运算值。这时,可以利用 Variable 来扩展 Python 变量。

    test.py

    # -*- coding: utf-8 -*-
    import random
    
    class Test(object):
        def __init__(self):
            pass
    
        def random(self):
            return random.randint(1, 100)
    
    myrand = Test()
    
    *** Settings ***
    Variables  test.py
    
    *** Test Cases ***
    testCase
        log    ${myrand.random()}    warn
    

    Library 方式扩展 Python 函数作为关键字

    在 Robot Framework 中,有时需要使用 Python 封装一些操作,比如发送邮件等。这时,可以利用 Library 的方式,引入 Python 函数作为 Robot Framework 中的关键字。

    mylib.py

    # -*- coding: utf-8 -*-
    def myprint(name):
        return "Your name is :" + name
    
    *** Settings ***
    Library           ../lib/mylib.py
    *** Test Cases ***
    testCase
        ${name}=    my_print    haha
        log    ${name}    warn