Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Junit + Selenium + DB. Тест на проверку значений из базы дынных

database
junit
selenium
Теги: #<Tag:0x00007fedb9af99d0> #<Tag:0x00007fedb9af9868> #<Tag:0x00007fedb9af96b0>

(Ina Q) #1

Всем привет! Стоит задача написать тест, который считывает данные с сайта(артикул+цена) и сравнивает их со значениями в бд. Я считываю данные с сайта записываю их файл txt, затем считываю данные с бд и также сохраняю их в txt потом через junit сравниваю два файла. Но что-то я думаю так неправильно с сохранением данных в txt хотелось бы Ваших советов как правильнее организовать такой тест. Еще вопрос как сделать сортировку по артикулам при считывании с сайта(пока тест работает если артикулы в бд в том же порядке что и на сайте). Буду благодарна за любые советы!


(Богдан Ткаченко) #2

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

art1=pr1
art2=pr3
art3=pr3
что - то типо такого будет у тебя в файле после записи


(vmaximv) #3

А зачем вам DB? У вас какие тесты - integration, e2e?


(Valentin G ) #4

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


(Дмитрий Еремин) #5

Не очень понятно, зачем писать все в файл

  1. Зашли на страницу - собрали список товаров
  2. Сделали запрос в базу - собрали список товаров
  3. Проверяем, что длина списков одинаковая
    4.Средствами jUnit (можно еще и hamcrest подогнать), проверяем, что списки одинаковые
    assertThat(dbCollection, containsInAnyOrder(uiCollection));

(Богдан Ткаченко) #6

может она хочет записать все данные с базы в файл чтобы при запуске тестов не дергать каждый раз бд.


(Дмитрий Еремин) #7

ну такое
если мы уверены, что у нас другие тесты не создают/удаляют/редактируют записи, то, действительно, можно один раз, в начале тестов, собрать инфу из бд и сравнивать.
Но если просочится хотя бы один тест на создание товара - на ui выведется больше товаров, чем мы записали в файл в начале


(Ina Q) #8

Спасибо! Так и сделаю через map)
Я пока новичок в тестировании и в java, поэтому и спросила советов как лучше)
Файл совсем использовать необязательно просто только такая идея пришла в голову, считать данные, затем через компаратор отсортировать и сравнить через Assert.assertEquals(FileUtils.readLines(file1), FileUtils.readLines(file2))


(Danabol) #9

Логика вашего теста неправильная. Ui тестирование не подразумевает проверку данных на сайте с бд. В Ui тестируется отображение, фунционирование. Для ваших целей существует rest api тестирование. Например, unirest на java.


(Богдан Ткаченко) #10

это если есть api у этого магазина и документация к нему, чтобы на endpoint проверять значения цен товаров


(Danabol) #11

Rest api есть у каждого сайта…


(Богдан Ткаченко) #12

я имел в виду открытого документированного api с которым может работать каждый, а rest api это только архитектурный стиль и не более и сайт будет поддерживать стиль rest api если будет выполнять следующие принципы
Клиент-сервер
Единый интерфейс
Отсутствие состояний
Кеширование ответа
Многоуровневая система


(Vatslau) #13

я имел в виду открытого документированного api с которым может работать каждый

1 нажать Ф12 в браузере -таб нетворк
2 открыть сайт
3 запрос скопиравать как курл
4 открыть постман
5 импортировать
6 профит
Для тестирования реста “с нуля” особо дока не нужна(хотя и полезна) все легко проверяется манипуляциями в запросах


(Богдан Ткаченко) #14

Да можно и так, НО сколько времени потребуется, чтобы выискивать в этом списке нужный запрос и разобраться, что он возвращает, в итоге напрашивается вопрос целесообразно ли, тестировать api без доки? Если к примеру вам выдается список из 300 запросов и вы будете искать нужный запрос? Или вам нужно удалить информацию и вы думаете, что инфа удаляется, через метод DELETE, а он удаляется через метод POST и вы сидите и думаете в чем ошибка. Так что тестить api без доки это самоубийство.


(Vatslau) #15

это маст хев
если важен ответ “основной” вопрос
“What are You testing?”

иначе это манкей тестинг - у меня индусы такие заказчика “ой все плехо - мы что-то поменяли в базе и не видим в приложении - баг блекер - ай-я-яй”

смотришь апи юзера - а он не хороший человек не по контракту возвращает значения или возвращает старые данные
Все эскалация на их менеджера и выше
-1 блокер в нас

И это не придуманная фигня - а ежедневная работа


(vmaximv) #16

Мыслите правильно - излагаете грубо. Будьте более терпеливы и корректнее.


(Ina Q) #17

Была задача проверить цены у артикулов, сделала как посоветовал Богдан. Тест работает, где цена не загрузилась приходит соответствующий log. К сожалению, про api и то, что писали выше я пока не понимаю, возможно в будущем, как наберусь опыта, то тест переделаю.

Всем спасибо, кто откликнулся!))


(Anton Tereshko) #18

Думаю все цены у вас указываются из какой-то админки.
Можно тестом сходить в админку, забрать значения и потом уже сравнить с UI