51Testing软件测试论坛

标题: 请教各位高手关于引入vbs的问题 [打印本页]

作者: yuandjing    时间: 2007-8-17 14:39
标题: 请教各位高手关于引入vbs的问题
问题是这样的:
Private Function QTP_WriteFile(words)
        Dim fileSystemObj,fileSpec,logFile
        Set fileSystemObj = CreateObject("Scripting.FileSystemObject")
        fileSpec = "C:\" &"测试报告QTP"& ".txt"
        Set logFile = fileSystemObj.OpenTextFile(fileSpec, 8, true)
        logFile.WriteLine (CStr(words))
       
        logFile.Close
        Set logFile = Nothing
End Function

QTP_WriteFile("ddd")

以上这段代码我在QTP下输入并且运行是正确的,并且能写入文件

但是我把
Private Sub QTP_WriteFile(words)
        Dim fileSystemObj,fileSpec,logFile
        Set fileSystemObj = CreateObject("Scripting.FileSystemObject")
        fileSpec = "C:\" &"测试报告QTP"& ".txt"
        Set logFile = fileSystemObj.OpenTextFile(fileSpec, 8, true)
        logFile.WriteLine (CStr(words))
       
        logFile.Close
        Set logFile = Nothing
End Sub
这个函数写到了外部的vbs文件
再在QTP中引入vbs文件,
在QTP中执行:  QTP_WriteFile("ddd")
竟然报错“类型不匹配:QTP_WriteFile”

郁闷啊~~老半天找不到为什么,请各位高手帮忙啊
作者: winfood    时间: 2007-8-17 14:46
原帖由 yuandjing 于 2007-8-17 14:39 发表
问题是这样的:
Private Function QTP_WriteFile(words)
        Dim fileSystemObj,fileSpec,logFile
        Set fileSystemObj = CreateObject("Scripting.FileSystemObject")
        fileSpec = "C:\" &"测试报告QTP"& ".tx ...

如果你从Test -> Settings中引用这个VBS文件,就会失败。因为在VBS里面声明函数用了Private,这是私有类型。那个函数将不能被外部调用,正确的应该是Public。

如果用ExecuteFile方式引入这个VBS文件就不会有问题了。比如:
ExecuteFile "C:\" & "***.vbs"
作者: yabest    时间: 2007-8-17 14:48
原帖由 yuandjing 于 2007-8-17 14:39 发表
问题是这样的:
Private Function QTP_WriteFile(words)
        Dim fileSystemObj,fileSpec,logFile
        Set fileSystemObj = CreateObject("Scripting.FileSystemObject")
        fileSpec = "C:\" &"测试报告QTP"& ".tx ...



Privatesdlkfj3
作者: yuandjing    时间: 2007-8-17 14:59
俄~~我晕了,唉,下午昏昏沉沉的,谢谢大家了
作者: bobile    时间: 2007-8-17 15:12
恩,上面说的是正确的
作者: yuandjing    时间: 2007-8-17 15:35
呵呵,最近想把QTP和ROBOT常用的函数都写成自己的vbs文件,以后就可以方便调用了
觉得QTP生成的随机函数不够随机
哈哈
我自己写了个
'随机函数生成
'输入值:生成值范围 i~j
'返回值:随机数
Public Function Get_RandNum(fromNum,toNum)
        Dim RunTime
        Randomize   
        RunTime = Int((10 * Rnd) + 1)
        Dim MyValue,i
        For i = 1 To RunTime
                Randomize  
                MyValue = Int(((toNum) * Rnd) + (fromNum))
        Next
   Get_randNum=Myvalue
End Function
哈哈,这样就随机很多了
嗯嗯,继续去写了,谢谢各位帮助
作者: walker1020    时间: 2007-8-18 22:27
谢谢yuandjing 共享了自己写的随机函数,这个的确比原来的函数好用多了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2