Compare commits

..

No commits in common. "fea32072c3c6f6afc3bf2a4160b61ff0d026f662" and "1a01b4facd4c9d1cce59ef84da114f55a57f616d" have entirely different histories.

2 changed files with 58 additions and 65 deletions

View File

@ -4,17 +4,14 @@
import re import re
import time import time
import pytest import pytest
from faker import Faker
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
faker = Faker()
def test_restore_database(restore_database): @pytest.mark.skip(reason="function to be used in the test_scripts")
assert restore_database is None
def createTA(driver, TA_name, emails, password): def createTA(driver, TA_name, emails, password):
full_name = driver.find_element('name', 'fullname') full_name = driver.find_element('name', 'fullname')
full_name.send_keys(TA_name) full_name.send_keys(TA_name)
@ -27,58 +24,56 @@ def createTA(driver, TA_name, emails, password):
click_create = driver.find_element('name', 'create_btn') click_create = driver.find_element('name', 'create_btn')
click_create.click() click_create.click()
def login_lecturer(drivers):
def login_lecturer(driver, url):
# Open the website # Open the website
driver.get(url) drivers.get("http://localhost/lrr/")
driver.maximize_window() drivers.maximize_window()
username_input = driver.find_element('name', "user") username_input = drivers.find_element('name', "user")
password_input = driver.find_element('name', "password") password_input = drivers.find_element('name', "password")
login_button = driver.find_element('id', "login_btn") login_button = drivers.find_element('id', "login_btn")
# login as a Lecturer # login as a Lecturer
username_input.send_keys("admin@qq.com") username_input.send_keys("lanhui@qq.com")
password_input.send_keys("123") password_input.send_keys("nil1234H@")
# Click the login button # Click the login button
time.sleep(2) time.sleep(5)
login_button.click() login_button.click()
admin_tab = driver.find_element('id', 'admin_tab') admin_tab = drivers.find_element('id', 'admin_tab')
admin_tab.click() admin_tab.click()
cte_instructor = driver.find_element('id', 'tab_ins_accounts') cte_instructor = drivers.find_element('id', 'tab_ins_accounts')
cte_instructor.click() cte_instructor.click()
time.sleep(2) time.sleep(25)
def test_createTA():
def test_createTA(driver, url): driver_open = webdriver.Chrome()
driver_open = driver
driver_open.maximize_window() driver_open.maximize_window()
login_lecturer(driver_open, url) login_lecturer(driver_open)
try: try:
fullname = "lanhuitest1" fullname = faker.name()
email = "lanhuitest1@qq.com" email = faker.email()
password = "new1452345678" password = "new1452345678"
createTA(driver_open, fullname, email,password) # CREATE A TA WITH FULLNAME lanhuitest1 email lanhuitest1@qq.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, 20).until( get_output = WebDriverWait(driver_open, 10).until(
EC.element_to_be_clickable((By.ID, "tab_ins_accounts")) EC.element_to_be_clickable((By.ID, "tab_ins_accounts"))
) )
get_output.click() get_output.click()
get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning") get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning")
txt_alert = get_output_msg.text txt_alert = get_output_msg.text
time.sleep(2) time.sleep(20)
if txt_alert.find("TA user created successfully") == 0: if txt_alert.find("TA user created successfully") == 0:
logout_button = WebDriverWait(driver_open, 20).until( logout_button = WebDriverWait(driver_open, 15).until(
EC.element_to_be_clickable( EC.element_to_be_clickable(
(By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]")) (By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]"))
) )
time.sleep(2) time.sleep(5)
logout_button.click() logout_button.click()
time.sleep(2) time.sleep(10)
username_input = driver_open.find_element('name', "user") username_input = driver_open.find_element('name', "user")
password_input = driver_open.find_element('name', "password") password_input = driver_open.find_element('name', "password")
login_button = driver_open.find_element('id', "login_btn") login_button = driver_open.find_element('id', "login_btn")
@ -86,45 +81,45 @@ def test_createTA(driver, url):
username_input.send_keys(email) # login with credentials of the created TA username_input.send_keys(email) # login with credentials of the created TA
password_input.send_keys(password) password_input.send_keys(password)
# Click the login button # Click the login button
time.sleep(2) time.sleep(20)
login_button.click() login_button.click()
time.sleep(2) time.sleep(20)
elif txt_alert.find("Email address ") == 0: elif txt_alert.find("Email address ") == 0:
time.sleep(2) time.sleep(22)
driver_open.quit() driver_open.quit()
else: else:
driver_open.quit() driver_open.quit()
time.sleep(2) time.sleep(5)
finally: finally:
driver_open.quit() driver_open.quit()
def test_generate_password(driver, url): def test_generate_password():
driver_open = driver driver_open = webdriver.Chrome()
login_lecturer(driver_open, url) login_lecturer(driver_open)
try: try:
fullname = "lanhuitest2" fullname = faker.name()
email = "lanhuitest2@qq.com" email = faker.email()
password = "" password = ""
createTA(driver_open, fullname, email, createTA(driver_open, fullname, email,
password) # CREATE A TA WITH FULLNAME lanhuitest2 email lanhuitest2@qq.com password "" password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678
get_output = WebDriverWait(driver_open, 20).until( get_output = WebDriverWait(driver_open, 5).until(
EC.element_to_be_clickable((By.ID, "tab_ins_accounts")) EC.element_to_be_clickable((By.ID, "tab_ins_accounts"))
) )
get_output.click() get_output.click()
get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning") get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning")
txt_alert = get_output_msg.text txt_alert = get_output_msg.text
time.sleep(2) time.sleep(20)
if txt_alert.find("TA user created successfully") == 0: if txt_alert.find("TA user created successfully") == 0:
time.sleep(2) time.sleep(20)
email_pattern = r"Use email (\S+) as account name" email_pattern = r"Use email (\S+) as account name"
password_pattern = r" (\S+)\ as password." password_pattern = r" (\S+)\ as password."
email_match = re.search(email_pattern, txt_alert) email_match = re.search(email_pattern, txt_alert)
@ -133,12 +128,12 @@ def test_generate_password(driver, url):
# Extract email and password from the matches # Extract email and password from the matches
email = email_match.group(1) email = email_match.group(1)
password = password_match.group(1) password = password_match.group(1)
logout_button = WebDriverWait(driver_open, 20).until( logout_button = WebDriverWait(driver_open, 10).until(
EC.element_to_be_clickable( EC.element_to_be_clickable(
(By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]")) (By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]"))
) )
logout_button.click() logout_button.click()
time.sleep(2) time.sleep(15)
username_input = driver_open.find_element('name', "user") username_input = driver_open.find_element('name', "user")
password_input = driver_open.find_element('name', "password") password_input = driver_open.find_element('name', "password")
login_button = driver_open.find_element('id', "login_btn") login_button = driver_open.find_element('id', "login_btn")
@ -146,56 +141,54 @@ def test_generate_password(driver, url):
username_input.send_keys(email) # login with credentials of the created TA username_input.send_keys(email) # login with credentials of the created TA
password_input.send_keys(password) password_input.send_keys(password)
# Click the login button # Click the login button
time.sleep(2) time.sleep(20)
login_button.click() login_button.click()
time.sleep(2) time.sleep(20)
elif txt_alert.find("Email address ") == 0: elif txt_alert.find("Email address ") == 0:
time.sleep(2) time.sleep(22)
driver_open.quit() driver_open.quit()
else: else:
driver_open.quit() driver_open.quit()
time.sleep(2) time.sleep(5)
finally: finally:
driver_open.quit() driver_open.quit()
def test_existingTA():
def test_existingTA(driver, url, restore_database): driver_open = webdriver.Chrome()
driver_open = driver login_lecturer(driver_open)
login_lecturer(driver, url)
try: try:
# Use email nreyes@example.com as account name and new1452345678 as password. # Use email nreyes@example.com as account name and new1452345678 as password.
fullname = "lanhuitest1" fullname = "Maria"
email = "lanhuitest1@qq.com" email = "nreyes@example.com"
password = "new1452345678" password = "new1452345678"
createTA(driver_open, fullname, email, createTA(driver_open, fullname, email,
password) # CREATE A TA WITH FULLNAME lanhuitest1 email lanhuitest1@qq.com password new1452345678 password) # CREATE A TA WITH FULLNAME lanhuitest email lanhuitest@test.com password lanhui12345678
get_output = WebDriverWait(driver_open, 20).until( get_output = WebDriverWait(driver_open, 5).until(
EC.element_to_be_clickable((By.ID, "tab_ins_accounts")) EC.element_to_be_clickable((By.ID, "tab_ins_accounts"))
) )
get_output.click() get_output.click()
get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning") get_output_msg = driver_open.find_element(By.CLASS_NAME, "alert-warning")
txt_alert = get_output_msg.text txt_alert = get_output_msg.text
time.sleep(2) time.sleep(20)
if txt_alert.find("TA user created successfully") == 0: if txt_alert.find("TA user created successfully") == 0:
time.sleep(2) time.sleep(20)
elif txt_alert.find("Email address ") == 0: elif txt_alert.find("Email address ") == 0:
time.sleep(2) time.sleep(22)
driver_open.quit() driver_open.quit()
else: else:
driver_open.quit() driver_open.quit()
time.sleep(5)
time.sleep(2)
finally: finally:
driver_open.quit() driver_open.quit()