Перейти к содержимому

Фотография

Сверка данных c SQL в TestComplete 8


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 melkoridze

melkoridze

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 24 ноября 2011 - 10:55

Пилю автоматизацию для системы учета.
Использую TestComplete 8

Задачка в проверке данных:
- Есть программа учета с базой на SQL
- Завел Item I со значением N через интерфейс программы
- Необходимо проверить наличие данных в SQL

Подскажите пожалуйста, как можно реализовать функцию сравнения введенного значения N с наличием его в SQL

PS DBTables в Stores добавлен. Коннект к базе есть.
  • 0

#2 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 24 ноября 2011 - 12:36

С DBTables не работал, но насколько я понял из документации - это внутренние файлы проектов, которые используются в качестве чекпойнтов.
Чтобы работать с живой базой данных, необходимо настроить подключение. Строка подключения будет зависеть от того, какой движок базы данных используется, и как настроен к нему доступ.
Потом можно писать запросы на SQL и обрабатывать результаты. Кстати, не знаю, как в восьмерке, а в 7.52 документация на работу с базой данных довольно бедненькая, приходилось смотреть хелп к Delphi.
Могу поделиться тем, как делаю запросы к SQLServer (использую DelphiScript):
1) Настраиваем Connection String (Зависит от Вашего типа подключения к серверу, у меня SQLServer 2008 c собственным логином. Различные типы ConnectionString легко нагуглить).
connection_string := 'Network Library = ' + strServerName + ';' +
  'Data Source = ' + strDBName + ';' + 'User ID = ' + strLogin + ';' + 'Password = ' + strPwd + ';';
2) Создаем объект доступа к таблице
adoMainTable := ADO.CreateADOTable;
adoMainTable.ConnectionString := connection_string; 
adoMainTable.TableName := strMainTableName;
adoMainTable.Open;
3) Создаем объект запроса
adoQry := ADO.CreateADOQuery;
adoQry.SQL := '<мой текст запроса>';
4) Выполняем запрос
adoQry.Open;
И делаем с ним всё, что хотим. Можно пользоваться документацией к дельфийскому TADOQuery. Может быть, не все поля будут доступны, но такие базовые, как RecordCount, First, Next, FieldByName вполне работают.
5) Закрываем:
adoQry.Close; adoMainTable.Close;

  • 1

#3 melkoridze

melkoridze

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 24 ноября 2011 - 16:44

Прописать подключение к базе уже не проблема, с этим разобрался.
Данные сравнивать тоже научился.

Тут засада в следующем:
- в Сторах создана DBTable "TEST" с запросом на одну таблицу.
- при обновлении данных в SQL, они не обновляются в "TEST"

Вот ломаю голову над тем, как актуализировать данных из SQL в "TEST"

Заранее спасибо за помощь.
  • 0

#4 sawoy

sawoy

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 25 ноября 2011 - 05:43

Вот ломаю голову над тем, как актуализировать данных из SQL в "TEST"


По идее, вызовы DBTable.Check или DBTable.Compare могут обновлять данные в DBTable.
если установлена опция, указывающая это делать.

Прочитать про это можно здесь http://smartbear.com...warticle/11218/

Возможно Вам нужна не DBTable, а DB Table variable, которая просто обеспечивает доступ к внешним данным?
Посмотрите - http://smartbear.com...warticle/11860/
  • 1

#5 melkoridze

melkoridze

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 25 ноября 2011 - 08:07

Решил проблему составлением необходимого количества чекпоинтов, что правильно.
Для сверки данных в чекпоинте DBTable "TEST" использовал C# Script

function Compare()
{
  var Col1, Col2, i; // i - идентификатор строки
  var x = 1; //  ID продукта
  var y = 100; // Ожидаемое значение
   
  Col1 = DBTables["TEST"]["ColumnIndex"]("InternalCode");
  Col2 = DBTables["TEST"]["ColumnIndex"]("Amount");
  
  
  
  // Итерация строк 
  for(i = 0; i < DBTables["TEST"]["RowCount"]; i++) 
  {
    if(DBTables["TEST"]["Values"](i, Col1) == x) 
    {
     amount = DBTables["TEST"]["Values"](i, Col2);
     break;
    }
  } 

  // Сравнение с известным количеством
  if (amount == y)
    Log["Message"]("Данные совпадают!");
  else 
    Log["Error"]("Некорректные остатки!"); 
}

Но можно иметь несколько DBTables, используя их, как expected results и тогда уже смело применять
DBTable.Check

function CompareDBTables()
{
  // Specifies a DB Table element 
  var DBTab = DBTables["Table1"];
  
  // Performs some action with the stored data 
 
  // Checks whether the data has been changed 
  if (DBTab["Check"]()) 
    Log["Message"]("The data hasn't been changed.");

}

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных