【发布时间】:2014-12-29 17:57:38
【问题描述】:
我有一个函数对我的所有脚本执行相同的操作,但只有存储 Pass-Fail 值的变量会改变。 例如,在一个脚本中 -> 状态存储在 Envrionment.Value("Current_Status") 在另一个脚本中 -> 状态存储在 DataTable.Value("Status",1) 在另一个脚本中 -> 状态存储在 objRS("AddCriteria_Status").Value
所以我正在尝试创建一个函数,其中我将这些参数作为字符串传递,然后将它们用作变量名。这是示例代码:
Envrionment.Value("Current_Status") = "none"
Environment.Value("Fail_text") = "none"
Call AddCriteria("Environment.Value(""Current_Status"")","Environment.Value(""Fail_text"")")
Pubic Function AddCriteria(varStatus,varActual)
varTemp = ""
Execute(varStatus+ "=InProgress") 'change status to InProgress by the time execution is done
Execute(varActual + "=not_defined") 'this will have the reason the case failed
....code
If varTemp = "FAIL" Then
Execute(varStatus+ "=PASS")
Execute(varActual + "=PASS")
Else
Execute(varStatus+ "=FAIL")
Execute(varActual + "=Criteria did not get added")
End If
End Function
在调用子例程时,我希望 Environment.Value("Current_Status") 的值从“none”更改为“InProgress”,然后更改为“PASS” 但是在执行“Execute”命令后,Environment 变量变为空。
由于 VBScript 不支持 CVar,我无法使用它。
我尝试了 Eval,但它在另一个方向上不起作用,即: 如果更改 Environment.Value("Current_Status") 的值,则 Eval(varStatus) 的值会发生变化,但我找不到更改 Eval(varStatus) 值的方法,以便 Environment.Value(" Current_Status") 更改。
请帮忙。我被困了一个星期。
!!!我正在努力完成的事情!!!
在 .vbs 文件中,将任何字符串作为参数传递给函数;并将其转换为该函数中的变量名。简单示例:将字符串“abc”作为参数传递给函数 -> 在该函数中,将字符串转换为变量名以存储值 [例如,abc = “PASS”]
!!!我是如何尝试的!!!
我尝试使用 Execute 命令,因为这是我从上一篇文章中获得的解决方案 [vbscript Eval a string to a Variable in a loop?
使用“CVar”是一种方法,但在 VBScript 中不受支持。所以我的想法用完了
!!!我遇到的问题!!!
老实说,我不明白使用“执行”的逻辑,但我还是尝试了。可悲的是,它没有成功。使用执行命令时(如代码中所述),环境变量为空。
【问题讨论】:
标签: vbscript parameter-passing eval qtp execute