机器人框架中的If关键字问题

时间:2016-06-23 22:36:30

标签: robotframework

我对在Robot Framework中使用if有疑问

我正在尝试下面的东西,但它不起作用。需要一些帮助。

[Arguments]    ${device}
Run Keyword if ${device} is in @{device_list}
do this................
then do this...............
Run Keyword if ${device} is in @{server_list}
do this................
then do this...............
Run Keyword Unless ${device} is in @{router_list}
do this................
then do this...............

仅供参考     device_list = [A,B,C]     server_list = [S,d,F]     router_list = [G,H,J] 我正在使用for循环从我的代码的某些部分中的不同列表中获取设备值,并根据我将从不同列表中获取的设备值,我想运行部分代码。

我怎么能做到这一点?任何人都可以分享他们的想法在机器人框架中实现这个吗? 提前谢谢。

谢谢,

2 个答案:

答案 0 :(得分:2)

在将列表作为对象引用时,您需要使用require 'net/ldap' # gem install ruby-net-ldap module Test class PutAd SERVER = 'myldap.mydomain.com' PORT = 389 BASE = 'DC=mydomain,DC=com' DOMAIN = 'mydomain.com' ATTR_SV = { :login => :samaccountname, :first_name => :givenname, :last_name => :sn, :email => :mail } def self.authenticate(login, pass) return nil if login.empty? or pass.empty? conn = Net::LDAP.new :host => SERVER, :port => PORT, :base => BASE, :auth => { :username => "#{login}@#{DOMAIN}", :password => pass, :method => :simple } if conn.bind and user = conn.search(:filter => "sAMAccountName=#{login}").first return self.new(user) else return nil end rescue Net::LDAP::LdapError => e return nil end end end 而不是$

如果您使用的是机器人框架2.9或更高版本,则可以省略表达式中的花括号,并将变量视为同名的python变量。这在Evaluating Expressions库的文档BuiltIn部分中有说明。

如果要在条件为真时运行多个步骤,则必须在条件内使用run keywords

这是一个完整的工作示例:

@

答案 1 :(得分:0)

怎么样

Library Collections

${res}=    List Should Contain Value    ${device}    @{device_list}
Run Keyword If    ${res}   Do This
Run Keyword Unless    ${res}   Do That

我实际上没有运行它,但那是我认为它应该如何工作。