Python 3.7.5, Selenium 3.141.0
На данный момент я изучаю автоматизацию и параллельно занимаюсь автоматизацией тестирования одного из проектов на работе (В компании я первый и единственный тестировщик, работаю 4 месяца, поэтому задать вопрос старшим коллегам и покопаться в реальном проекте не имеется возможным)
Необходимо реализовать проверку корректной работы функционала корзины, а именно изменение размера. Как правильно реализовать работу с элементом Select (что-то рабочее я сделать могу, но мне интересно, как это сделать "правильно" и "вкусно" с точки зрения архитектуры) ?
Шаблон теста:
def test_guest_can_resize_the_product_in_the_cart(browser): cart_page = CartPage(browser, InputValues.LINK) cart_page.open_cart_with_a_random_product() //Открываем корзину с продуктом next_size = cart_page.get_size(1) // считываем размер товара, который будет выбран cart_page.select_size(1) // меняем размер cart_page.reload() // перезагружаем страницу new_size = cart_page.get_current_size() // считываем размер товара после изменения cart_page.check_product_size(next_size, new_size) // проверяем, что изменения прошли успешно
Суть вопроса, как лучше работать с объектом Select, каждый раз создавать новый объект внутри каждого метода работы со списком:
class CartPage(ProductDetailPage): def select_size(self, value): select = Select(self.browser.find_element*CartPageLocators.SELECT_SIZE) select.select_by_index(value)
Или реализовать хранение Select внутри самого теста, передавая его каждый раз в методы:
def test_guest_can_resize_the_product_in_the_cart(browser): cart_page = CartPage(browser, InputValues.LINK) cart_page.open_cart_with_a_random_product() //Открываем корзину с продуктом sizing_object = cart_page.get_size() // ВОЗВРАЩАЕМ объект Select cart_page.select_size(sizing_object, 1) // меняем размер cart_page.reload() // перезагружаем страницу new_size = cart_page.get_current_size(sizing_object) // считываем размер товара после изменения cart_page.check_product_size(next_size, new_size) /проверяем, что изменения прошли успешно
или есть более оптимальные методы решения данной задачи?
Критику и советы крайне приветствую