1. 可以通过Function Definition Generator方便的定制自定义函数(Function)
2. Built-in Function优先级高于User-Defined Function。因此若存在同名的话,QTP会优先调用内置的Function
3. 通过RegisterUserFunc可以将自定义的函数注册为特定对象的方法,甚至可以覆盖原有对象的方法(Method)。通过UnRegisterUserFunc取消注册
注册方式:RegisterUserFunc TOClass, MethodName, FunctionName, True
反注册方式:UnRegisterUserFunc TOClass, MethodName
4. 定义在Action中的Function以及注册的Method只能在当前Action中使用,若需要供全局使用则定义到Function Library中
5. 如果Method在Action中注册并且被其他Action调用时,该Method定义也适用于调用Action(Calling Action)。但如果Function定义在被调用Action中(Called Action),则Calling Action会因为找不到Function定义而失败。这种情况的话,需要将Function 定义在Function Library中
6. QTP在测试执行前会清除所有的Method Register
7. 默认情况下,User-Defined Function的运行结果不会出现在Test Result中,可以自己用Reporter.ReportEvent添加log
8. QTP在打开Test时加载了关联的Function Library,因此,若其他人或者你用其他编辑器修改了对应的Function Library,只有在QTP重新打开该Test后才生效
9. QTP搜索Function的顺序是先Test在Function Library。另外,同名的Function存在于多个Function Library时,后一个被使用
10. 对于同一个Method先后注册了两个不同的Function,后面的Method注册会覆盖前面的。当用UnRegisterUserFunc反注册时,会将该Method返回到原始状态,而不会回到前一个注册
11. 在某Action中使用ExecuteFile后,该Function只能在当前Action中使用
12. 对于存储在QC中的外部资源,如Function Library,QTP打开时为其创建了一个本地副本。因此若其他人修改了QC上的外部资源,或你使用其他编辑器进行修改时,该修改只有在QTP重新打开该Test才生效。但对于存储在本地的外部资源,不存在该问题
13. 在Test Settings中设置了Default Function Library列表后,新建Test时这些Library即被集成到新创建的Test中。以后对Default Function Library列表的修改对已有Test不产生任何影响