相同的测试用例,不同的参数值

时间:2017-12-21 06:13:10

标签: tsqlt

根据阅读本link中的讨论,我已经知道如何使用不同的参数值调用相同的测试用例。但是,当我查看tSQLt.TestResult表时,我只有最后一次运行的记录。下面的示例伪代码表示该场景。

EXEC tSQLt.Run' Main_SP';

- 主SP伪码

创建Proc Main_SP

宣布@param

选择@param = 1

exec MyTestCase @param

选择@param = 2

exec MyTestCase @param

选择@param = 3

exec MyTestCase @param

有没有办法让我仍能在其他参数的相同测试用例的tSQLt.TestResult中看到完整的历史记录?

1 个答案:

答案 0 :(得分:0)

我认为您所链接的答案描述了以下内容:

步骤1。创建一个存储过程,该过程不是tSQLt测试运行器将运行的测试,但允许您传入参数。 第2步。创建一个或多个特定的测试用例,这些测试用例是实际的tsqlt测试但具有不同的名称。

这将为您提供能够为特定方案命名每个测试的优势,但不需要为每个案例编写重复的测试代码。

exec tSQLt.NewTestClass 'MyTestClass';
go;
-- step1: notice this test does not start with the keyword test so 
-- will not be executed by the test runner
create procedure [MyTestClass].[GenericTestScenario]
@param int
as
begin 
  -- write you generic test logic and then the assert
  declare @result int = dbo.yourFunctionUnderTest(@param);
  exec tSQLt.AssertEquals(@param, @result);
end 
go
-- step 2 (another test case)
create procedure [MyTestClass].[test Specific Scenario 1]
as
begin
  declare @param = 1;
  exec MyTestClass.GenericTestScenario @param
end
go
-- step 2 (first test case)
create procedure [MyTestClass].[test Specific Scenario 2]
as
begin
  declare @param = 2;
  exec MyTestClass.GenericTestScenario @param
end
go

tSQLt.run 'MyTestClass'
go