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

Фотография

Получение данных из БД

database selenium rc phpunit

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

#1 Maysenka

Maysenka

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

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

Отправлено 11 сентября 2014 - 04:33

Добрый день. Прошу помощи.

 

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

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

 

Пример. Подключение и что хотелось бы проверить

protected function getConnection()
    {
        $pdo = new PDO('mysql:host=1.1.1.1;port=1111;dbname=name_base', 'TTT', '111');
        return $this->createDefaultDBConnection($pdo, 'name_base');
    }


    public function testPerson ()
    {
        $sql = "SELECT * FROM staffs";
        $statement =
            $this->getConnection()->query($sql);
        $result = $statement->fetchAll();
        $this->assertEquals(1, sizeof($result));
    }

 


  • 0

#2 Master_lomaster

Master_lomaster

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

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

Отправлено 11 сентября 2014 - 06:07

В нашем проекте есть классы для работы с БД, в тестах я пользуюсь ими. Спросите у своих разработчиков.


  • 0

#3 Maysenka

Maysenka

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

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

Отправлено 11 сентября 2014 - 07:01

В нашем проекте есть классы для работы с БД, в тестах я пользуюсь ими. Спросите у своих разработчиков.

 

Тесты находятся в отдельном репозитории, где нет данных классов


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 11 сентября 2014 - 07:07

Этот вопрос оффтопик, здесь обсуждается "Автоматизированное тестирование → Selenium - Functional Testing"


  • 0

#5 Maysenka

Maysenka

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

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

Отправлено 11 сентября 2014 - 07:39

Этот вопрос оффтопик, здесь обсуждается "Автоматизированное тестирование → Selenium - Functional Testing"

 

Я в рамках selenium и хочу получить данные. Ведь использоваться они будут в тестах


  • 0

#6 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 11 сентября 2014 - 07:47

Тогда так - я могу получить данные (такие-то и такие-то) из БД. Мне надо тут и тут их применить в тестах для проверки, как это лучше сделать? - на такой вопрос вам помогут тут.

а обучать работе с БД - это оффтопик.


  • 0

#7 Master_lomaster

Master_lomaster

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

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

Отправлено 11 сентября 2014 - 07:49

 

Этот вопрос оффтопик, здесь обсуждается "Автоматизированное тестирование → Selenium - Functional Testing"

 

Я в рамках selenium и хочу получить данные. Ведь использоваться они будут в тестах

 

В независимости от того, как вы собираетесь изпользовать данные из БД, этот вопрос о phpunit, а не о selenium.

 

Вы бы хоть написали, какие ошибки возникают, что не получается. Примера из документации недостаточно.


  • 0

#8 Maysenka

Maysenka

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

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

Отправлено 11 сентября 2014 - 08:01

Вот такой пример работает:

<?
require_once 'PHPUnit/Extensions/Database/TestCase.php';

class testMyBase extends PHPUnit_Extensions_Database_TestCase{

    protected function getConnection()
    {
        $pdo = new PDO('mysql:host=1.1.1.1;port=1111;dbname=name_base', 'TTT', '111');
        return $this->createDefaultDBConnection($pdo, 'name_base');
    }

    protected function getDataSet()
    {
        return $this->createFlatXMLDataSet(dirname(__FILE__).'/test.xml');
    }

    public function testPerson ()
    {
        $sql = "SELECT * FROM staffs";
        $statement =
            $this->getConnection()->getConnection()->query($sql);
        $result = $statement->fetchAll(); //данные таблицы, с которыми я потом работаю
        ...
    }
} 

test.xml

<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
    <partner_types
            id="4"
            name="Nadjava"/>
</dataset>

Но в данном примере получается, что таблицу partner_types я наполняю данными из test.xml. Если же опустить функцию getDataSet(), то возникает вот такая ошибка:

Fatal error:  Class testMyBase contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Extensions_Database_TestCase::getDataSet) in /vagrant/www/tests/testMyBase.php on line 4

  • 0

#9 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 11 сентября 2014 - 14:15

Вам необходимо объявить все методы абстрактного класса PHPUnit_Extensions_Database_TestCase, в том числе и getDataSet


  • 0

#10 Maysenka

Maysenka

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

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

Отправлено 12 сентября 2014 - 03:46

Вам необходимо объявить все методы абстрактного класса PHPUnit_Extensions_Database_TestCase, в том числе и getDataSet

 

Так вроде так и сделано.

И я не хочу использовать функцию getDataSet. Поскольку она таблицу наполняет своими данными. А мне нужно просто получить дынные из таблицы. Возможно ли это сделать средствами dbunit?


  • 0

#11 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 12 сентября 2014 - 05:00

Вам надо получить данные из таблицы и потом сравнить с ожидаемыми?

Статья http://habrahabr.ru/post/113872/ поможет


  • 0

#12 Maysenka

Maysenka

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

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

Отправлено 12 сентября 2014 - 05:44

Вам надо получить данные из таблицы и потом сравнить с ожидаемыми?

Статья http://habrahabr.ru/post/113872/ поможет

 

Изучала это. Там написано, что

 

 

 

Вы должны реализовать два абстрактных метода — getConnection() и getDataSet(). Первый необходим для установления соединения с базой, второй для заполнения базы таблицами и заполнения собственно таблиц.

 

Вот как раз заполнение мне и не нужно. Возможно ли без него реализовать?


  • 0

#13 GremHD

GremHD

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

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

Отправлено 12 сентября 2014 - 13:02

Нет, если вы наследуетесь от PHPUnit_Extensions_Database_TestCase


  • 0

#14 razielsd

razielsd

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

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


Отправлено 14 сентября 2014 - 20:59

 

В нашем проекте есть классы для работы с БД, в тестах я пользуюсь ими. Спросите у своих разработчиков.

 

Тесты находятся в отдельном репозитории, где нет данных классов

 

PDO - идет в составе PHP, вам ничего не мешает использовать PDO в коде тестов. Если вам нужно просто в рамках селениум-теста посмотреть, что лежит в базе, тогда PHPUnit_Extensions_Database_TestCase вам не нужен.


  • 0

#15 Maysenka

Maysenka

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

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

Отправлено 15 сентября 2014 - 11:55

Всем спасибо. Решено было просто через PDO реализовывать 


  • 0



Темы с аналогичным тегами database, selenium rc, phpunit

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

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