我使用 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>
。更多关于这里。
这种方法不需要更改您的测试/关键字文件,但如果您有很多机器来运行这些测试,它就不能很好地扩展。
我很可能会采用以下方法:
资源/machines.py
MACHINES = [
{
"host": "host1",
"account" "a",
"password": "secret"
},
{
"host": "host2",
"account" "b",
"password": "secret"
}
]
*** 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] 删除。
我来说两句