From a87c741c137446b7da38d42e6824f2de138692f9 Mon Sep 17 00:00:00 2001 From: newtechAI Date: Wed, 27 Dec 2023 22:29:25 +0100 Subject: [PATCH] Update test case script with improvements - Removing unused statement. - Testing already existing accounts. --- test/SeleniumNeil/test_cases.py | 206 +++++++++++++++----------------- 1 file changed, 98 insertions(+), 108 deletions(-) diff --git a/test/SeleniumNeil/test_cases.py b/test/SeleniumNeil/test_cases.py index 8d5bc6b..6949c09 100644 --- a/test/SeleniumNeil/test_cases.py +++ b/test/SeleniumNeil/test_cases.py @@ -1,72 +1,79 @@ +# Each time you run the test script reset the database. +# For this test script you won't need it since it changes +# the Ta's email and name automatically import re import time import pytest +from faker import Faker from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC -@pytest.mark.generate_password_1 -def test_createTA(): - - driver_open = webdriver.Chrome() - driver_open.maximize_window() +faker = Faker() +@pytest.mark.skip(reason="function to be used in the test_scripts") +def createTA(driver, TA_name, emails, password): + full_name = driver.find_element('name', 'fullname') + full_name.send_keys(TA_name) + email = driver.find_element('name', 'email') + email.send_keys(emails) + pas = driver.find_element('name', 'password') + pas.send_keys(password) + usr_type = driver.find_element('name', 'type') + usr_type.click() + click_create = driver.find_element('name', 'create_btn') + click_create.click() +def login_lecturer(drivers): # Open the website - driver_open.get("http://localhost/lrr/") + drivers.get("http://localhost/lrr/") + drivers.maximize_window() - username_input = driver_open.find_element('name', "user") + username_input = drivers.find_element('name', "user") - password_input = driver_open.find_element('name', "password") + password_input = drivers.find_element('name', "password") - login_button = driver_open.find_element('id', "login_btn") + login_button = drivers.find_element('id', "login_btn") - # login as a TA + # login as a Lecturer username_input.send_keys("lanhui@qq.com") password_input.send_keys("nil1234H@") # Click the login button + time.sleep(5) login_button.click() - admin_tab = driver_open.find_element('id', 'admin_tab') + admin_tab = drivers.find_element('id', 'admin_tab') admin_tab.click() - print("login sucessfully") - cte_instructor = driver_open.find_element('id', 'tab_ins_accounts') + + cte_instructor = drivers.find_element('id', 'tab_ins_accounts') cte_instructor.click() - print(" everything is ok here ") - t = time.localtime() - current_time = time.strftime("%H:%M:%S", t) time.sleep(25) - def createTA(driver, TA_name, emails, password): - full_name = driver.find_element('name', 'fullname') - full_name.send_keys(TA_name) - email= driver.find_element('name', 'email') - email.send_keys(emails) - pas=driver.find_element('name', 'password') - pas.send_keys(password) - usr_type=driver.find_element('name', 'type') - usr_type.click() - click_create =driver.find_element('name', 'create_btn') - click_create.click() - +def test_createTA(): + driver_open = webdriver.Chrome() + driver_open.maximize_window() + login_lecturer(driver_open) try: - fullname = "testname" - email = "labtest0@fgy.com" - password = "newpasasr12345678" - createTA(driver_open,fullname,email,password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678 + fullname = faker.name() + email = faker.email() + password = "new1452345678" + createTA(driver_open, fullname, email,password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678 get_output = WebDriverWait(driver_open, 10).until( EC.element_to_be_clickable((By.ID, "tab_ins_accounts")) - ) + ) get_output.click() get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning") txt_alert = get_output_msg.text - time.sleep(15) + time.sleep(20) - if txt_alert.find("TA user created successfully")==0: - - logout_button = driver_open.find_element(By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]") + if txt_alert.find("TA user created successfully") == 0: + logout_button = WebDriverWait(driver_open, 15).until( + EC.element_to_be_clickable( + (By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]")) + ) + time.sleep(5) logout_button.click() - time.sleep(15) + time.sleep(10) username_input = driver_open.find_element('name', "user") password_input = driver_open.find_element('name', "password") login_button = driver_open.find_element('id', "login_btn") @@ -78,74 +85,27 @@ def test_createTA(): login_button.click() - time.sleep(15) - my_course = driver_open.find_element(By.CLASS_NAME, "display-6") - email_pattern = r"Use email (\S+) as account name" - password_pattern = r"as password (\S+)\." - email_match = re.search(email_pattern, txt_alert) - password_match = re.search(password_pattern, txt_alert) - print(f"Email: {email}") - print(f"Password: {password}") - print(" WELCOME TA YOU ARE IN") + time.sleep(20) + elif txt_alert.find("Email address ") == 0: + + time.sleep(22) + driver_open.quit() - elif txt_alert.find("Email address ")==0: - print(" EMAIL ALREADY EXIST ") else: driver_open.quit() - try: - with open('TEST_CREATING_TA.txt', 'a') as test_output: - test_output.write(f"\n {current_time} check this message : {txt_alert}") - except Exception as e: - print(f"unexpected error: {e}") - time.sleep(10) + time.sleep(5) finally: driver_open.quit() -@pytest.mark.generate_password_2() + + def test_generate_password(): driver_open = webdriver.Chrome() - - # Open the website - driver_open.get("http://localhost/lrr/") - driver_open.maximize_window() - - username_input = driver_open.find_element('name', "user") - - password_input = driver_open.find_element('name', "password") - - login_button = driver_open.find_element('id', "login_btn") - - # login as a TA - username_input.send_keys("lanhui@qq.com") - password_input.send_keys("nil1234H@") - # Click the login button - login_button.click() - admin_tab = driver_open.find_element('id', 'admin_tab') - admin_tab.click() - print("login sucessfully") - cte_instructor = driver_open.find_element('id', 'tab_ins_accounts') - cte_instructor.click() - print(" everything is ok here ") - t = time.localtime() - current_time = time.strftime("%H:%M:%S", t) - time.sleep(25) - - def createTA(driver, TA_name, emails, password): - full_name = driver.find_element('name', 'fullname') - full_name.send_keys(TA_name) - email = driver.find_element('name', 'email') - email.send_keys(emails) - pas = driver.find_element('name', 'password') - pas.send_keys(password) - usr_type = driver.find_element('name', 'type') - usr_type.click() - click_create = driver.find_element('name', 'create_btn') - click_create.click() - + login_lecturer(driver_open) try: - fullname = "tesame" - email = "generat@pass.com" + fullname = faker.name() + email = faker.email() password = "" createTA(driver_open, fullname, email, password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678 @@ -168,8 +128,10 @@ def test_generate_password(): # Extract email and password from the matches email = email_match.group(1) password = password_match.group(1) - logout_button = driver_open.find_element(By.XPATH, - "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]") + logout_button = WebDriverWait(driver_open, 10).until( + EC.element_to_be_clickable( + (By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]")) + ) logout_button.click() time.sleep(15) username_input = driver_open.find_element('name', "user") @@ -184,22 +146,50 @@ def test_generate_password(): login_button.click() time.sleep(20) - my_course = driver_open.find_element(By.CLASS_NAME, "display-6") - - print(f"WELCOME {fullname} YOU ARE IN") elif txt_alert.find("Email address ") == 0: - print(" EMAIL ALREADY EXIST ") + time.sleep(22) + driver_open.quit() + else: driver_open.quit() - try: - with open('TEST_CREATING_TA.txt', 'a') as test_output: - test_output.write(f"\n {current_time} check this message : {txt_alert}") - except Exception as e: - print(f"unexpected error: {e}") - time.sleep(10) + time.sleep(5) finally: driver_open.quit() +def test_existingTA(): + driver_open = webdriver.Chrome() + login_lecturer(driver_open) + try: +# Use email nreyes@example.com as account name and new1452345678 as password. + fullname = "Maria" + email = "nreyes@example.com" + password = "new1452345678" + createTA(driver_open, fullname, email, + password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678 + + get_output = WebDriverWait(driver_open, 5).until( + EC.element_to_be_clickable((By.ID, "tab_ins_accounts")) + ) + get_output.click() + get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning") + txt_alert = get_output_msg.text + time.sleep(20) + + if txt_alert.find("TA user created successfully") == 0: + time.sleep(20) + + + elif txt_alert.find("Email address ") == 0: + time.sleep(22) + driver_open.quit() + + else: + driver_open.quit() + + time.sleep(5) + + finally: + driver_open.quit() \ No newline at end of file