【问题标题】:utPLSQL: Test using an existing tableutPLSQL:使用现有表进行测试
【发布时间】:2019-04-24 01:35:39
【问题描述】:

有一个名为 summary_table 的表,它比较两个表并检查这两个表的列、约束和数据是否相同。一个被检查的表(table1)是第一个版本,另一个(table2)是第二个。汇总表有columns_status(检查两个表的列是否相同),data_status(检查两个表中的数据是否相同)和constraints_status(检查两个表的约束是否相同)显示通过或失败。 summary_table 中有多个表(1000+)。我如何测试它们中的每一个?

这是 summary_table 的样子:

TABLE1     TABLE1     COLUMN_STATUS     DATA_STATUS   CONSTRAINTS_STATUS
--------------------------------------------------------------------------       
CUST1      CUST1         PASS              PASS              PASS
SUPP1      SUPP1         PASS              FAIL              PASS

编辑:我有一个包含多行的表。每行有两个表名,它们已经与状态列进行比较,显示它是通过还是失败。我想使用状态列测试每一行。

【问题讨论】:

  • 使用动态SQL查询数据,然后编写相应的测试来测试结果。
  • 这似乎与your other recent question 有关。也许您应该用更多细节来改进这个问题,而不是问一个非常相似的问题?
  • 在上一个问题中,我必须比较两个表,但在此我有一个包含多行的表。每行有两个表名,它们已经与状态列进行比较,显示它是通过还是失败。我想使用状态列测试每一行。

标签: oracle unit-testing plsql utplsql


【解决方案1】:

可以检查特定的游标数据,或者简单地查询包含失败的行数。这样,您的检查非常简单,但不会报告非常具体的输出。

如果我理解正确,您基本上想检查另一个测试套件的结果,因此,我认为在其设置中保持此测试通用(例如,没有硬编码的表列表)是个好主意,但是同时让它报告具体问题。

一种可能的方法是查询表中的所有行,并检查三列中的每一列。您可以在自定义消息中使用表名,因此测试结果将包含有关哪个表未通过测试的特定信息。因此,对于您的测试数据,测试可能如下所示:

  -- %test(All bladiebla checks in summary table should be passed)
  procedure Check_Summary_Status;


  procedure Check_Summary_Status is
  begin
    for r in (select * from Summary_Status t) loop
      ut.expect(r.COLUMN_STATUS, 'Column status for table ' || r.Table1).to_equal('PASS');
      ut.expect(r.DATA_STATUS, 'Data status for table ' || r.Table1).to_equal('PASS');
      ut.expect(r.CONSTRAINTS_STATUS, 'Constraint status for table ' || r.Table1).to_equal('PASS');
    end loop;
  end;

输出看起来像这样,清楚地说明哪个检查失败,以及针对哪个表。

1) check_summary_status
    "Data status for table SUPP1"
    Actual: 'FAIL' (varchar2) was expected to equal: 'PASS' (varchar2) 
    at "MYSCHEMA.TST_MY_DEMO", line 10 ut.expect(r.DATA_STATUS, 'Data status for table ' || r.Table1).to_equal('PASS');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 2020-09-17
    • 2016-02-14
    • 2020-12-20
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多