我对在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循环从我的代码的某些部分中的不同列表中获取设备值,并根据我将从不同列表中获取的设备值,我想运行部分代码。
我怎么能做到这一点?任何人都可以分享他们的想法在机器人框架中实现这个吗? 提前谢谢。
谢谢,
答案 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
我实际上没有运行它,但那是我认为它应该如何工作。