关闭

SQL存储过程测试(5)——当待测存储过程返回行集的时候 如何判断测试结果是否通过

发表于:2009-11-12 12:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:igoone    来源:51Testing软件测试博客

  问题

  当待测试存储过程返回SQL行集的时候,如何判断测试结果是否通过。

  设计

  首先,创建一个临时数据库表,然后,调用待测存储过程并取回返回的行数,把它放到临时表里,计算临时表的聚合校验和(aggregate checksum),并把这个值与期望的校验值进行比较。

  方案

  设想有一个名为usp_HireAfter()的待测存储过程,它接受一个日期作为输入参数。这个存储过程从雇用日期晚于输入日期的那些记录表里选出所有的employee列(empID、empLast、empDOH):

create procedure usp_HiredAfter

    @dt datetime

as

    select * from tb1Employees where empDOH > @dt

  首先,应该创建一个临时表,用于保存存储过程返回的SQL行集:

create table #results

(

    empID char(3) primary key,

    empLast varchar(35) not null,

    empDOH datetime not null

)

  注意:表名之前的#字符是用来表示这是一个临时表,然后可以调用待测存储过程并且把返回的行集存入临时表:

insert @results(empID,empLast,empDOH)

    exec dbEmployees.dbo.usp_HiredAfter '10/25/2009'

  接下来,计算临时表聚合校验和,并把实际值与期望值进行比较:

if(@@rowcount = 0)

    set @actual = 0

else

    select @actual = checksum_agg(binary_checksum(*)) from #results

if(@actual = 25527856)

    print 'Pass'

else

    print 'FAIL'

  内建的SQL binary_checksum()函数返回SQL表里某一行的校验和。可以把它想象成用来代表某一行字符数据的一个整数值。checksum_agg()函数返回某一组值的聚合校验和。当它们一起使用时,其计算结果是一个胜于表征某个行值的整数值。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号