Update test case script with improvements

- Removing unused statement.
- Testing already existing accounts.
pull/59/head
KOUONTCHOU NEIL ARMSTRONG 2023-12-27 22:29:25 +01:00
parent da9e29c5b6
commit a87c741c13
1 changed files with 98 additions and 108 deletions

View File

@ -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()