frlp-utn-ingsoft / orderingg

Aplicación utilizada en la cursada 2018 de Ingenieria de Software. UTN-FRLP
4 stars 20 forks source link

Consulta test selenium #48

Closed EzequielMartin closed 6 years ago

EzequielMartin commented 6 years ago

Buenas, hice el test en selenium que prueba que una fila se borra cuando apreto el boton de borrar. Queria consultar si estaba bien hecho porque me quedo medio croto. Seguramente habia una forma mucho mas facil de resolverlo y me re complique pero creo que anda bien. Tuve que importar una exception: from selenium.common.exceptions import NoSuchElementException Esa exception se produce cuando intento interactuar con algun elemento que no existe. El codigo me quedo asi:

    def test_delete(self):

        o = Order(id= 1)
        db.session.add(o)

        p = Product(id= 1, name= 'Tenedor', price= 50)
        db.session.add(p)

        orderProduct = OrderProduct(order_id= 1, product_id= 1, quantity= 1, product= p)
        db.session.add(orderProduct)
        db.session.commit()

        driver = self.driver
        driver.get(self.baseURL)

        delete_product_button = driver.find_element_by_xpath('/html/body/main/div[2]/div/table/tbody/tr[1]/td[6]/button[2]')
        delete_product_button.click()   
        self.assertRaises(NoSuchElementException, driver.find_element_by_xpath('/html/body/main/div[2]/div/table/tbody/tr[1]').click())

Basicamente agrego un elemento a la base de datos porque esta vacia, despues lo borro usando el boton de borrar y luego assertRaises se fija si la accion que yo realizo ( en mi caso hago click en la fila que acabo de eliminar ) hace que se produzca la exception que le mando como parametro ( en mi caso NoSuchElementException ). Al intentantar clickear la fila que acabo de borrar se produce esa exception, entonces se cumple el assert y el test. Como dije antes es una solucion bastante crota hacer click en algo que recien borre por eso no se si estara bien.

Saludos

RodrigoJacznik commented 6 years ago

Esta casi perfecto, la última línea debería ser:

self.assertRise(NoSuchElementException, driver.find_element_by_xpath, "xpath")

Te dejo link a la doc https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaises

EzequielMartin commented 6 years ago

Joya, ya lo corregi.

Muchas gracias

RodrigoJacznik commented 6 years ago

Genial