注解
除了打印pass/fail信息之外,还可以把测试结果插入到SQL数据表里:
——declare @actual int,@whenRun datetime
——set @whenRun = getdate()
while @@fetch_status = 0
begin
exec @actual = dbEmployees.dbo.usp_StatusCode @input
if (@actual = @expected)
insert into dbTestCasesAndResults.dbo.tblResults values (@caseID,'Pass',@whenRun)
else
insert into dbTestCasesAndResults.dbo.tblResults values (@caseID,'FAIL',@whenRun)
fetch next
from tCursor
into @caseID,@input,@expected
end
——set @whenRun = getdate()
while @@fetch_status = 0
begin
exec @actual = dbEmployees.dbo.usp_StatusCode @input
if (@actual = @expected)
insert into dbTestCasesAndResults.dbo.tblResults values (@caseID,'Pass',@whenRun)
else
insert into dbTestCasesAndResults.dbo.tblResults values (@caseID,'FAIL',@whenRun)
fetch next
from tCursor
into @caseID,@input,@expected
end
如果不采用通过待测存储过程以及硬编码的语句来生成底层数据库,也可以使用BULK INSERT语句:
——为dbEmployees填充数据
truncate table dbEmployees.dbo.tblEmployees
bulk insert dbEmployees.dbo.tblEmployees
from 'C:\somewhere\richTestbedData.dat'
with (formatfile = 'C:\somewhere\richTestbedDate.fmt')
truncate table dbEmployees.dbo.tblEmployees
bulk insert dbEmployees.dbo.tblEmployees
from 'C:\somewhere\richTestbedData.dat'
with (formatfile = 'C:\somewhere\richTestbedDate.fmt')
使用这种方法的好处是,可以让测试套件模块化程度更高并且更为灵活,但是它也有不好的一面:它在这个原本已经有很多对象的测试套件系统里又引入了一个文件,从而增加了复杂性。