Les comparto el código ya con documentación.
Assertions
import unittest
from selenium import webdriver
#sirve como excepción para los assertions cuando queremos
#validar la presencia de un elemento
from selenium.common.exceptions import NoSuchElementException
#ayuda a llamar a las excepciones que queremos validar
from selenium.webdriver.common.by import By
class AssertionsTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe')
driver = self.driver
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("http://demo.onestepcheckout.com/")
def test_search_field(self):
self.assertTrue(self.is_element_present(By.NAME, 'q'))
def test_language_option(self):
self.assertTrue(self.is_element_present(By.ID, 'select-language'))
def tearDown(self):
self.driver.quit()
#para saber si está presente el elemento
#how: tipo de selector
#what: el valor que tiene
def is_element_present(self, how, what):
try: #busca los elementos según el parámetro
self.driver.find_element(by = how, value = what)
except NoSuchElementException as variable:
return False
return True
Search tests
import unittest
from pyunitreport import HTMLTestRunner
from selenium import webdriver
class SearchTests(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe')
driver = self.driver
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("http://demo.onestepcheckout.com")
def test_search_tee(self):
driver = self.driver
search_field = driver.find_element_by_name('q')
search_field.clear() #limpia el campo de búsqueda en caso de que haya algún texto.
search_field.send_keys('tee') #simulamos la escritura del teclado para poner "tee"
search_field.submit() #envía los datos ('tee') para que la página muestre los resultados de "tee"
def test_search_salt_shaker(self):
driver = self.driver
search_field = driver.find_element_by_name('q')
search_field.send_keys('salt shaker') #escribimos 'salt shaker' en la barra de búsqueda
search_field.submit() #envíamos la petición
#hago una lista de los resultados buscando los elementos por su Xpath. Es la forma más rápida.
products = driver.find_elements_by_xpath('//*[@id="top"]/body/div/div[2]/div[2]/div/div[2]/div[2]/div[3]/ul/li/div/h2/a')
#vamos a preguntar si la cantidad de resultados es igual a 1
self.assertEqual(1, len(products))
def tearDown(self):
self.driver.quit()
Smoke tests
from unittest import TestLoader, TestSuite
from pyunitreport import HTMLTestRunner #para generar el reporte
from assertions import AssertionsTest
from search_tests_assertions import SearchTests
assertions_test = TestLoader().loadTestsFromTestCase(AssertionsTest)
search_tests = TestLoader().loadTestsFromTestCase(SearchTests)
#contruimos la suite de pruebas
smoke_test = TestSuite([assertions_test, search_tests])
#para generar los reporters
kwargs = {
"output": 'smoke-report'
}
#la variable runner almacena un reporte generado por HTMLTestRuner
#usa como argumento "kwarsp"
runner = HTMLTestRunner(**kwargs)
#corro el rurner con la suite de prueba
runner.run(smoke_test)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.