8. Работа с базами данных

Назад: 7 Data Driven Testing Содержание Дальше: 9 Object Driven Testing

В TestComplete существует 4 способа работы с базами данных:

  • С помощью функциональности ADO DB, включенной в Windows
  • С помощью объекта ADO
  • С помощью объекта BDE
  • При подключении ActiveX-элементов

Обычно сложности возникают при подключении к базе данных, так как в любом случае необходимо правильно сформировать строку подключения (Connection String). Если вы работаете с базой данных тестируемого приложения, то правильную строку подключения лучше узнать у разработчиков. В противном случае можно воспользоваться ресурсом http://connectionstrings.com/ , где можно найти много различных примеров строк подключения.

 

ADO DB

Подключение через ADO DB – это самый простой способ работы с базами данных, который работает всегда, так как эта возможность встроена в Windows.

В качестве примера приведем функцию, которая подключается к файлу базы данных MS Access, выбирает данные из таблицы и выводит результат в лог TestComplete-а.

function TestADODB()
{
  // подключаемся к базе
  var mydb = Sys.OleObject(“ADODB.Connection”);
  //var mydb = new ActiveXObject(“ADODB.Connection”);
 
  mydb.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Project.Path + “\\Stores\\Files\\tctutorial.mdb”;
  mydb.Open();
 
  // выбираем данные
  var rs = mydb.Execute(“SELECT * FROM tblData”);
  rs.MoveFirst();
 
  while(!rs.EOF)
  {
    Log.Message(rs.Fields(“fname”).Value);
    rs.MoveNext();
  }
 
  // закрываем подключения
  rs.Close();
  mydb.Close();
}

Результат работы функции:

Подробно свойства и методы объектов OLE DB распианы на сайте MSDN.

 

Объект ADO

ADO – это программный объект, дающий широкие возможности по работе с базами данных.

Для того чтобы иметь возможность работы с ним, необходимо установить Microsoft Data Access Components версии 2.1 или выше.

У объекта ADO есть несколько методов, позволяющих по-разному работать с базой данных:

  • CreateADOCommand, CreateADOConnection – создание подключений к базе данных, позволяющих выполнять запросы и обрабатывать результаты, полученные в результате отработки запросов
  • CreateADODataset, CreateADOTable, CreateADOQuery – позволяют работать с таблицами, наборами данных и запросами
  • CreateADOStoredProc –позволяет работать с хранимыми процедурами

Кроме этих методов (специфичных для Borland) у метода ADO есть еще 3 метода (CreateCommand, CreateConnection и CreateRecordset), которые позволяют работать с базой аналогично рассмотренному выше ADO DB.

Рассмотрим пример использования ADO. В этом примере мы сначала попытаемся удалить таблицу (используя блок try…catch на тот случай, если таблицы в базе нет и возникнет исключительная ситуация, затем создадим новую таблицу, внесем в нее данные и затем вычитаем только что записанные данные).

function TestADO()
{
  var cmd = ADO.CreateADOCommand();
  var e, rs, prm;
  Log.Message(“Удаляем таблицу, если она существует”);
  cmd.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Project.Path + “\\Stores\\Files\\tctutorial.mdb”;
  cmd.CommandType = cmdText;
 
  cmd.CommandText = “DROP TABLE [tblTest]”;
  try
  {
    cmd.Execute();
  }
  catch(e)
  {
    Log.Message(“Таблица не существует”);
  };
 
  Log.Message(“Создаем новую таблицу”);
  cmd.CommandText = “CREATE TABLE [tblTest](id integer PRIMARY KEY, fname char(20), age integer)”;
  cmd.Execute();
 
  Log.Message(“Добавляем в таблицу новые данные”);
  cmd.CommandText = “INSERT INTO [tblTest](id, fname, age) VALUES(1, ‘Ivanov’, 35)”;
  cmd.Execute();
 
  cmd.CommandText = “INSERT INTO [tblTest](id, fname, age) VALUES(2, ‘Petrov’, 20)”;
  cmd.Execute();
 
  cmd.CommandText = “INSERT INTO [tblTest](id, fname, age) VALUES(3, ‘Sidorov’, 10)”;
  cmd.Execute();
 
  cmd.CommandText = “SELECT * FROM tblTest”;
  rs = cmd.Execute();
 
  Log.Message(“Количество полей в таблице: ” + rs.Fields.Count);
  Log.Message(“Считываем данные из таблицы”);
  rs.MoveFirst();
  while (!rs.EOF)
  {
    Log.Message(“#” + rs.Fields(“id”).Value + “: ” + rs.Fields(“fname”).Value + “, ” + rs.Fields(“age”).Value);
    rs.MoveNext();
  };
 
  Log.Message(“Удаляем все данные из таблицы”);
  cmd.CommandText = “DELETE FROM tblTest”;
}

Результат работы функции:
  

 

BDE

BDE (Borland Database Engine) – это устаревшая технология работы с базами данных, которая уже не поддерживается. Если же вам по какой-то причине необходимо работать с BDE, то вам придется:

  1. Скачать и установить BDE Administrator
  2. Настроить BDE Administrator для работы с вашей базой данных (ниже приведены скриншоты настроек для базы данных tctutorial.mdb)

В окне BDE Administrator выберите пункт меню Object – New и создайте новый псевдоним (Alias), указав драйвер Microsoft Access Driver, затем укажите его имя (мы назвали его MSACCESS1).

Щелкните правой кнопкой мыши на созданном псевдониме, выберите пункт меню ODBC Administrator, затем System DSN и добавьте файл tctutorial.mdb как показано на скриншотах ниже.
  

  

Теперь можно создать пример работы с базой через BDE:

function TestBDE()
{
  var d, w;
  d = BDE.CreateDatabase();
  d.DatabaseName = “MSACCESS1″;
  d.AliasName = “MSACCESS1″;
  d.LoginPrompt = 0;
  d.Connected = 1;
  w = BDE.CreateTable();
  w.DatabaseName = “MSACCESS1″;
  w.TableType = 0;
  w.TableName = “tblData”;
  w.Open();
  w.First();

  while (!w.EOF)
  {
    Log.Message(w.FieldByName(“fname”).AsString);
    w.Next();
  }
}

Результат:

 

ActiveX

Если компонент для работы с базами данных является ActiveX-компонентом, то его можно добавить в TestComplete как ActiveX элемент и работать с ним через ActiveX редактор и в скриптах. В этом случае вы получаете доступ ко всем свойствам и методам ActiveX элемента.

Назад: 7 Data Driven Testing Содержание Дальше: 9 Object Driven Testing