├── Automation ├── PageObjectsPackage ├── LoginPage.py ├── RegistrationPage.py ├── __init__.py └── __pycache__ │ ├── LoginPage.cpython-36.pyc │ ├── RegistrationPage.cpython-36.pyc │ └── __init__.cpython-36.pyc ├── README.md ├── TestPackage ├── TestClass.py ├── __init__.py └── __pycache__ │ ├── TestClass.cpython-36-PYTEST.pyc │ └── __init__.cpython-36.pyc ├── UtilityPackage ├── CustomLogger.py ├── SeleniumDriver.py ├── __init__.py └── __pycache__ │ ├── CustomLogger.cpython-36.pyc │ ├── SeleniumDriver.cpython-36.pyc │ └── __init__.cpython-36.pyc └── htmlreport.html /Automation: -------------------------------------------------------------------------------- 1 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Element found with locator: user[login] and locatorType: id 2 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Sent data on element with locator: user[login] locatorType: id 3 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Element found with locator: user[email] and locatorType: id 4 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Sent data on element with locator: user[email] locatorType: id 5 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Element found with locator: user[password] and locatorType: id 6 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Sent data on element with locator: user[password] locatorType: id 7 | 10/11/2017 02:08:49 PM - SeleniumDriver - INFO: Element found with locator: //button[@type='submit'] and locatorType: xpath 8 | 10/11/2017 02:08:51 PM - SeleniumDriver - INFO: Clicked on element with locator: //button[@type='submit'] locatorType: xpath 9 | 10/11/2017 02:08:54 PM - SeleniumDriver - INFO: Element not found with locator: //p[@class='shelf-lead'] and locatorType: xpath 10 | 10/11/2017 02:08:54 PM - SeleniumDriver - INFO: Element not present with locator: //p[@class='shelf-lead'] locatorType: xpath 11 | 10/11/2017 02:08:54 PM - SeleniumDriver - INFO: Element found with locator: //a[@href='/login'] and locatorType: xpath 12 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Clicked on element with locator: //a[@href='/login'] locatorType: xpath 13 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Element found with locator: login_field and locatorType: id 14 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Sent data on element with locator: login_field locatorType: id 15 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Element found with locator: password and locatorType: id 16 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Sent data on element with locator: password locatorType: id 17 | 10/11/2017 02:08:55 PM - SeleniumDriver - INFO: Element found with locator: commit and locatorType: name 18 | 10/11/2017 02:08:56 PM - SeleniumDriver - INFO: Clicked on element with locator: commit locatorType: name 19 | 10/11/2017 02:09:04 PM - SeleniumDriver - INFO: Element not found with locator: //p[@class='shelf-lead'] and locatorType: xpath 20 | 10/11/2017 02:09:04 PM - SeleniumDriver - INFO: Element not present with locator: //p[@class='shelf-lead'] locatorType: xpath 21 | 10/11/2017 02:09:04 PM - SeleniumDriver - INFO: Element found with locator: //a[@href='/login'] and locatorType: xpath 22 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Clicked on element with locator: //a[@href='/login'] locatorType: xpath 23 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Element found with locator: login_field and locatorType: id 24 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Sent data on element with locator: login_field locatorType: id 25 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Element found with locator: password and locatorType: id 26 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Sent data on element with locator: password locatorType: id 27 | 10/11/2017 02:09:05 PM - SeleniumDriver - INFO: Element found with locator: commit and locatorType: name 28 | 10/11/2017 02:09:06 PM - SeleniumDriver - INFO: Clicked on element with locator: commit locatorType: name 29 | 10/11/2017 02:09:14 PM - SeleniumDriver - INFO: Element not found with locator: //p[@class='shelf-lead'] and locatorType: xpath 30 | 10/11/2017 02:09:14 PM - SeleniumDriver - INFO: Element not present with locator: //p[@class='shelf-lead'] locatorType: xpath 31 | 10/11/2017 02:09:14 PM - SeleniumDriver - INFO: Element found with locator: //a[@href='/login'] and locatorType: xpath 32 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Clicked on element with locator: //a[@href='/login'] locatorType: xpath 33 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Element found with locator: login_field and locatorType: id 34 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Sent data on element with locator: login_field locatorType: id 35 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Element found with locator: password and locatorType: id 36 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Sent data on element with locator: password locatorType: id 37 | 10/11/2017 02:09:15 PM - SeleniumDriver - INFO: Element found with locator: commit and locatorType: name 38 | 10/11/2017 02:09:16 PM - SeleniumDriver - INFO: Clicked on element with locator: commit locatorType: name 39 | 10/11/2017 02:09:21 PM - SeleniumDriver - INFO: Element found with locator: //p[@class='shelf-lead'] and locatorType: xpath 40 | 10/11/2017 02:09:21 PM - SeleniumDriver - INFO: Element present with locator: //p[@class='shelf-lead'] locatorType: xpath 41 | -------------------------------------------------------------------------------- /PageObjectsPackage/LoginPage.py: -------------------------------------------------------------------------------- 1 | from UtilityPackage.SeleniumDriver import SeleniumDriver 2 | 3 | 4 | """ 5 | LoginToGithub class : Page class which contains all the methods and variables. 6 | All the methods can be re-used by creating object of this class and calling as object.method() 7 | to execute the test case. 8 | Methods defined here are used in TestClass to validate the github login functionality. 9 | """ 10 | 11 | class LoginToGithub(SeleniumDriver): 12 | 13 | def __init__(self, driver): 14 | super().__init__(driver) 15 | self.driver = driver 16 | 17 | #Locators in login page for github #Locator types for reference 18 | _LoginLink = "//a[@href='/login']" #xpath 19 | _EmailField = "login_field" #id 20 | _PasswordField = "password" #id 21 | _SignInButton = "commit" #name 22 | _VerifyLogin = "//p[@class='shelf-lead']" #xpath 23 | 24 | 25 | def ClickLoginLink(self): 26 | self.elementClick(self._LoginLink, locatorType="xpath") 27 | 28 | def FillEmailField(self, email): 29 | self.sendKeys(email, self._EmailField, locatorType="id") 30 | 31 | def FillPasswordField(self, password): 32 | self.sendKeys(password, self._PasswordField, locatorType="id") 33 | 34 | def ClickSignInbutton(self): 35 | self.elementClick(self._SignInButton, locatorType="name") 36 | 37 | def VerifyLogin(self): 38 | element = self.isElementPresent(self._VerifyLogin, locatorType="xpath") 39 | return element 40 | 41 | def UserLogin(self, email, password): 42 | self.ClickLoginLink() 43 | self.FillEmailField(email) 44 | self.FillPasswordField(password) 45 | self.ClickSignInbutton() 46 | -------------------------------------------------------------------------------- /PageObjectsPackage/RegistrationPage.py: -------------------------------------------------------------------------------- 1 | from UtilityPackage.SeleniumDriver import SeleniumDriver 2 | 3 | 4 | """ 5 | Registration class : Page class which contains all the methods and variables 6 | to locate the elements of the registration page in github. 7 | These methods can be re-used to validate the registration to github by 8 | creating instance or object of this class and calling (like object.method()) 9 | to validate the registration test case with any given user name, email and password 10 | """ 11 | 12 | class Registration(SeleniumDriver): 13 | 14 | def __init__(self, driver): 15 | super().__init__(driver) 16 | self.driver = driver 17 | 18 | #Locators in registration page to github #Locator types for reference 19 | _UserNameField = "user[login]" #id 20 | _EmailField = "user[email]" #id 21 | _PasswordField = "user[password]" #id 22 | _SignUpButton = "//button[@type='submit']" #xpath 23 | _VerifyRegistration = "//p[@class='shelf-lead']" 24 | 25 | 26 | def FillUserNameField(self, username): 27 | self.sendKeys(username, self._UserNameField, locatorType="id") 28 | 29 | def FillEmailField(self, email): 30 | self.sendKeys(email, self._EmailField, locatorType="id") 31 | 32 | def FillPasswordField(self, password): 33 | self.sendKeys(password, self._PasswordField, locatorType="id") 34 | 35 | def ClickSignUpbutton(self): 36 | self.elementClick(self._SignUpButton, locatorType="xpath") 37 | 38 | def UserRegistration(self, username, email, password): 39 | self.FillUserNameField(username) 40 | self.FillEmailField(email) 41 | self.FillPasswordField(password) 42 | self.ClickSignUpbutton() 43 | 44 | def VerifyRegistration(self): 45 | element = self.isElementPresent(self._VerifyRegistration, locatorType="xpath") 46 | return element 47 | 48 | -------------------------------------------------------------------------------- /PageObjectsPackage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/PageObjectsPackage/__init__.py -------------------------------------------------------------------------------- /PageObjectsPackage/__pycache__/LoginPage.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/PageObjectsPackage/__pycache__/LoginPage.cpython-36.pyc -------------------------------------------------------------------------------- /PageObjectsPackage/__pycache__/RegistrationPage.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/PageObjectsPackage/__pycache__/RegistrationPage.cpython-36.pyc -------------------------------------------------------------------------------- /PageObjectsPackage/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/PageObjectsPackage/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Page Object model Test automation framework using Selenium with python- 2 | 3 | ********Instructions to execute the test automation.************************ 4 | 5 | 1) Requirements and installation to run the tests 6 | 7 | Install Python and set up. 8 | Install plugins for pytest, html report and ordering 9 | Use below commands to install required plugins 10 | 11 | **************If you are using python 3.x***************** 12 | pip3 install pytest 13 | pip3 install pytest-ordering 14 | pip3 install pytest-html 15 | 16 | 17 | **************If you are using python 2.x***************** 18 | pip install pytest 19 | pip install pytest-ordering 20 | pip install pytest-html 21 | 22 | 2) How to run the test 23 | Down load the project and navigate to project folder ie Page-Object-Model-Framework 24 | Provide valid credentials in the TestClass.py in the place of 25 | parameter1 26 | parameter2 27 | parameter3 28 | (Due to security reasons, credentials are not provided in the script) 29 | 30 | Use below command to run the test and generate the report 31 | 32 | py.test -s -v TestPackage/TestClass.py --html=Htmlreport.html 33 | -------------------------------------------------------------------------------- /TestPackage/TestClass.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from PageObjectsPackage.RegistrationPage import Registration 3 | from PageObjectsPackage.LoginPage import LoginToGithub 4 | import unittest 5 | import pytest 6 | import time 7 | 8 | 9 | class Github_Login_Functionality_validation(unittest.TestCase): 10 | baseURL = "https://github.com/" 11 | driver = webdriver.Firefox() 12 | driver.maximize_window() 13 | driver.implicitly_wait(3) 14 | driver.get(baseURL) 15 | rp = Registration(driver) 16 | lp = LoginToGithub(driver) 17 | 18 | 19 | """ 20 | Test case 1 : Registration test case to Github. 21 | Use valid user name, email and password to test the test case to register to github. 22 | parameter1 : is user name 23 | parameter2 : is email 24 | parameter3 : is password 25 | """ 26 | @pytest.mark.run(order=1) 27 | def test_Registration(self): 28 | self.driver.get(self.baseURL) 29 | self.rp.UserRegistration("parameter1", "parameter2", "parameter3") 30 | result = self.rp.VerifyRegistration() 31 | assert result == True 32 | self.driver.quit() 33 | 34 | 35 | 36 | """ 37 | Test case 2 : Login test to Github with valid credentials. 38 | Due to security reasons, user name and password are not provided in the script. 39 | Use valid user name and password to test the test case to login to github. 40 | parameter1 : is user name or email 41 | parameter2 : is password 42 | """ 43 | @pytest.mark.run(order=4) 44 | def test_Login_with_valid_credentials(self): 45 | self.driver.get(self.baseURL) 46 | self.lp.UserLogin("parameter1", "parameter2") 47 | time.sleep(5) 48 | result=self.lp.VerifyLogin() 49 | assert result==True 50 | self.driver.quit() 51 | 52 | 53 | """ 54 | Test case 3 : Login test to Github with Invalid User name. 55 | Use Invalid user name and and valid password to test the test case to login to github. 56 | parameter1 : is user name or email 57 | parameter2 : is password 58 | """ 59 | @pytest.mark.run(order=2) 60 | def test_Login_with_Invalid_UserName(self): 61 | self.driver.get(self.baseURL) 62 | self.lp.UserLogin("parameter1", "parameter2") 63 | time.sleep(5) 64 | result=self.lp.VerifyLogin() 65 | assert result==True 66 | self.driver.quit() 67 | 68 | 69 | """ 70 | Test case 4 : Login test to Github with valid user name and Invalid password. 71 | Use valid user name and Invalid password to test the test case to login to github. 72 | parameter1 : is user name or email 73 | parameter2 : is password 74 | """ 75 | @pytest.mark.run(order=3) 76 | def test_Login_with_Invalid_Password(self): 77 | self.driver.get(self.baseURL) 78 | self.lp.UserLogin("parameter1", "parameter2") 79 | time.sleep(5) 80 | result=self.lp.VerifyLogin() 81 | assert result==True 82 | self.driver.quit() -------------------------------------------------------------------------------- /TestPackage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/TestPackage/__init__.py -------------------------------------------------------------------------------- /TestPackage/__pycache__/TestClass.cpython-36-PYTEST.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/TestPackage/__pycache__/TestClass.cpython-36-PYTEST.pyc -------------------------------------------------------------------------------- /TestPackage/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/TestPackage/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /UtilityPackage/CustomLogger.py: -------------------------------------------------------------------------------- 1 | import inspect 2 | import logging 3 | 4 | def customLogger(logLevel=logging.DEBUG): 5 | # Gets the name of the class / method from where this method is called 6 | loggerName = inspect.stack()[1][3] 7 | logger = logging.getLogger(loggerName) 8 | # By default, log all messages 9 | logger.setLevel(logging.DEBUG) 10 | 11 | fileHandler = logging.FileHandler("Automation".format(loggerName), mode='w') 12 | fileHandler.setLevel(logLevel) 13 | 14 | formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s: %(message)s', 15 | datefmt='%m/%d/%Y %I:%M:%S %p') 16 | fileHandler.setFormatter(formatter) 17 | logger.addHandler(fileHandler) 18 | 19 | return logger -------------------------------------------------------------------------------- /UtilityPackage/SeleniumDriver.py: -------------------------------------------------------------------------------- 1 | from selenium.webdriver.common.by import By 2 | from traceback import print_stack 3 | from selenium.webdriver.support.ui import WebDriverWait 4 | from selenium.webdriver.support import expected_conditions as EC 5 | from selenium.common.exceptions import * 6 | import UtilityPackage.CustomLogger as cl 7 | import logging 8 | import time 9 | import os 10 | 11 | """ 12 | Customized Selenium WebDriver class which contains all the useful methods that can be re used. 13 | These methods help to in the following cases: 14 | To reduce the time required to write automation script. 15 | To take the screenshot in case of test case failure. 16 | To log 17 | To provide waits 18 | 19 | """ 20 | class SeleniumDriver(): 21 | 22 | log = cl.customLogger(logging.DEBUG) 23 | 24 | def __init__(self, driver): 25 | self.driver = driver 26 | 27 | def screenShot(self, resultMessage): 28 | fileName = resultMessage + "." + str(round(time.time() * 1000)) + ".png" 29 | screenshotDirectory = "../screenshots/" 30 | relativeFileName = screenshotDirectory + fileName 31 | currentDirectory = os.path.dirname(__file__) 32 | destinationFile = os.path.join(currentDirectory, relativeFileName) 33 | destinationDirectory = os.path.join(currentDirectory, screenshotDirectory) 34 | 35 | try: 36 | if not os.path.exists(destinationDirectory): 37 | os.makedirs(destinationDirectory) 38 | self.driver.save_screenshot(destinationFile) 39 | self.log.info("Screenshot save to directory: " + destinationFile) 40 | except: 41 | self.log.error("### Exception Occurred when taking screenshot") 42 | print_stack() 43 | 44 | def getTitle(self): 45 | return self.driver.title 46 | 47 | def getByType(self, locatorType): 48 | locatorType = locatorType.lower() 49 | if locatorType == "id": 50 | return By.ID 51 | elif locatorType == "name": 52 | return By.NAME 53 | elif locatorType == "xpath": 54 | return By.XPATH 55 | elif locatorType == "css": 56 | return By.CSS_SELECTOR 57 | elif locatorType == "class": 58 | return By.CLASS_NAME 59 | elif locatorType == "link": 60 | return By.LINK_TEXT 61 | else: 62 | self.log.info("Locator type " + locatorType + 63 | " not correct/supported") 64 | return False 65 | 66 | def getElement(self, locator, locatorType="id"): 67 | element = None 68 | try: 69 | locatorType = locatorType.lower() 70 | byType = self.getByType(locatorType) 71 | element = self.driver.find_element(byType, locator) 72 | self.log.info("Element found with locator: " + locator + 73 | " and locatorType: " + locatorType) 74 | except: 75 | self.log.info("Element not found with locator: " + locator + 76 | " and locatorType: " + locatorType) 77 | return element 78 | 79 | def elementClick(self, locator, locatorType="id"): 80 | try: 81 | element = self.getElement(locator, locatorType) 82 | element.click() 83 | self.log.info("Clicked on element with locator: " + locator + 84 | " locatorType: " + locatorType) 85 | except: 86 | self.log.info("Cannot click on the element with locator: " + locator + 87 | " locatorType: " + locatorType) 88 | print_stack() 89 | 90 | def sendKeys(self, data, locator, locatorType="id"): 91 | try: 92 | element = self.getElement(locator, locatorType) 93 | element.send_keys(data) 94 | self.log.info("Sent data on element with locator: " + locator + 95 | " locatorType: " + locatorType) 96 | except: 97 | self.log.info("Cannot send data on the element with locator: " + locator + 98 | " locatorType: " + locatorType) 99 | print_stack() 100 | 101 | def isElementPresent(self, locator, locatorType="id"): 102 | try: 103 | element = self.getElement(locator, locatorType) 104 | if element is not None: 105 | self.log.info("Element present with locator: " + locator + 106 | " locatorType: " + locatorType) 107 | return True 108 | else: 109 | self.log.info("Element not present with locator: " + locator + 110 | " locatorType: " + locatorType) 111 | return False 112 | except: 113 | print("Element not found") 114 | return False 115 | 116 | def elementPresenceCheck(self, locator, byType): 117 | try: 118 | elementList = self.driver.find_elements(byType, locator) 119 | if len(elementList) > 0: 120 | self.log.info("Element present with locator: " + locator + 121 | " locatorType: " + str(byType)) 122 | return True 123 | else: 124 | self.log.info("Element not present with locator: " + locator + 125 | " locatorType: " + str(byType)) 126 | return False 127 | except: 128 | self.log.info("Element not found") 129 | return False 130 | 131 | def waitForElement(self, locator, locatorType="id", 132 | timeout=10, pollFrequency=0.5): 133 | element = None 134 | try: 135 | byType = self.getByType(locatorType) 136 | self.log.info("Waiting for maximum :: " + str(timeout) + 137 | " :: seconds for element to be clickable") 138 | wait = WebDriverWait(self.driver, 10, poll_frequency=1, 139 | ignored_exceptions=[NoSuchElementException, 140 | ElementNotVisibleException, 141 | ElementNotSelectableException]) 142 | element = wait.until(EC.element_to_be_clickable((byType, 143 | "stopFilter_stops-0"))) 144 | self.log.info("Element appeared on the web page") 145 | except: 146 | self.log.info("Element not appeared on the web page") 147 | print_stack() 148 | return element 149 | -------------------------------------------------------------------------------- /UtilityPackage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/UtilityPackage/__init__.py -------------------------------------------------------------------------------- /UtilityPackage/__pycache__/CustomLogger.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/UtilityPackage/__pycache__/CustomLogger.cpython-36.pyc -------------------------------------------------------------------------------- /UtilityPackage/__pycache__/SeleniumDriver.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/UtilityPackage/__pycache__/SeleniumDriver.cpython-36.pyc -------------------------------------------------------------------------------- /UtilityPackage/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RameshGhk/Page-Object-Model-Framework/823a3c951d4a4d1285ec154fc9bc7241592a25b6/UtilityPackage/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /htmlreport.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Report generated on 11-Oct-2017 at 14:09:21 by pytest-html v1.16.0
232 |JAVA_HOME | 236 |C:\Program Files\Java\jdk1.8.0_144 |
Packages | 239 |{'pytest': '3.2.3', 'py': '1.4.34', 'pluggy': '0.4.0'} |
Platform | 242 |Windows-10-10.0.15063-SP0 |
Plugins | 245 |{'ordering': '0.5', 'metadata': '1.5.0', 'html': '1.16.0'} |
Python | 248 |3.6.2 |
4 tests ran in 40.56 seconds.
251 |(Un)check the boxes to filter the results.
1 passed, 0 skipped, 3 failed, 0 errors, 0 expected failures, 0 unexpected passes 252 |Result | 257 |Test | 258 |Duration | 259 |Links |
---|---|---|---|
No results found. Try to check the filters | |||
Failed | 265 |TestPackage/TestClass.py::Github_Login_Functionality_validation::test_Registration | 266 |4.91 | 267 ||
270 | self = <TestPackage.TestClass.Github_Login_Functionality_validation testMethod=test_Registration> @pytest.mark.run(order=1) def test_Registration(self): self.driver.get(self.baseURL) self.rp.UserRegistration("Rameshroppa", "ramesh.roppapvg@gmail.com", "Rameshghk@2017") result = self.rp.VerifyRegistration() > assert result == True E AssertionError: assert False == True TestPackage\TestClass.py:31: AssertionError | |||
Failed | 274 |TestPackage/TestClass.py::Github_Login_Functionality_validation::test_Login_with_Invalid_UserName | 275 |10.05 | 276 ||
279 | self = <TestPackage.TestClass.Github_Login_Functionality_validation testMethod=test_Login_with_Invalid_UserName> @pytest.mark.run(order=2) def test_Login_with_Invalid_UserName(self): self.driver.get(self.baseURL) self.lp.UserLogin("ramesXXXXXX@gmail.com", "ValidPassword") time.sleep(5) result=self.lp.VerifyLogin() > assert result==True E AssertionError: assert False == True TestPackage\TestClass.py:65: AssertionError | |||
Failed | 283 |TestPackage/TestClass.py::Github_Login_Functionality_validation::test_Login_with_Invalid_Password | 284 |10.01 | 285 ||
288 | self = <TestPackage.TestClass.Github_Login_Functionality_validation testMethod=test_Login_with_Invalid_Password> @pytest.mark.run(order=3) def test_Login_with_Invalid_Password(self): self.driver.get(self.baseURL) self.lp.UserLogin("ramesh.ghk2020@gmail.com", "XXXXXXX") time.sleep(5) result=self.lp.VerifyLogin() > assert result==True E AssertionError: assert False == True TestPackage\TestClass.py:81: AssertionError | |||
Passed | 292 |TestPackage/TestClass.py::Github_Login_Functionality_validation::test_Login_with_valid_credentials | 293 |7.68 | 294 ||
297 | No log output captured. |