机器人框架:如何多次运行所有测试用例

杨筱谊

我使用 SSHLibrary 连接到计算机来运行测试用例。如下:

*** Test Cases ***
Check CPU Temperature
    Check that the CPU temperature is less than ? °C    ${CPU tem}
Check CPU Usage
    Check if any application is using CPU more than ? percent    ${CPU usage percent}
Check TCP transmission
    Check TCP transmission > ? MBytes    ${tcp transmission}

*** Keywords ***
Open Connection & Login
    Open Connection    ${HOST}
    Login    ${ACCOUNT}    ${PASSWORD}
  
#(The following is omitted)

请问如果我想用同样的Test case来测试第二台电脑怎么办?

帕维尔萨曼

好吧,这取决于您想要更改当前文件/测试的结构的程度。由于您有单个变量${HOST}, ${ACCOUNT}, and${PASSWORD}并且从您的问题看来,您似乎没有迭代某些数据结构,在这些数据结构中为多个不同的主机存储不同的登录信息,那么运行它的更直接的方法就是运行几个命令:

$ robot --variable HOST:host1 --variable ACCOUNT:a --variable PASSWORD:secret * && robot --variable HOST:host2 --variable ACCOUNT:a --variable PASSWORD *

编辑:正如我在评论中正确提醒的那样,执行上一个示例中的第二个命令将覆盖第一个命令创建的输出,因此更好的方法(保留两次执行的日志)是这样的:

$ robot --timestampoutput --output host1 --log host1 --report host1 --variable HOST:host1 --variable ACCOUNT:a --variable PASSWORD:secret * && robot --timestampoutput --output host2 --log host2 --report host2 --variable HOST:host2 --variable ACCOUNT:a --variable PASSWORD:secret *

这将以以下格式为每个命令创建单独的输出:host{n}-{date}-{time}.

由于这已经是一个很长的命令,这是更好地包含所有这些命令行选项使用参数文件,以后可以从类似的命令只是引用此文件:$ robot --argumentfile <path_to_argument_file>更多关于这里

这种方法不需要更改您的测试/关键字文件,但如果您有很多机器来运行这些测试,它就不能很好地扩展。

我很可能会采用以下方法:

  1. 创建一个资源文件,其中包含我要运行这些测试的所有机器的登录信息。如果可能是这样的:

资源/machines.py

MACHINES = [
    {
        "host": "host1",
        "account" "a",
        "password": "secret"
    },
    {
        "host": "host2",
        "account" "b",
        "password": "secret"
    }
]
  1. 我会在每个测试用例中迭代这些测试数据,使用这些值调用关键字,例如:
*** Test Cases ***
Check Temperature
    FOR    ${machine}    IN    @{MACHINES}
        # you would need to assing values from the dict into ${host}, ${account},
        # and ${pwd} here, you want to check Collections library for this
        Check CPU Temperature    ${host}    ${account}    ${pwd}
    END

这样您就可以只发出一个命令,而无需在命令行上指定任何变量。如果您有大量测试数据,它的扩展性会更好。

另一种方法是数据驱动的方法:

*** Test Cases ***
Check Temperature
    [Template]    Check CPU Temperature
    host1    a    secret
    host2    a    secret
    host3    a    secret

其他测试用例也类似。您还需要更改关键字,例如Check CPU Temperature让它们接受主机、帐户和登录名的参数。

这种方法可能比前一种方法简单一些,但是您将测试数据硬编码在您的测试 (.robot) 文件中,我个人不喜欢这种方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用机器人框架jar文件运行测试用例?

如何在团队城市中不运行所有机器人测试用例,而只运行具有 [tags] = A 和/或 [tags]=B 的那些机器人测试用例

如何并行运行机器人框架测试用例而不是并行运行Test Suite?

机器人框架上的数据驱动测试用例

无法重新运行在机器人框架中动态创建的失败的测试套件/测试用例

在命令提示符中运行机器人框架测试用例时获取 UnicodeDecodeError: 'utf-8'

使用自定义库运行机器人框架测试用例时,如何解决“ NameError:未定义全局名称'x'”错误?

在开始在机器人框架中执行测试用例之前,如何最初存储函数的返回值

如何让机器人框架等到数据出现在 MySQL 表上以继续执行测试用例

机器人框架出错:测试用例“...”中的语法无效:不推荐使用“...”作为测试用例名称

我可以获取机器人框架内测试用例步骤的统计信息吗?

如何基于git commit运行机器人框架测试?

如果我们在机器人框架中使用相同的关键字运行一个测试用例,如何将测试用例数指定为2?

机器人框架测试用户角色单点登录

如何使用冒号分割机器人测试用例,以便将每个测试用例视为单独的测试用例?

如何从NetBeans运行所有JUnit测试用例?

如何在机器人框架测试中运行python文件?

如何使用机器人框架并行运行测试?并行库的问题

从机器人的测试用例中导入文档字段以在 XRAY 中进行测试

获取所有链接并遍历列表(机器人框架)

为机器人测试用例设置标签名称

使用下面的 Web Elements 编写用于搜索搜索输入关键字的机器人框架测试用例?

如何在机器人框架内运行sikuli脚本?

如何在机器人框架中运行此循环?

如何在机器人框架中获取所有文本?

如何使用机器人框架删除目录中存在的所有文件

用于系统测试的机器人框架

使用机器人框架的测试模板

测试聊天机器人的框架