QTP从MySQL数据库检索值时遇到问题
我正在处理一个QTP测试用例的数据库检查点。首先,脚本查询表QTP从MySQL数据库检索值时遇到问题,mysql,vbscript,qtp,Mysql,Vbscript,Qtp,我正在处理一个QTP测试用例的数据库检查点。首先,脚本查询表时间表的第一行,并检索列部门代码的值。然后查询表department,根据departmentCode的值检索列name的值。然后将name的值与QTP的本地数据表中的值进行比较 strcurrentenev=“localhost” dbName=“timex” strConnection=“DRIVER={MySQL ODBC 5.3 ANSI DRIVER};Server=“&strcurrentv&”DATABASE=“&dbNa
时间表的第一行
,并检索列部门代码
的值。然后查询表department
,根据departmentCode
的值检索列name
的值。然后将name
的值与QTP的本地数据表中的值进行比较
strcurrentenev=“localhost”
dbName=“timex”
strConnection=“DRIVER={MySQL ODBC 5.3 ANSI DRIVER};Server=“&strcurrentv&”DATABASE=“&dbName&”uid=root;pwd=”
Set conn=CreateObject(“ADODB.Connection”)
连接开放式结构连接
querydpcode=“从时间表中选择timesheetId=1的部门代码”
设置exDepCode=conn.Execute(queryDepCode)
depCode=exDepCode.GetString
打印部门代码
querydpname=“从departmentCode=”所在的部门中选择名称(&depCode)”
设置exDepName=conn.Execute(queryDepName)
depName=exDepName.GetString
打印部门名称
打印数据表(“部门”,dtLocalsheet)
如果depName=DataTable(“department”,dtLocalsheet),则
打印“等于”
其他的
打印“不相等”
如果结束
depCode
的值是'CS',depName
是'Customer Support',DataTable(“department”,dtLocalsheet)
也是'Customer Support'
目前我对这个测试用例有两个问题
depCode
的输出是CS
,department
表的第二行有一个departmentCode
的“CS”和一个name
的“客户支持”querydpname=“从departmentCode=”所在的部门中选择名称(&depCode)”
到
querydpname=“从部门代码='CS'所在的部门中选择名称”
这次QTP没有返回错误,但输出为
CS
Customer Support
Customer Support
not equal
反恐精英
客户支持
客户支持
不相上下
您的帮助将不胜感激。为什么不在
时间表和部门中针对部门代码执行SQL加入?会节省很多不必要的来回。我承认我对MySQL不太了解,但是对于初始错误未知列“CS”
这正是它所说的,因为你通过。。。departmentCode=“&depCode
作为…departmentCode=CS
MySQL正确地假设CS
是一个列,因为需要使用引号(”
)定义字符串,但由于CS
不是一列,而是一个字符串值'CS'
if将永远找不到该列,因此会出现错误。至于它们不相等的原因,您没有包含函数DataTable(“department”,dtLocalsheet)
的定义,因此我无法真正提供帮助。DataTable()
不是VBScript中的内置函数,因此假设您有定义,是否可以将其包括在内?是否尝试过如果Trim(depName)=Trim(DataTable(“department”,dtLocalsheet))那么
是否要对尾随空格进行折扣?@Lankymart感谢您的回答。因此,我试图在depCode中添加单引号,但似乎depCode中有一行我无法删除的新行。使用此“depCode=Replace(chr(39)&exDepCode.GetString&chr(39),vbCrLf,””),depCode的输出为“CS(此处新行)”“。也尝试了Trim
,结果相同。很抱歉,我不明白Replace()
代码是为了什么,这就是为什么我问DataTable()
函数做什么的原因。如果你做了这个Replace,它解释了为什么显示不相等的,所以不应该感到意外。