Всем привет! Стоит задача написать тест, который считывает данные с сайта(артикул+цена) и сравнивает их со значениями в бд. Я считываю данные с сайта записываю их файл txt, затем считываю данные с бд и также сохраняю их в txt потом через junit сравниваю два файла. Но что-то я думаю так неправильно с сохранением данных в txt хотелось бы Ваших советов как правильнее организовать такой тест. Еще вопрос как сделать сортировку по артикулам при считывании с сайта(пока тест работает если артикулы в бд в том же порядке что и на сайте). Буду благодарна за любые советы!
запиши все данные в (запихай для начала все данные в мапу отсортируй по ключу, ключ у тебя будет твой артикул) проперти файл, тоже самое и с данными с бд делай, потом в junit считываешь каждое значение артикула и цены с сайта и бд и сравниваешь.
art1=pr1
art2=pr3
art3=pr3
что - то типо такого будет у тебя в файле после записи
А зачем вам DB? У вас какие тесты - integration, e2e?
Похожее задание делал, я заходил на страницу, затем делал запрос к базе, и сразу сверял, то что есть на UI с тем что есть в базе.
Не очень понятно, зачем писать все в файл
- Зашли на страницу - собрали список товаров
- Сделали запрос в базу - собрали список товаров
- Проверяем, что длина списков одинаковая
4.Средствами jUnit (можно еще и hamcrest подогнать), проверяем, что списки одинаковые
assertThat(dbCollection, containsInAnyOrder(uiCollection));
может она хочет записать все данные с базы в файл чтобы при запуске тестов не дергать каждый раз бд.
ну такое
если мы уверены, что у нас другие тесты не создают/удаляют/редактируют записи, то, действительно, можно один раз, в начале тестов, собрать инфу из бд и сравнивать.
Но если просочится хотя бы один тест на создание товара - на ui выведется больше товаров, чем мы записали в файл в начале
Спасибо! Так и сделаю через map)
Я пока новичок в тестировании и в java, поэтому и спросила советов как лучше)
Файл совсем использовать необязательно просто только такая идея пришла в голову, считать данные, затем через компаратор отсортировать и сравнить через Assert.assertEquals(FileUtils.readLines(file1), FileUtils.readLines(file2))
Логика вашего теста неправильная. Ui тестирование не подразумевает проверку данных на сайте с бд. В Ui тестируется отображение, фунционирование. Для ваших целей существует rest api тестирование. Например, unirest на java.
это если есть api у этого магазина и документация к нему, чтобы на endpoint проверять значения цен товаров
Rest api есть у каждого сайта…
я имел в виду открытого документированного api с которым может работать каждый, а rest api это только архитектурный стиль и не более и сайт будет поддерживать стиль rest api если будет выполнять следующие принципы
Клиент-сервер
Единый интерфейс
Отсутствие состояний
Кеширование ответа
Многоуровневая система
я имел в виду открытого документированного api с которым может работать каждый
1 нажать Ф12 в браузере -таб нетворк
2 открыть сайт
3 запрос скопиравать как курл
4 открыть постман
5 импортировать
6 профит
Для тестирования реста “с нуля” особо дока не нужна(хотя и полезна) все легко проверяется манипуляциями в запросах
Да можно и так, НО сколько времени потребуется, чтобы выискивать в этом списке нужный запрос и разобраться, что он возвращает, в итоге напрашивается вопрос целесообразно ли, тестировать api без доки? Если к примеру вам выдается список из 300 запросов и вы будете искать нужный запрос? Или вам нужно удалить информацию и вы думаете, что инфа удаляется, через метод DELETE, а он удаляется через метод POST и вы сидите и думаете в чем ошибка. Так что тестить api без доки это самоубийство.
это маст хев
если важен ответ “основной” вопрос
“What are You testing?”
иначе это манкей тестинг - у меня индусы такие заказчика “ой все плехо - мы что-то поменяли в базе и не видим в приложении - баг блекер - ай-я-яй”
смотришь апи юзера - а он не хороший человек не по контракту возвращает значения или возвращает старые данные
Все эскалация на их менеджера и выше
-1 блокер в нас
И это не придуманная фигня - а ежедневная работа
Мыслите правильно - излагаете грубо. Будьте более терпеливы и корректнее.
Была задача проверить цены у артикулов, сделала как посоветовал Богдан. Тест работает, где цена не загрузилась приходит соответствующий log. К сожалению, про api и то, что писали выше я пока не понимаю, возможно в будущем, как наберусь опыта, то тест переделаю.
Всем спасибо, кто откликнулся!))
Думаю все цены у вас указываются из какой-то админки.
Можно тестом сходить в админку, забрать значения и потом уже сравнить с UI