I recently designed a Automation Framework using Selenium Webdriver and Python. Everything was working fine until few days back when we realized that we have some test cases which verifies back-end and doesn't require browser to be opened. I never knew this while I was designing the framework, and so I wrote one common Setup and Teardown, now problem is it opens the browser and does so many other stuffs even for the test cases which doesn't require it.
So, I came up with solution, I wrote down two decorators, one for UI test cases and one for backend test cases.
Following is the code.
So, I came up with solution, I wrote down two decorators, one for UI test cases and one for backend test cases.
Following is the code.
import traceback
import unittest
from selenium import webdriver
class AppManager(unittest.TestCase):
def setup_func(self, url):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
if url is not None:
self.driver.get("http://google.com")
def teardown_func(self):
self.driver.close()
@staticmethod
def gui_test(url=None):
def wrapper(func):
def deco_func(self):
#Setup
self.setup_func(url)
#Your Test case
try:
func(self)
except Exception as e:
print traceback.print_exc()
self.teardown_func()
self.teardown_func()
#TearDown
return deco_func
return wrapper
@staticmethod
def backend_test(func):
def deco_func(self):
#Setup
#TODO add setup stpes
#Your Test case
func(self)
#TearDown
#TODO Add teardown steps
return deco_func
How to use this decorator
class Demo(AppManager):
@AppManager.gui_test(url="http://www.google.com")
def test_setup(self):
#self.driver.get("http://google.com")
search_editbox =self.driver.find_element_by_name("q").submit()
search_editbox.send_keys("gaurang")
search_editbox.submit()
0 comments:
Post a Comment