utPLSQL: тестирование с использованием существующей таблицы - PullRequest
0 голосов
/ 21 ноября 2018

Существует таблица с именем summary_table, которая сравнивает две таблицы и проверяет, совпадают ли столбцы, ограничения и данные этих двух таблиц или нет.Одна из проверяемых таблиц (таблица1) является первой версией, а другая (таблица2) - второй.Сводная таблица имеет столбцы, такие как columns_status (проверяет, являются ли столбцы обеих таблиц одинаковыми или нет), data_status (проверяет, являются ли данные в обеих таблицах одинаковыми или нет) и constraints_status (проверяет, являются ли ограничения обеих таблиц одинаковыми или нет)который показывает PASS или FAIL.В сводной таблице есть несколько таблиц (более 1000).Как я могу проверить каждый из них?

Вот так выглядит итоговая таблица:

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

РЕДАКТИРОВАТЬ: у меня есть таблица, которая состоит из нескольких строк.У каждой строки есть два имени таблицы, которые уже сравниваются со столбцами состояния, показывающими, прошло ли оно или нет.Я хочу проверить каждую строку, используя столбец состояния.

1 Ответ

0 голосов
/ 03 августа 2019

Можно проверить определенные данные курсора или просто запросить количество строк, содержащих ошибку.Таким образом, ваша проверка действительно проста, но не дает очень специфических результатов.

Если я правильно понимаю, вы в основном хотите проверить результаты другого набора тестов, и поэтому я думаю, что было бы неплохо оставить этот тест универсальным в его настройке (например, без жестко закодированного списка таблиц), но в то же время пусть сообщают о конкретных проблемах.

Возможный способ сделать это - запросить все строки в таблице и проверить каждый из трех столбцов.Вы можете использовать имя таблицы в пользовательском сообщении, поэтому результат теста будет содержать конкретную информацию о том, какая таблица не прошла тест.Таким образом, для ваших тестовых данных тест может выглядеть следующим образом:

  -- %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');
...