【问题标题】:HP UFT/QTP 14.00, import CSV and maintain the values in data sheetHP UFT/QTP 14.00,导入 CSV 并维护数据表中的值
【发布时间】:2018-07-10 15:53:22
【问题描述】:

我正在从 csv 文件中导入一些数据,这是数据:

*file.csv
UserName, EmailId, PhoneNumber
Antonio, anto@gmail.com, 1234567890
Oscar, osc@yahoo.com, 9999999999
Luis,lu@hotmail.com,8888888

我有一个函数可以调用这个文件:

'************************************************************
Function ImportCsvFiletoDatatable(CsvFilePath,SheetName,HeaderDelimiter)
Dim filePath
Dim fso
Dim f
Dim fData
Dim arrData
Dim CsvValue
Dim CsvSheet
Dim CsvFirstLine
Dim CsvColumns
Dim ColumnIndex
Dim rIndex
Dim cIndex

filePath=CsvFilePath    'Specify file Path

'Open CSV File using File System Object
Set fso=createobject("scripting.filesystemobject")
Set f  = fso.OpenTextFile(filePath)

CsvFirstLine=f.readline    'Treating like first line is the column names

CsvColumns=split(CsvFirstLine,HeaderDelimiter)    'Split the line using HeaderDelimiter

Set CsvSheet=DataTable.GetSheet(SheetName)    'Get the Specified sheet

'Add the splitted values as Datatable Columns
For ColumnIndex=lbound(CsvColumns)  to ubound(CsvColumns)
CsvSheet.addparameter CsvColumns(ColumnIndex),""
Next


While not f.AtEndOfStream

rIndex=f.Line-1    'Specify Row index
fData=f.ReadLine    ' Read CSV File Line
arrData=split(fData,",")    'Split the line
cIndex=1    'Specify Column Index
CsvSheet.SetCurrentRow(rIndex)    'Set Row in the Datatable

' Add values in Datatable
For Each CsvValue In arrData
CsvSheet.getparameter(cIndex).value=CsvValue
cIndex=cIndex+1
Next

Wend

f.Close
Set fso=Nothing

End Function
'************************************************************

效果很好,但信息不稳定,我无法管理或使用这些数据。 有人知道如何将数据保留在数据表中,尽管离开了 UFT?

【问题讨论】:

  • 您实际上想对数据做什么?你是什​​么意思你不能使用数据? - 那如何“运作良好”?有几种方法可以打开 CSV。如果你手动打开它会起作用吗?
  • 那么是VBA还是VBS? DataTable(不管它是什么)最后改变了吗?函数旨在返回一些东西。
  • 将所有值加载到Datatable 后,如果您希望它们在脚本之外保留,您需要将它们Datatable.Export 保存到文件中。
  • 感谢@Dave,我现在正在尝试将 CSV 导入数据表,我可以使用数据但是...当迭代结束时,所有数据都将被删除。
  • 是的,因为它是一个运行时数据表。如果您按照我提到的方式导出它,则可以在 UFT 之外加载或查看它

标签: vbscript qtp hp-uft uft14


【解决方案1】:
Dim objQtApp, strXlsPath
strXlsPath = Environment("TestDir") & "\Default.xls"
Set objQtApp = CreateObject("QuickTest.Application")
DataTable.Export strXlsPath
objQtApp.Test.DataTable.Import strXlsPath
Set objQtApp = Nothing

在 Default.xls 中可以找到设计时数据表。当您打开测试用例或从 UFT 手动编辑它时会加载此文件。如果您想以编程方式刷新它,请使用上面的 code-sn-p。导出,然后使用自动化对象导入。

当然把它放到一个方法中,从你方便的地方调用。

如果您希望 UFT 自动处理它,请创建一个新类和它的单例实例。

实现类的 Class_Terminate 方法并将代码放在那里。无论 UFT 因崩溃或正常测试运行结束而退出,它都会尝试清理运行时创建的所有对象。该对象将在其中,作为自动清理过程的一部分,您会将运行时数据表保存到设计时数据表(Default.xls)中,然后重新加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2015-06-06
    相关资源
    最近更新 更多