Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Запись результата теста в файл


(Татьяна) #1

Добрый день!
Как водится, только начала изучать автоматизацию (под java), использую Selenium IDE, далее перевожу тест под WebDriver и JUnit 4, закидываю в Eclipse и немного подправляю (гугл+ютуб-обучалки). Вот в чем моя задача.
Есть тест, записаный по вышеуказанной схеме. Задача теста - ежедневная проверка стоимости телефона на странице и составление отчета об изменении цены. Требуется наиболее удобным способом сгенерировать отчет об изменениях.
Я предполагаю, что можно создать текстовый файл на жестком диске (с этим проблем нет), далее нужно получить запись в файле “Цена поменялась с такой-то на такую для такого-то телефона” (страниц для проверки много).
С созданием файла проблем нет. С записью в него - тоже. Я не могу найти способ сохранить старую цену, чтобы при этом и дальше осуществлялась проверка на случай изменения. Цена может меняться каждый день на странице, а может оставаться прежней. В случае, если цены одинаковые, записи в файл быть не должно.
Как грамотно реализовать решение?


(Александр Таранков) #2

Чё-то я не понял зачем сохранять старую цену, если она уже есть в файле? Просто читаешь последнюю цену из файла, сраниваешь с актуальной. Если отличаются, записываешь в файл, если нет, ничего не делаешь. Или в чём вопрос?


(Татьяна) #3

Файл пуст и только создан…


(Александр Таранков) #4

И? В чём загвоздка?


(Александр Таранков) #5

Чтобы грамотно реализовать решение необходимо сначала чётко сформулировать задачу. И это не придирка, а совет. Когда сформулируешь в чём заключается проблема, решение найдётся значительно проще


(Татьяна) #6

Задачу ставила не я… но вроде разобралась с тем, что требуется :smile:
Попробую ещё раз сформулировать. Я проверяю цену на веб странице. Например, сейчас она равна 5 тыс руб.
Я её по всей видимости должна сохранить в файл (как Вы посоветовали выше), а завтра если при проверке обнаружится изменение цены, например станет равной 5.5 тыс руб, то я должна буду это вывести в отчёт.
Получается, уже в другой файл?
Я запуталась и не знаю, как вообще рационально реализовать :frowning:


(Татьяна) #7

Я не понимаю, как работать с этими значениями цены.
По идее, всё закручено на простом условии
if (old_price!= new_price) {
System.out.println("Цена поменялась с " + old_price + " до " + new_price+“для”+“current_handset”);
}


(Александр Таранков) #8

Тут надо смотреть на то как организован отчет: в каком виде для него должны подготавливаться данные. Выясни этот момент. А заодно и цель такого мониторинга. Потому что вполне возможно, что нужен не отчет, а нотификация в момент изменения цены выше/ниже определенной отметки. Например. Я ж не знаю что за задача.

В зависимости от этого уже и с форматом вывода определишься


(Татьяна) #9

В отчете должны фискироваться только телефоны, в которых произошло изменение цены, примерно в таком виде: “Цена поменялась с такой-то на такую для такого-то телефона” . То есть придется иметь дело с разными типами


(Александр Таранков) #10

ЦЕЛЬ КАКАЯ? Ежедневно сообщать об изменении цен на телефоны? Или иметь возможность смотреть динамику за период? Ещё что-то?


(Татьяна) #11

Да, цель в ежедневном мониторинге и отслеживании изменений


(Александр Таранков) #12

Всё, я кажется понял в чём проблема. Сложность в том, что телефонов много и если всю инфу хранить в одном файле, то не понятно как менять значение для конкретного телефона.

Если задачу рассматриваем так, как она сейчас поставлена, то можно сделать так:

  1. хранить всё в одном текстовом (txt, csv, xml) файле
  2. для каждого телефона иметь свой отдельный файлик со значением последней цены и складировать файлы в одной директории
  3. хранить всё в одном файле sqlite-БД

Я бы выбрал последний вариант - работать с sqlite очень просто. Правда есть сложность, что формат файла не текстовый, так что просто его скормить скажем в Excel не получится, надо будет предварительно сформировать на основании данных из файла CSV-файл. Но зато работать с БД проще при поиске и обновлении данных по ценам, чем с текстовым файлом.

Второй вариант проще в реализации, чем первый, но для построения отчета ещё менее удобен, чем третий. Я бы такой не стал делать.

Первый вариант можно сделать, если есть боязнь БД и не хочется разбираться. В этом случае я бы сделал CSV-файлик в формате

Телефон, Цена
IPhone 5s 16G, 15000
iPhone 5s 32G, 20000
… и т.д.

Считываешь значения из него в HashMap и работаешь с мапой, обновляя все значения какие надо. По окончании записываешь значения из мапы в файл в том же формате, поверх.


(Татьяна) #13

Спасибо за предложенный вариант!
Теперь другая проблема… Знания sqlite-БД также оставляют желать лучшего. Буду гуглить, учиться :smile:
План дальнейших моих действий ясен, спасибо большое!
При возникновении вопросов, буду уже писать в соответствующую тему.