refractoring, ajout de nouveaux test, correction de bug

This commit is contained in:
Aurélien Plancke 2021-06-07 16:48:11 +02:00
parent b7f3830b2f
commit e9269992fe
12 changed files with 154 additions and 99 deletions

View File

@ -8,3 +8,4 @@ SCODOC_CHEF_ID = "chef_id"
SCODOC_CHEF_PASS = "password" SCODOC_CHEF_PASS = "password"
LINK_SCODOC_SERVER = "root@ssh_server_scodoc" LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/" BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
NAVIGATEUR = "firefox"

View File

@ -18,9 +18,6 @@ from selenium.webdriver.support.select import Select
class PythonOrgSearch(unittest.TestCase): class PythonOrgSearch(unittest.TestCase):
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, "TESTCREATEDPT"]
process = subprocess.Popen(cmdProcess)
process.wait()
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self): def setUp(self):
if NAVIGATEUR == "firefox": if NAVIGATEUR == "firefox":
@ -82,4 +79,7 @@ class PythonOrgSearch(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, "TESTCREATEDPT"]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main() unittest.main()

View File

@ -25,9 +25,6 @@ ACRONYME_FORMATION = "FormationTEST"
class PythonOrgSearch(unittest.TestCase): class PythonOrgSearch(unittest.TestCase):
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self): def setUp(self):
if NAVIGATEUR == "firefox": if NAVIGATEUR == "firefox":
@ -181,4 +178,7 @@ class PythonOrgSearch(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main() unittest.main()

View File

@ -29,17 +29,6 @@ paysdomicile = "Lille"
class PythonOrgSearch(unittest.TestCase): class PythonOrgSearch(unittest.TestCase):
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
cmdProcess = [
"./scriptExecution.sh",
LINK_SCODOC_SERVER,
NOM_DPT,
"test_scenario1_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self): def setUp(self):
if NAVIGATEUR == "firefox": if NAVIGATEUR == "firefox":
@ -188,4 +177,15 @@ class PythonOrgSearch(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
cmdProcess = [
"./scriptExecution.sh",
LINK_SCODOC_SERVER,
NOM_DPT,
"test_scenario1_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main() unittest.main()

View File

@ -22,21 +22,10 @@ URL = BASE_URL + NOM_DPT + "/Scolarite"
NOM_ETU = "Semestre11" NOM_ETU = "Semestre11"
PRENOM_ETU = "EtudiantNumero1" PRENOM_ETU = "EtudiantNumero1"
dateDebutAbsenceNonJustifiee = "31/05/2021" dateDebutAbsenceNonJustifiee = "31/05/2021"
dateDebutAbsenceJustifiee = "30/05/2021" dateDebutAbsenceJustifiee = "25/05/2021"
class PythonOrgSearch(unittest.TestCase): class PythonOrgSearch(unittest.TestCase):
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
cmdProcess = [
"./scriptExecution.sh",
LINK_SCODOC_SERVER,
NOM_DPT,
"test_scenario2_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self): def setUp(self):
if NAVIGATEUR == "firefox": if NAVIGATEUR == "firefox":
@ -98,7 +87,7 @@ class PythonOrgSearch(unittest.TestCase):
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee) driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
driver.find_element_by_name("estjust").click() driver.find_element_by_name("estjust").click()
driver.find_element_by_id("butsubmit").submit() driver.find_element_by_id("butsubmit").submit()
self.wait.until(EC.url_changes(URL)) time.sleep(1)
self.assertTrue("Ajout de 2 absences <b>justifiées</b>" in driver.page_source) self.assertTrue("Ajout de 2 absences <b>justifiées</b>" in driver.page_source)
driver = self.driver driver = self.driver
driver.find_element_by_link_text("Liste").click() driver.find_element_by_link_text("Liste").click()
@ -141,7 +130,7 @@ class PythonOrgSearch(unittest.TestCase):
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click() driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
self.wait.until(EC.url_changes(URL)) self.wait.until(EC.url_changes(URL))
self.assertTrue("Annulation sur 2 demi-journées " in driver.page_source) self.assertTrue("Annulation sur 2 demi-journées " in driver.page_source)
driver.find_element_by_id("supprimer_Absence ").click() driver.find_element_by_id("supprimer_Absence").click()
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee) driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee)
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click() driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
self.wait.until(EC.url_changes(URL)) self.wait.until(EC.url_changes(URL))
@ -161,4 +150,15 @@ class PythonOrgSearch(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
cmdProcess = [
"./scriptExecution.sh",
LINK_SCODOC_SERVER,
NOM_DPT,
"test_scenario2_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main() unittest.main()

View File

@ -64,10 +64,6 @@ class PythonOrgSearch(unittest.TestCase):
SCODOC_ENS_PASS SCODOC_ENS_PASS
) )
self.driver.find_element_by_name("submit").click() self.driver.find_element_by_name("submit").click()
# self.driver.get(self.url)
# self.driver.find_element_by_id("name").send_keys(SCODOC_ENS_ID)
# self.driver.find_element_by_id("password").send_keys(SCODOC_ENS_PASS)
# self.driver.find_element_by_id("submit").click()
# Test : Vérifie s'il y a un semestre en cours # Test : Vérifie s'il y a un semestre en cours
# @expected : La class listesems n'est pas vide et contient "Session en cours" # @expected : La class listesems n'est pas vide et contient "Session en cours"
@ -96,49 +92,14 @@ class PythonOrgSearch(unittest.TestCase):
except NoSuchElementException: except NoSuchElementException:
self.assertFalse(False) self.assertFalse(False)
# Test : Ajout d'un enseignant comme résponsable d'un module def test_030_changement_responsable_sur_module(self):
# @expected : Le nom de l'enseignant apparait désormais sur la page d'information du module
def test_030_ajout_enseignant_sur_module(self):
driver = self.driver driver = self.driver
# driver.get(BASE_URL) isThere = False
# driver.find_element_by_link_text("déconnecter").click()
# driver.get(BASE_URL)
# driver.find_element_by_id("name").send_keys(SCODOC_CHEF_ID)
# driver.find_element_by_id("password").send_keys(SCODOC_CHEF_PASS)
# driver.find_element_by_id("submit").click()
# global URL_SEMESTRE
driver.get(URL_SEMESTRE) driver.get(URL_SEMESTRE)
driver.find_element_by_link_text("M4101C").click() driver.find_element_by_link_text("M4101C").click()
time.sleep(1) time.sleep(1)
global URL_MATIERE global URL_MATIERE
URL_MATIERE = driver.current_url URL_MATIERE = driver.current_url
driver.find_element_by_partial_link_text("modifier les enseignants").click()
time.sleep(1)
constructIDEns = (
SCODOC_ENS_ID.upper() + " " + PRENOM_ENS + " (" + SCODOC_ENS_ID + ")"
)
driver.find_element_by_id("ens_id").send_keys(constructIDEns)
driver.find_element_by_id("tf_submit").click()
time.sleep(1)
driver.get(URL_MATIERE)
professeurDansModule = driver.find_elements_by_class_name("ens_Dans_Module")
# self.assertTrue("Enseignants du" in driver.page_source)
time.sleep(5)
professeurString = []
for professeur in professeurDansModule:
professeurString.append(professeur.text)
for professeurS in professeurString:
print(SCODOC_ENS_ID.lower() + " " + professeurS.lower())
print(professeurS.lower().find(SCODOC_ENS_ID.lower() + " e."))
if professeurS.lower().find(SCODOC_ENS_ID.lower() + " e."):
self.assertTrue(True)
self.assertFalse(True)
def test_031_changement_responsable_sur_module(self):
driver = self.driver
global URL_MATIERE
driver.get(URL_MATIERE)
driver.find_element_by_xpath( driver.find_element_by_xpath(
"//a[contains(@href,'edit_moduleimpl_resp?')]" "//a[contains(@href,'edit_moduleimpl_resp?')]"
).click() ).click()
@ -159,6 +120,35 @@ class PythonOrgSearch(unittest.TestCase):
driver.get(URL_MATIERE) driver.get(URL_MATIERE)
nomResponsable = driver.find_element_by_id("ens_Responsable") nomResponsable = driver.find_element_by_id("ens_Responsable")
self.assertTrue(SCODOC_CHEF_ID.lower() in nomResponsable.text.lower()) self.assertTrue(SCODOC_CHEF_ID.lower() in nomResponsable.text.lower())
global isAdmin
isAdmin = False
global isChef
isChef = True
# Test : Ajout d'un enseignant comme résponsable d'un module
# @expected : Le nom de l'enseignant apparait désormais sur la page d'information du module
def test_031_ajout_enseignant_sur_module(self):
driver = self.driver
global URL_MATIERE
driver.get(URL_MATIERE)
driver.find_element_by_partial_link_text("modifier les enseignants").click()
time.sleep(1)
constructIDEns = (
SCODOC_ENS_ID.upper() + " " + PRENOM_ENS + " (" + SCODOC_ENS_ID + ")"
)
driver.find_element_by_id("ens_id").send_keys(constructIDEns)
driver.find_element_by_id("tf_submit").click()
time.sleep(1)
driver.get(URL_MATIERE)
professeurDansModule = driver.find_elements_by_class_name("ens_Dans_Module")
time.sleep(5)
professeurString = []
for professeur in professeurDansModule:
professeurString.append(professeur.text)
for professeurS in professeurString:
if SCODOC_ENS_ID.lower() in professeurS.lower():
isThere = True
self.assertTrue(isThere)
# Test : Création d'une interrogation en tant que chef des études # Test : Création d'une interrogation en tant que chef des études
# @eexpected : L'interrogation apparait désormais dans ce module # @eexpected : L'interrogation apparait désormais dans ce module
@ -188,8 +178,8 @@ class PythonOrgSearch(unittest.TestCase):
driver.find_element_by_id("tf_coefficient").send_keys("2") driver.find_element_by_id("tf_coefficient").send_keys("2")
driver.find_element_by_id("tf_submit").click() driver.find_element_by_id("tf_submit").click()
time.sleep(1) time.sleep(1)
global isAdmin global isChef
isAdmin = False isChef = False
global isEns global isEns
isEns = True isEns = True
self.assertTrue(descriptionInterrogation in driver.page_source) self.assertTrue(descriptionInterrogation in driver.page_source)
@ -261,8 +251,8 @@ class PythonOrgSearch(unittest.TestCase):
self.assertFalse(False) self.assertFalse(False)
except NoSuchElementException: except NoSuchElementException:
self.assertTrue(True) self.assertTrue(True)
global isAdmin global isChef
isAdmin = True isChef = True
global isEns global isEns
isEns = False isEns = False
@ -286,10 +276,10 @@ class PythonOrgSearch(unittest.TestCase):
driver.find_element_by_class_name("delete_img").click() driver.find_element_by_class_name("delete_img").click()
time.sleep(1) time.sleep(1)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_id("tf_submit").click()
global isAdmin # global isAdmin
isAdmin = True # isAdmin = True
global isEns # global isEns
isEns = False # isEns = False
self.assertFalse(descriptionInterrogation in driver.page_source) self.assertFalse(descriptionInterrogation in driver.page_source)
# Test : Suppression d'un enseignant responsable d'un module # Test : Suppression d'un enseignant responsable d'un module
@ -306,8 +296,6 @@ class PythonOrgSearch(unittest.TestCase):
time.sleep(1) time.sleep(1)
time.sleep(1) time.sleep(1)
driver.get(URL_MATIERE) driver.get(URL_MATIERE)
print(SCODOC_ENS_ID)
time.sleep(10)
self.assertTrue(SCODOC_ENS_ID not in driver.page_source) self.assertTrue(SCODOC_ENS_ID not in driver.page_source)
# Test : Suppresion du reste des interrogations sans notes # Test : Suppresion du reste des interrogations sans notes

View File

@ -1,15 +1,19 @@
import unittest import unittest
import time import time
import subprocess
import urllib.parse as urlparse import urllib.parse as urlparse
from setup import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
BASE_URL, BASE_URL,
BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER,
NOM_DPT, NOM_DPT,
SCODOC_ENS_ID, SCODOC_ENS_ID,
SCODOC_ENS_PASS, SCODOC_ENS_PASS,
SCODOC_CHEF_ID, SCODOC_CHEF_ID,
SCODOC_CHEF_PASS, SCODOC_CHEF_PASS,
NAVIGATEUR,
) )
from urllib.parse import parse_qs from urllib.parse import parse_qs
from selenium import webdriver from selenium import webdriver
@ -20,25 +24,82 @@ from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select from selenium.webdriver.support.select import Select
urlMatiere = "" urlMatiere = ""
listeEtudiant = []
class PythonOrgSearch(unittest.TestCase): class PythonOrgSearch(unittest.TestCase):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self): def setUp(self):
#chargement du script creation d'interro if NAVIGATEUR == "firefox":
self.driver = webdriver.Firefox() self.driver = webdriver.Firefox()
elif NAVIGATEUR == "chrome":
self.driver = webdriver.Chrome()
self.url = BASE_URL + NOM_DPT + "/Scolarite" self.url = BASE_URL + NOM_DPT + "/Scolarite"
self.wait = WebDriverWait(self.driver, 10) self.wait = WebDriverWait(self.driver, 10)
self.driver.get(BASE_URL) self.driver.get(
self.driver.find_element_by_id("name").send_keys(SCODOC_ENS_ID) "https://"
self.driver.find_element_by_id("password").send_keys(SCODOC_ENS_PASS) + SCODOC_ADMIN_ID
self.driver.find_element_by_id("submit").click() + ":"
+ SCODOC_ADMIN_PASS
+ "@"
+ BASE_NOT_SECURED_URL
+ "force_admin_authentication"
)
self.driver.get(self.url)
def test_010_ajout_note_multiple(self): def test_010_ajout_note_multiple(self):
driver = self.driver() driver = self.driver
url = self.url url = self.url
driver.find_element_by_link_text("DUT Informatique semestre 4").click() driver.find_element_by_link_text("semestre 1").click()
driver.find_element_by_link_text("M4101C").click() matiereAvecEvaluation = driver.find_elements_by_xpath(
time.sleep(1) "//a[contains(text(),'1 prévues, 0 ok')]"
global urlMatiere )
urlMatiere = driver.current_url global listeEtudiant
linkAddNote = "formnotes_note_"
for evaluation in matiereAvecEvaluation:
URL = driver.current_url
evaluation.click()
self.wait.until(EC.url_changes(URL))
URL_SEMESTRE = driver.current_url
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
self.wait.until(EC.url_changes(URL_SEMESTRE))
for champs in driver.find_elements_by_xpath(
"//input[contains(@id,'" + linkAddNote + "')]"
):
champs.send_keys(12)
idChamp = champs.get_attribute("id")
idEtud = idChamp[len(linkAddNote) : len(idChamp)]
if idEtud not in listeEtudiant:
listeEtudiant.append(idEtud)
URL = driver.current_url
driver.find_element_by_id("formnotes_submit").click()
self.wait.until(EC.url_changes(URL))
driver.get(URL_SEMESTRE)
for etudiant in listeEtudiant:
searchBar = driver.find_element_by_id("in-expnom")
searchBar.send_keys(etudiant)
searchBar.submit()
self.assertTrue(driver.find_element_by_id("rcp_moy").text == "12")
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
if NAVIGATEUR == "firefox":
driver = webdriver.Firefox()
else:
driver = webdriver.Chrome()
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()
cmdProcess = [
"./scriptExecution.sh",
LINK_SCODOC_SERVER,
NOM_DPT,
"test_scenario3_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main(warnings="ignore")

0
07_test_admission.py Normal file
View File

View File

@ -8,7 +8,6 @@ aliases:
Role3: &Prof Professeur Role3: &Prof Professeur
Role4: &AdminDPT AdminDepartement Role4: &AdminDPT AdminDepartement
Page1: &Accueil Accueil Page1: &Accueil Accueil
Champs: [&champTest test]
Page2: &Absence Absence Page2: &Absence Absence
Page3: &Departement Departement Page3: &Departement Departement
Page4: &Notes Notes Page4: &Notes Notes
@ -58,7 +57,7 @@ test4:
resultat: la page sur laquelle on est dirigée contient un tableau avec la formation crée, dont un id avec titre_nom_formation resultat: la page sur laquelle on est dirigée contient un tableau avec la formation crée, dont un id avec titre_nom_formation
etat: *DeptCreated etat: *DeptCreated
page: *Notes page: *Notes
champs: "titre_" + acronyme champs: "titre_acronyme"
role: *AdminDPT role: *AdminDPT
createur: Aurélien createur: Aurélien
test5: test5:

6
output.txt Normal file
View File

@ -0,0 +1,6 @@
>>>
.....
----------------------------------------------------------------------
Ran 5 tests in 77.731s
OK

View File

@ -4,6 +4,6 @@ Environnement de test :
Editer le .envmodel pour remplacer les différentes informations qui permettent d'intéragir avec Scodoc (attention au / dans les liens, il y a des exemples) Editer le .envmodel pour remplacer les différentes informations qui permettent d'intéragir avec Scodoc (attention au / dans les liens, il y a des exemples)
Renommer le fichier en .env Renommer le fichier en .env
Les tests sont prévus pour fonctionner avec firefox, le webdriver (geckodriver) est intégré dans le projet pour éviter de devoir l'installer manuellement Les tests sont prévus pour fonctionner avec firefox, le webdriver (geckodriver) est intégré dans le projet pour éviter de devoir l'installer manuellement, il est également possible de préciser un autre webdriver en le précisant dans le .env, en remplaçant firefox par chrome par exemple
Les tests sont prévus pour fonctionner en python 3 avec unit test Les tests sont prévus pour fonctionner en python 3 avec unit test

BIN
setup.pyc

Binary file not shown.