UFT - 随机日期

UFT - Random Date

我创建此代码以获取范围内的随机日期。我从一些站点支持它,并在此处从其他站点获得答案。这没有问题,但是当我尝试通过一个函数时,总是报错。

StartDate = "01-01-1950"
EndDate= "31-12-2000"

StartDate = CDate(StartDate)
EndDate= CDate(EndDate)

Randomize
dtmRandomDate = DateValue((EndDate- StartDate + 1) * Rnd + StartDate )


Browser("DashBoard_2").Page("DashBoard").WebEdit("txtBornDate").Set dtmRandomDate

错误:

函数:

Function DataRandom(StartDate, EndDate)

    Dim StartDate, EndDate

    StartDate = CDate(StartDate)
    EndDate= CDate(EndDate)

    Randomize
    dtmRandomDate = EndDate((dtmEndDate - StartDate+ 1) * Rnd + StartDate)

End Function

我认为问题在于我传递变量的方式。关于日期函数的一些东西,我缺少它来声明,使变量接受日期?是UFT系统本身的问题?

已经尝试了一些,但没有奏效。

谢谢, 最好的问候

测试可以看出第130行失败了;

a = DataRandom(01-02-2020, 03-04-2022)

这里有两个问题:

  1. 函数 DateRandom() 期望 return 一个值,但函数定义不包含 return 结果的语句,其行为更像一个 Sub过程比函数。要解决此问题,请将函数定义更改为;

    Function DataRandom(StartDate, EndDate)
        Dim StartDate, EndDate
    
        StartDate = CDate(StartDate)
        EndDate = CDate(EndDate)
    
        Randomize 'Should be initialised once rather than with each call to the function.
        dtmRandomDate = DateValue((EndDate - StartDate + 1) * Rnd + EndDate)
    
        DateRandom = dtmRandomDate 'This line returns the result.
    End Function
    
  2. 传递给函数的参数在语法上有问题,因为您使用 CDate() 将值转换为正确的 Date 您应该将值作为字符串传递。这只需要在测试中将每个参数封装在双引号中。

    a = DataRandom("01-02-2020", "03-04-2022")
    

此外, Randomize 语句应该只 运行 一次,而不是每次调用该函数时。理想情况下,您将有一个处理脚本设置和初始化的 Init() 过程。

所以得到了 Lankymart 的帮助,最后一个函数放到了 libray。 更改变量,或根据需要声明。

Public StartDate, EndDate

Function DateRandom(StartDate, EndDate)


    Dim dtmRandomDate, dtmStartDate, dtmEndDate

    dtmStartDate = CDate(StartDate)
    dtmEndDate = CDate(EndDate)

    dtmRandomDate = DateValue((dtmEndDate - dtmStartDate + 1) * Rnd + dtmStartDate)

    DateRandom = dtmRandomDate 'Returning the result

End Function