Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
23def285c5 | ||
|
6cfa26ca17 | ||
9c00e85369 | |||
1e2b8f3a87 | |||
137bc378b8 | |||
177aa06f38 | |||
86a04e8a07 | |||
8fb3278553 | |||
3df1165806 | |||
a303f4d772 | |||
2519454dae | |||
6b24637bfb | |||
9eb4260878 | |||
2c4b303578 | |||
491c50ebc0 | |||
16ba1f0037 | |||
d4850108bb | |||
1c8bccbf41 | |||
|
545be29ac6 | ||
4ead3eb9f3 | |||
86b0e4f50e |
@ -3,9 +3,9 @@ NOM_DPT = "test01"
|
||||
SCODOC_ADMIN_ID = "admin_id"
|
||||
SCODOC_ADMIN_PASS = "admin_password"
|
||||
SCODOC_ENS_ID = "enseignant_id"
|
||||
SCODOC_ENS_PASS = "enseignant_password"
|
||||
SCODOC_ENS_PASS = "enseignant_password@10"
|
||||
SCODOC_CHEF_ID = "chef_id"
|
||||
SCODOC_CHEF_PASS = "password"
|
||||
SCODOC_CHEF_PASS = "p@ssword42@"
|
||||
LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
|
||||
BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
|
||||
NAVIGATEUR = "firefox"
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -3,4 +3,6 @@ settings.json
|
||||
.env
|
||||
*__pycache__*
|
||||
*__pycache__/*
|
||||
geckodriver.log
|
||||
geckodriver.log
|
||||
*ResultatTest/*
|
||||
*.html*
|
@ -2,6 +2,11 @@
|
||||
import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
import suppressionSiteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -37,49 +42,48 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
# Test : Verification de la connexion admin effective
|
||||
# @expected : "Bonjour admin" est présent sur la page d'accueil
|
||||
def test_connexion_admin(self):
|
||||
def test_01_connexion_admin(self):
|
||||
driver = self.driver
|
||||
self.assertTrue("admin" in driver.page_source)
|
||||
|
||||
# Test : Creer un département
|
||||
# @expected : Le département est présent sur la page d'accueil
|
||||
def test_create_departement(self):
|
||||
def test_02_create_departement(self):
|
||||
driver = self.driver
|
||||
driver.get(BASE_URL + "/scodoc_admin")
|
||||
select = Select(driver.find_element_by_id("CreateDept"))
|
||||
select.select_by_visible_text("TESTCREATEDPT")
|
||||
driver.find_element_by_name("DeptId").submit()
|
||||
time.sleep(2)
|
||||
select = Select(driver.find_element_by_id("create-dept"))
|
||||
select.select_by_visible_text(NOM_DPT)
|
||||
driver.find_element_by_id("create-dept").submit()
|
||||
time.sleep(1)
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
driver.get(BASE_URL)
|
||||
self.assertTrue("TESTCREATEDPT" in driver.page_source)
|
||||
self.assertTrue(NOM_DPT in driver.page_source)
|
||||
|
||||
# Test : Suppresion d'un département, puis lancement d'un script coté serveur pour supprimer sa base de données
|
||||
# @expected : Le département n'apparait plus sur la page d'accueil
|
||||
def test_delete_departement(self):
|
||||
def test_03_delete_departement(self):
|
||||
driver = self.driver
|
||||
driver.get(BASE_URL + "/scodoc_admin")
|
||||
select = Select(driver.find_element_by_id("DeleteDept"))
|
||||
select.select_by_visible_text("TESTCREATEDPT")
|
||||
driver.find_element_by_id("DeleteDept").submit()
|
||||
select = Select(driver.find_element_by_id("delete-dept"))
|
||||
select.select_by_visible_text(NOM_DPT)
|
||||
driver.find_element_by_id("delete-dept").submit()
|
||||
driver.get(BASE_URL)
|
||||
self.assertTrue("TESTCREATEDPT" not in driver.page_source)
|
||||
cmdProcess = [
|
||||
"./scriptDeleteDepartement.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
"TESTCREATEDPT",
|
||||
]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
self.assertTrue(NOM_DPT not in driver.page_source)
|
||||
|
||||
# ferme la fenetre à chaque fin de test
|
||||
|
||||
def tearDown(self):
|
||||
self.driver.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, "TESTCREATEDPT"]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
suppressionSiteDepartement.main()
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="01_création_département",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -2,6 +2,10 @@
|
||||
import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -21,7 +25,7 @@ from selenium.webdriver.support.select import Select
|
||||
|
||||
URL = BASE_URL + NOM_DPT + "/Scolarite"
|
||||
|
||||
ACRONYME_FORMATION = "FormationTEST"
|
||||
ACRONYME_FORMATION = "formationtest"
|
||||
|
||||
|
||||
class PythonOrgSearch(unittest.TestCase):
|
||||
@ -49,9 +53,9 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
driver.find_element_by_id("ProgrammesLink").click()
|
||||
driver.find_element_by_id("link-programmes").click()
|
||||
URL = driver.current_url
|
||||
driver.find_element_by_id("create_formation_link").click()
|
||||
driver.find_element_by_id("link-create-formation").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
|
||||
driver.find_element_by_id("tf_titre").send_keys("TEST")
|
||||
@ -70,7 +74,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
idEditFormation = "edit_Formation_" + ACRONYME_FORMATION
|
||||
idEditFormation = "edit-formation-" + ACRONYME_FORMATION.replace(" ","-")
|
||||
driver.find_element_by_id(idEditFormation).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
|
||||
@ -83,7 +87,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
self.assertTrue(ACRONYME_FORMATION + ACRONYME_FORMATION in textElementAcronyme)
|
||||
# Remise du nom à celui de départ
|
||||
driver.get(URL)
|
||||
idEditFormation = "edit_Formation_" + ACRONYME_FORMATION + ACRONYME_FORMATION
|
||||
idEditFormation = "edit-formation-" + ACRONYME_FORMATION + ACRONYME_FORMATION
|
||||
driver.find_element_by_id(idEditFormation).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_id("tf_acronyme").clear()
|
||||
@ -96,25 +100,74 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
driver.find_element_by_id("create_formation_link").click()
|
||||
driver.find_element_by_id("link-create-formation").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
|
||||
driver.find_element_by_id("tf_titre").send_keys("TEST")
|
||||
driver.find_element_by_id("tf_titre_officiel").send_keys("formation de test")
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
try:
|
||||
driver.find_element_by_id("errorMessage")
|
||||
driver.find_element_by_class_name("error-message")
|
||||
message_erreur_present = True
|
||||
except NoSuchElementException:
|
||||
self.assertFalse(True)
|
||||
self.assertTrue(True)
|
||||
message_erreur_present = False
|
||||
self.assertTrue(message_erreur_present)
|
||||
|
||||
# Test : Ajout d'un semestre dans la formation
|
||||
# @Expected : Le semestre est créé et il apparait désormais dans la table des formations
|
||||
def test_014_ajout_Semestre(self):
|
||||
# Test : Ajout d'une UE dans la formation
|
||||
# @Expected : L'UE est créée et elle apparait désormais dans la liste d'UE de la formation
|
||||
def test_014_ajout_UE(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
idAddSemestre = "addSemestre_" + ACRONYME_FORMATION
|
||||
idTitre = "titre-" + ACRONYME_FORMATION.replace(" ", "-")
|
||||
driver.find_element_by_id(idTitre).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_xpath("//a[contains(@href,'ue_create?')]").click()
|
||||
driver.find_element_by_id("tf_titre").send_keys("UE TEST")
|
||||
driver.find_element_by_id("tf_acronyme").send_keys("TEST")
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
time.sleep(1)
|
||||
driver.get(URL)
|
||||
driver.find_element_by_id(idTitre).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
self.assertTrue("TEST UE TEST" in driver.page_source)
|
||||
driver.get(URL)
|
||||
|
||||
# Test : Ajout d'une matière dans la formation
|
||||
# @Expected : La matière est créée et elle apparait désormais sur la page de détail de la formation
|
||||
def test_015_ajout_matiere(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
nomMat = "unematieretest"
|
||||
driver.get(URL)
|
||||
time.sleep(3)
|
||||
idTitre = "titre-" + ACRONYME_FORMATION
|
||||
driver.find_element_by_id(idTitre).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
time.sleep(3)
|
||||
driver.find_element_by_xpath("//a[contains(@href,'matiere_create?')]").click()
|
||||
driver.find_element_by_id("tf_titre").send_keys(nomMat)
|
||||
driver.find_element_by_id("tf_numero").send_keys("1")
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
time.sleep(3)
|
||||
driver.get(URL)
|
||||
driver.find_element_by_id(idTitre).click()
|
||||
time.sleep(3)
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
elements = driver.find_elements_by_xpath("//a[contains(@href,'matiere_edit?')]")
|
||||
matIsPresent = False
|
||||
for element in elements:
|
||||
if element.text == nomMat:
|
||||
matIsPresent = True
|
||||
self.assertTrue(matIsPresent)
|
||||
|
||||
# Test : Ajout d'un semestre dans la formation
|
||||
# @Expected : Le semestre est créé et il apparait désormais dans la table des formations
|
||||
def test_016_ajout_Semestre(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
idAddSemestre = "add-semestre-" + ACRONYME_FORMATION.replace(" ", "-")
|
||||
driver.find_element_by_id(idAddSemestre).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_name("date_debut").send_keys("01/01/2021")
|
||||
@ -131,13 +184,36 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
self.assertTrue((NOM_DPT.upper() + "-" + "DUT" + "--") in driver.page_source)
|
||||
|
||||
# Test : Dupplique une formation sous une nouvelle version
|
||||
# @expected : La formation est dupliquée et à la version "2"
|
||||
def test_017_creer_nouvelle_version_formation(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
idTitre = "titre-" + ACRONYME_FORMATION
|
||||
driver.find_element_by_id(idTitre).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
tmpurl = driver.current_url
|
||||
driver.find_element_by_xpath(
|
||||
"//a[contains(@href,'formation_create_new_version?')]"
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(tmpurl))
|
||||
self.assertTrue("Nouvelle version !" in driver.page_source)
|
||||
driver.get(URL)
|
||||
elements = driver.find_elements_by_class_name("version")
|
||||
versionIsPresent = False
|
||||
for element in elements:
|
||||
if element.text == "2":
|
||||
versionIsPresent = True
|
||||
self.assertTrue(versionIsPresent)
|
||||
|
||||
# Test : Supprime une formation après avoir supprimé les semestres qui y sont rattachés
|
||||
# @expected : La formation n'apparait plus dans le tableau des formations
|
||||
def test_020_delete_formation(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.get(URL)
|
||||
idButtonDelete = "delete_Formation_" + ACRONYME_FORMATION
|
||||
idButtonDelete = "delete-formation-" + ACRONYME_FORMATION
|
||||
driver.find_element_by_id(idButtonDelete).click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
tmpURLDelete = driver.current_url
|
||||
@ -162,11 +238,12 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
"//input[@value='Supprimer cette formation']"
|
||||
).click()
|
||||
driver.get(URL)
|
||||
try:
|
||||
driver.find_element_by_id(idButtonDelete)
|
||||
self.assertTrue(False)
|
||||
except NoSuchElementException:
|
||||
self.assertTrue(True)
|
||||
formations = driver.find_elements_by_class_name("version")
|
||||
formationDelete = True
|
||||
for formation in formations:
|
||||
if "1" in formation.text:
|
||||
formationDelete = False
|
||||
self.assertTrue(formationDelete)
|
||||
|
||||
# def test_create_module(self):
|
||||
# driver = self.driver
|
||||
@ -178,7 +255,14 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="02_creation_formation_test",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -1,6 +1,10 @@
|
||||
import unittest
|
||||
import time
|
||||
import HtmlTestRunner
|
||||
import subprocess
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -53,7 +57,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_01_creation_etudiant(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.find_element_by_id("link_create_etudident").click()
|
||||
driver.find_element_by_id("link-create-student").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
URL = driver.current_url
|
||||
driver.find_element_by_id("tf_nom").send_keys(nomEtu)
|
||||
@ -81,7 +85,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
time.sleep(1)
|
||||
self.assertTrue(
|
||||
"Code étudiant (code_nip) dupliqué !"
|
||||
in driver.find_element_by_id("titleError").text
|
||||
in driver.find_element_by_class_name("title-error").text
|
||||
)
|
||||
|
||||
# Test Modification de l'adresse étudiant
|
||||
@ -104,7 +108,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
time.sleep(1)
|
||||
self.assertTrue(
|
||||
codepostaldomicile in driver.find_element_by_id("adresse_etudiant").text
|
||||
codepostaldomicile in driver.find_element_by_id("student-address").text
|
||||
)
|
||||
|
||||
# Test Inscription d'un étudiant dans un semestre
|
||||
@ -123,14 +127,19 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
try:
|
||||
semestres = driver.find_elements_by_xpath(
|
||||
"//a[contains(@id,'inscription_Semestre_')]"
|
||||
"//a[contains(@id,'inscription-semestre-')]"
|
||||
)
|
||||
except NoSuchElementException:
|
||||
self.assertFalse(True)
|
||||
semestres[0].click()
|
||||
driver.find_element_by_xpath("//input[@value='Inscrire']").click()
|
||||
self.assertTrue("inscrit" in driver.page_source)
|
||||
time.sleep(1)
|
||||
time.sleep(2)
|
||||
boutonInscrireIsNotPresent = False
|
||||
try:
|
||||
driver.find_element_by_partial_link_text("inscrire")
|
||||
except:
|
||||
boutonInscrireIsNotPresent = True
|
||||
self.assertTrue(boutonInscrireIsNotPresent)
|
||||
|
||||
# Test Supprime un étudiant
|
||||
# @expected : Lors d'une recherche sur le nom de l'étudiant, aucun résultat apparait
|
||||
@ -164,10 +173,10 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
element.submit()
|
||||
time.sleep(1)
|
||||
try:
|
||||
element = driver.find_element_by_id("titleNoResult")
|
||||
element = driver.find_element_by_id("title-no-result")
|
||||
self.assertTrue("Aucun résultat" in element.text)
|
||||
except:
|
||||
self.assertFalse(False)
|
||||
self.assertFalse(True)
|
||||
|
||||
# ferme la fenetre
|
||||
def tearDown(self):
|
||||
@ -175,9 +184,9 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
cmdProcess = [
|
||||
"./scriptExecution.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
@ -186,4 +195,10 @@ if __name__ == "__main__":
|
||||
]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main()
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="03_Etudiant_test",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -2,6 +2,10 @@ import unittest
|
||||
import time
|
||||
import urllib.parse as urlparse
|
||||
import subprocess
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -61,7 +65,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_020_ajout_absence_non_justifiee(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.find_element_by_id("ajout_Absence").click()
|
||||
driver.find_element_by_id("add-absence").click()
|
||||
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee)
|
||||
driver.find_element_by_id("butsubmit").submit()
|
||||
time.sleep(1)
|
||||
@ -83,7 +87,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_021_ajout_absence_justifiee(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.find_element_by_id("ajout_Absence").click()
|
||||
driver.find_element_by_id("add-absence").click()
|
||||
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
|
||||
driver.find_element_by_name("estjust").click()
|
||||
driver.find_element_by_id("butsubmit").submit()
|
||||
@ -103,7 +107,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_022_ajout_justification(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.find_element_by_id("justifier_Absence").click()
|
||||
driver.find_element_by_id("justify-absence").click()
|
||||
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
|
||||
driver.find_element_by_name("description").send_keys("Un test selenium")
|
||||
driver.find_element_by_xpath("//input[@value='Envoyer']").click()
|
||||
@ -125,16 +129,16 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_024_supprimer_absence(self):
|
||||
driver = self.driver
|
||||
global URL
|
||||
driver.find_element_by_id("supprimer_Absence").click()
|
||||
driver.find_element_by_id("delete-absence").click()
|
||||
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
|
||||
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
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("delete-absence").click()
|
||||
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee)
|
||||
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.find_element_by_id("afficher_Liste_Absence").click()
|
||||
driver.find_element_by_id("display-list-absence").click()
|
||||
self.assertTrue("Pas d'absences justifiées" in driver.page_source)
|
||||
self.assertTrue("Pas d'absences non justifiées" in driver.page_source)
|
||||
|
||||
@ -150,9 +154,9 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
cmdProcess = [
|
||||
"./scriptExecution.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
@ -161,4 +165,10 @@ if __name__ == "__main__":
|
||||
]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main()
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="04_Absences_tests",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -2,6 +2,10 @@ import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import urllib.parse as urlparse
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -57,6 +61,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
self.driver.find_element_by_name("__ac_password").send_keys(
|
||||
SCODOC_CHEF_PASS
|
||||
)
|
||||
time.sleep(3)
|
||||
self.driver.find_element_by_name("submit").click()
|
||||
elif isEns:
|
||||
self.driver.find_element_by_name("__ac_name").send_keys(SCODOC_ENS_ID)
|
||||
@ -84,14 +89,18 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver.get(URL)
|
||||
driver.find_element_by_link_text("semestre 4").click()
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
matiereExist = False
|
||||
try:
|
||||
driver.find_element_by_class_name("formsemestre_status_ue")
|
||||
global URL_SEMESTRE
|
||||
URL_SEMESTRE = driver.current_url
|
||||
self.assertTrue(True)
|
||||
matiereExist = True
|
||||
except NoSuchElementException:
|
||||
self.assertFalse(False)
|
||||
matiereExist = False
|
||||
self.assertTrue(matiereExist)
|
||||
|
||||
#Test : Changement de responsable sur module
|
||||
# @expected : Le nom du responsable choisi apparait désormais sur le module concerné
|
||||
def test_030_changement_responsable_sur_module(self):
|
||||
driver = self.driver
|
||||
isThere = False
|
||||
@ -118,7 +127,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
time.sleep(1)
|
||||
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())
|
||||
global isAdmin
|
||||
isAdmin = False
|
||||
@ -131,6 +140,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver = self.driver
|
||||
global URL_MATIERE
|
||||
driver.get(URL_MATIERE)
|
||||
time.sleep(2)
|
||||
driver.find_element_by_partial_link_text("modifier les enseignants").click()
|
||||
time.sleep(1)
|
||||
constructIDEns = (
|
||||
@ -140,7 +150,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
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")
|
||||
professeurDansModule = driver.find_elements_by_class_name("ens-in-module")
|
||||
time.sleep(5)
|
||||
professeurString = []
|
||||
for professeur in professeurDansModule:
|
||||
@ -155,6 +165,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
def test_040_creation_interrogation(self):
|
||||
descriptionInterrogation = "Interrogation numero 2"
|
||||
driver = self.driver
|
||||
global URL_MATIERE
|
||||
driver.get(
|
||||
"https://"
|
||||
+ SCODOC_ADMIN_ID
|
||||
@ -298,6 +309,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
time.sleep(1)
|
||||
time.sleep(1)
|
||||
driver.get(URL_MATIERE)
|
||||
time.sleep(5)
|
||||
self.assertTrue(SCODOC_ENS_ID not in driver.page_source)
|
||||
|
||||
# Test : Suppresion du reste des interrogations sans notes
|
||||
@ -329,9 +341,9 @@ if __name__ == "__main__":
|
||||
driver = webdriver.Firefox()
|
||||
else:
|
||||
driver = webdriver.Chrome()
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
cmdProcess = [
|
||||
"./scriptExecution.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
@ -351,7 +363,7 @@ if __name__ == "__main__":
|
||||
+ "force_admin_authentication"
|
||||
)
|
||||
driver.get(BASE_URL + NOM_DPT + "/Scolarite")
|
||||
driver.find_element_by_id("utilisateurs_Vue").click()
|
||||
driver.find_element_by_id("link-view-users").click()
|
||||
time.sleep(5)
|
||||
noms = driver.find_elements_by_class_name("nom_fmt")
|
||||
chefCree = False
|
||||
@ -362,22 +374,22 @@ if __name__ == "__main__":
|
||||
if nom.text.lower() == SCODOC_ENS_ID.lower():
|
||||
ensCree = True
|
||||
if not chefCree:
|
||||
time.sleep(5)
|
||||
time.sleep(2)
|
||||
constructValue = "Ens" + NOM_DPT
|
||||
driver.find_element_by_id("creer_Utilisateur").click()
|
||||
driver.find_element_by_id("create-user").click()
|
||||
driver.find_element_by_id("tf_nom").send_keys(SCODOC_CHEF_ID)
|
||||
driver.find_element_by_id("tf_user_name").send_keys(SCODOC_CHEF_ID)
|
||||
driver.find_element_by_id("tf_prenom").send_keys("chef")
|
||||
driver.find_element_by_id("tf_passwd").send_keys(SCODOC_CHEF_PASS)
|
||||
driver.find_element_by_id("tf_passwd2").send_keys(SCODOC_CHEF_PASS)
|
||||
driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click()
|
||||
driver.find_element_by_xpath("//input[@value='force:list']").click()
|
||||
driver.find_element_by_xpath("//input[@name='force:list']").click()
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
driver.find_element_by_id("utilisateurs_Vue").click()
|
||||
driver.find_element_by_id("link-view-users").click()
|
||||
if not ensCree:
|
||||
time.sleep(5)
|
||||
time.sleep(2)
|
||||
constructValue = "Ens" + NOM_DPT
|
||||
driver.find_element_by_id("creer_Utilisateur").click()
|
||||
driver.find_element_by_id("create-user").click()
|
||||
driver.find_element_by_id("tf_nom").send_keys(SCODOC_ENS_ID)
|
||||
driver.find_element_by_id("tf_user_name").send_keys(SCODOC_ENS_ID)
|
||||
driver.find_element_by_id("tf_prenom").send_keys(PRENOM_ENS)
|
||||
@ -386,6 +398,12 @@ if __name__ == "__main__":
|
||||
driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click()
|
||||
driver.find_element_by_xpath("//input[@name='force:list']").click()
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
driver.find_element_by_id("utilisateurs_Vue").click()
|
||||
driver.find_element_by_id("link-view-users").click()
|
||||
driver.close()
|
||||
unittest.main(warnings="ignore")
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="05_Saisie_note_tests",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -2,6 +2,10 @@ import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import urllib.parse as urlparse
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -83,13 +87,13 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
self.wait.until(EC.url_changes(URL))
|
||||
driver.get(URL_SEMESTRE)
|
||||
noteBonne = True
|
||||
print(listeEtudiant)
|
||||
# print(listeEtudiant)
|
||||
for etudiant in listeEtudiant:
|
||||
searchBar = driver.find_element_by_id("in-expnom")
|
||||
searchBar.send_keys(etudiant)
|
||||
searchBar.submit()
|
||||
time.sleep(5)
|
||||
MOY_UE1 = driver.find_element_by_id("ue_" + ue_name).text
|
||||
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
|
||||
if "12" not in MOY_UE1:
|
||||
noteBonne = False
|
||||
self.assertTrue(noteBonne)
|
||||
@ -125,7 +129,7 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
searchBar.send_keys(etudiant)
|
||||
searchBar.submit()
|
||||
time.sleep(5)
|
||||
MOY_UE2 = driver.find_element_by_id("ue_" + ue_name).text
|
||||
MOY_UE2 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
|
||||
if "8" not in MOY_UE2:
|
||||
noteBonne = False
|
||||
|
||||
@ -162,8 +166,8 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
driver = self.driver
|
||||
url = self.url
|
||||
driver.get(url)
|
||||
driver.find_element_by_id("ProgrammesLink").click()
|
||||
driver.find_element_by_id("titre_DUT Info").click()
|
||||
driver.find_element_by_id("link-programmes").click()
|
||||
driver.find_element_by_id("titre-dut-info").click()
|
||||
driver.find_element_by_xpath("//span[contains(text(),'M1101')]").click()
|
||||
driver.find_element_by_id("tf_coefficient").clear()
|
||||
driver.find_element_by_id("tf_coefficient").send_keys(COEFF_UE1)
|
||||
@ -262,7 +266,6 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
numeroEtu = 0
|
||||
moyenneBonne = True
|
||||
affichageMoyenne = True
|
||||
ueList = []
|
||||
for etudiant in listeEtudiant:
|
||||
URL = driver.current_url
|
||||
searchBar = driver.find_element_by_id("in-expnom")
|
||||
@ -335,23 +338,23 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
float(MOY_UE1_EXC) * COEFF_UE1
|
||||
+ ((float(MOY_UE2) + float(moyenneBonusEtudiant1)) * COEFF_UE2)
|
||||
) / (COEFF_UE1 + COEFF_UE2)
|
||||
print(format(moyEtudiant1, "2.2f"))
|
||||
print(
|
||||
format(
|
||||
float(driver.find_element_by_class_name("rcp_moy").text), "2.2f"
|
||||
)
|
||||
)
|
||||
# print(format(moyEtudiant1, "2.2f"))
|
||||
# print(
|
||||
# format(
|
||||
# float(driver.find_element_by_class_name("rcp_moy").text), "2.2f"
|
||||
# )
|
||||
# )
|
||||
if format(moyEtudiant1, "2.2f") != format(
|
||||
float(driver.find_element_by_class_name("rcp_moy").text), "2.2f"
|
||||
):
|
||||
moyenneBonne = False
|
||||
if ue_name not in ueListText:
|
||||
affichageMoyenne = False
|
||||
MOY_UE1 = driver.find_element_by_id("ue_" + ue_name).text
|
||||
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
|
||||
if float(0) != float(MOY_UE1):
|
||||
noteExcuseeEgaleAZero = False
|
||||
elif numeroEtu == 1:
|
||||
MOY_UE1 = driver.find_element_by_id("ue_" + ue_name).text
|
||||
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
|
||||
moyEtudiant2 = (
|
||||
float(MOY_UE1) * COEFF_UE1
|
||||
+ (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2
|
||||
@ -431,9 +434,9 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
cmdProcess = [
|
||||
"./scriptExecution.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
@ -442,4 +445,10 @@ if __name__ == "__main__":
|
||||
]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main(warnings="ignore")
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="06_Moyenne_tests",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
@ -2,6 +2,10 @@ import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import urllib.parse as urlparse
|
||||
import HtmlTestRunner
|
||||
import createDepartement
|
||||
import creationSiteDepartement
|
||||
import deleteDepartement
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
@ -62,10 +66,11 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOO
|
||||
driver.find_element_by_id("input-choice-10").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
time.sleep(1)
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ADM" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
|
||||
def test_020_etudiantS1_non_assidu_avec_moy_semestre_non_valide(self):
|
||||
driver = self.driver
|
||||
@ -82,10 +87,10 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOO
|
||||
driver.find_element_by_id("input-choice-40").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ATJ" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
|
||||
def test_030_etudiantS1_assidu_sous_la_moy_semestre_valide(self):
|
||||
driver = self.driver
|
||||
@ -102,20 +107,20 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOOOOO
|
||||
driver.find_element_by_id("input-choice-30").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ATB" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
|
||||
driver.find_element_by_xpath(
|
||||
"//a[contains(@href,'formsemestre_validation_etud_form?')]"
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOOOOO
|
||||
driver.find_element_by_id("input-choice-580").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ATB" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
|
||||
def test_040_etudiantS1_non_assidu_sous_la_moy_semestre_valide(self):
|
||||
driver = self.driver
|
||||
@ -132,20 +137,20 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOOOOO
|
||||
driver.find_element_by_id("input-choice-40").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ATJ" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
|
||||
driver.find_element_by_xpath(
|
||||
"//a[contains(@href,'formsemestre_validation_etud_form?')]"
|
||||
).click()
|
||||
self.wait.until(EC.url_changes(URL_ETUDIANT))
|
||||
URL_DECISION = driver.current_url
|
||||
# TODOOOOOOOO
|
||||
driver.find_element_by_id("input-choice-580").click()
|
||||
driver.find_element_by_id("subut").click()
|
||||
driver.get(URL_ETUDIANT)
|
||||
assertTrue("ATB" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
|
||||
def test_050_calcul_automatiqueS2_jury(self):
|
||||
driver = self.driver
|
||||
@ -155,14 +160,10 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
self.wait.until(EC.url_changes(url))
|
||||
urlTmp = driver.current_url
|
||||
driver.find_element_by_xpath("//a[contains(text(),'Jury')]").click()
|
||||
driver.find_element_by_xpath(
|
||||
"//a[contains(@href,'formsemestre_recapcomplet?')]"
|
||||
).click()
|
||||
driver.find_element_by_link_text("Saisie des décisions du jury").click()
|
||||
self.wait.until(EC.url_changes(urlTmp))
|
||||
urlTmp = driver.current_url
|
||||
driver.find_element_by_xpath(
|
||||
"//a[contains(@href,'formsemestre_validation_auto?')]"
|
||||
).click()
|
||||
driver.find_element_by_partial_link_text("Calcul automatique").click()
|
||||
self.wait.until(EC.url_changes(urlTmp))
|
||||
urlTmp = driver.current_url
|
||||
driver.find_element_by_xpath("//input[@type='submit']").click()
|
||||
@ -171,12 +172,12 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
searchBar.send_keys("EID7")
|
||||
searchBar.submit()
|
||||
time.sleep(5)
|
||||
assertTrue("ADM" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text)
|
||||
searchBar = driver.find_element_by_id("in-expnom")
|
||||
searchBar.send_keys("EID10")
|
||||
searchBar.submit()
|
||||
time.sleep(5)
|
||||
assertTrue("en cours" in driver.find_elements_by_id("rcp_dec"))
|
||||
self.assertTrue("en cours" in driver.page_source)
|
||||
|
||||
def test_060_declarer_defaillance(self):
|
||||
driver = self.driver
|
||||
@ -221,9 +222,9 @@ class PythonOrgSearch(unittest.TestCase):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
deleteDepartement.main()
|
||||
createDepartement.main()
|
||||
creationSiteDepartement.main()
|
||||
cmdProcess = [
|
||||
"./scriptExecution.sh",
|
||||
LINK_SCODOC_SERVER,
|
||||
@ -232,4 +233,10 @@ if __name__ == "__main__":
|
||||
]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
||||
unittest.main(warnings="ignore")
|
||||
unittest.main(
|
||||
testRunner=HtmlTestRunner.HTMLTestRunner(
|
||||
report_name="07_Admission_et_passages_tests",
|
||||
output="./ResultatTest",
|
||||
combine_reports=True,
|
||||
)
|
||||
)
|
||||
|
219
UserStory.xml
219
UserStory.xml
@ -1,219 +0,0 @@
|
||||
<Tests>
|
||||
<Test>
|
||||
<intitulé>Connexion en admin</intitulé>
|
||||
<page>scodoc_admin</page>
|
||||
<operation>
|
||||
Acceder à la page https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/scodoc_admin avec les identifiants admin;
|
||||
</operation>
|
||||
<resultat>
|
||||
Connexion établie (h3 = page Administration de scodoc)
|
||||
</resultat>
|
||||
<role>Admin Scodoc</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Création d'un département</intitulé>
|
||||
<page>scodoc_admin</page>
|
||||
<operation>
|
||||
Accès à la page https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/scodoc_admin,
|
||||
séléctionner un département dans création département,
|
||||
clicker sur créer département,
|
||||
valider sur la page suivante
|
||||
</operation>
|
||||
<resultat>
|
||||
Apparition du lien du département sur la page d'accueil
|
||||
</resultat>
|
||||
<role>Admin Scodoc</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Création d'une formation</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/[nom_formation]/Scolarite/Notes/formation_create,
|
||||
remplissage des champs:
|
||||
tf_acronyme (DUT Test),
|
||||
tf_titre (Diplome universitaire et technologique de test),
|
||||
tf_titre_officiel (Diplome universitaire et technologique de test),
|
||||
tf_formation_code (123456)
|
||||
Soumettre le formulaire;
|
||||
</operation>
|
||||
<resultat>
|
||||
la page sur laquelle on est dirigée contient une class formation_descr
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Ajout d'une UE à la formation créée</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/AurelienUS/Scolarite/Notes/ue_create?formation_id=FORM130
|
||||
remplissage des champs:
|
||||
tf_titre "Informatique"
|
||||
tf_acronyme "Info"
|
||||
tf_numero "1"
|
||||
tf_ects "10"
|
||||
tf_coefficient "10"
|
||||
Soumettre le formulaire;
|
||||
</operation>
|
||||
<resultat>
|
||||
La page sur laquelle on est dirigée contient "Info Informatique"
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Ajout d'une matière à l'UE créée</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
Soumettre le formulaire d'ajout de matière
|
||||
</operation>
|
||||
<resultat>
|
||||
La page sur laquelle on est dirigée contient la classe notes_matiere_list et un de ses enfants contient Systeme </resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Ajouter une session</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
Verifier que la list de formation est présente
|
||||
Se rendre sur la page correspondante "Mise en place d'un semestre de formation" à la formation
|
||||
Vérifier que grtcontent > h2 existe et qu'il contient "Mise en place d'un semestre de formation""
|
||||
Soumettre le formulaire après l'avoir rempli
|
||||
</operation>
|
||||
<resultat>
|
||||
La page sur laquelle on est dirigée contient une classe head_message avec nouveau semestre créé
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Creer un étudiant</intitulé>
|
||||
<page>Scolarite</page>
|
||||
<operation>
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/AurelienUS/Scolarite/etudident_create_form
|
||||
Remplir les champs et soumettre le formulaire;
|
||||
</operation>
|
||||
<resultat>
|
||||
La page contient ficheEtud avec un h2 contenant M. Normal UnEtudiant
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Creer une absence</intitulé>
|
||||
<page>Scolarite/Absences</page>
|
||||
<operation>
|
||||
Affecter une absence à un étudiant
|
||||
</operation>
|
||||
<resultat>
|
||||
La page absence de cet étudiant contient l'absence créée
|
||||
</resultat>
|
||||
<role>SecraitaireDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Justifier une absence</intitulé>
|
||||
<page>Scolarite/Absences</page>
|
||||
<operation>
|
||||
Justifier une absence et la confirmer
|
||||
</operation>
|
||||
<resultat>
|
||||
Ses absences apparaissent comme justifiée sur la page des absences de cet étudiant
|
||||
</resultat>
|
||||
<role>SecretaireDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Générer les absences pour une journée</intitulé>
|
||||
<page>Scolarite/Notes/Absences/EtatAbsences</page>
|
||||
<operation>
|
||||
Généner le récapitulatif des absences
|
||||
</operation>
|
||||
<resultat>
|
||||
La page générée contient les absences préalablement créée
|
||||
</resultat>
|
||||
<role>SecretaireDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Export XML de la formation</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
Génération de l'export XML, vérifier s'il contient les informations de la formations
|
||||
</operation>
|
||||
<resultat>
|
||||
Le xml généré contient les informations demandées
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Export JSON de la formation</intitulé>
|
||||
<page>Scolarite/Notes</page>
|
||||
<operation>
|
||||
Génération de l'export JSON, vérifier s'il contient les informations de la formations
|
||||
</operation>
|
||||
<resultat>
|
||||
Le JSON généré contient les informations demandées
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Verifier la génération du récapitulatif</intitulé>
|
||||
<page>Scolarite/Notes/ue_list</page>
|
||||
<operation>
|
||||
Se rendre sur la page table récapitulative de la formation
|
||||
</operation>
|
||||
<resultat>
|
||||
La page contient toutes les UE et matière précédemment créées
|
||||
</resultat>
|
||||
<role>AdminDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé>Changer les données d'un étudiant</intitulé>
|
||||
<page>Scolarité</page>
|
||||
<operation>
|
||||
Changer les données/Identitée
|
||||
</operation>
|
||||
<resultat>
|
||||
La fiche étudiante est mise à jour avec les nouvelles informations
|
||||
</resultat>
|
||||
<role>SecretaireDPT</role>
|
||||
<createur>Aurélien</createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé></intitulé>
|
||||
<page></page>
|
||||
<operation>
|
||||
</operation>
|
||||
<resultat>
|
||||
</resultat>
|
||||
<role></role>
|
||||
<createur></createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé></intitulé>
|
||||
<page></page>
|
||||
<operation>
|
||||
</operation>
|
||||
<resultat>
|
||||
</resultat>
|
||||
<role></role>
|
||||
<createur></createur>
|
||||
</Test>
|
||||
<Test>
|
||||
<intitulé></intitulé>
|
||||
<page></page>
|
||||
<operation>
|
||||
</operation>
|
||||
<resultat>
|
||||
</resultat>
|
||||
<role></role>
|
||||
<createur></createur>
|
||||
</Test>
|
||||
</Tests>
|
220
UserStory.yaml
220
UserStory.yaml
@ -1,220 +0,0 @@
|
||||
Context:
|
||||
EtatsInitiaux: [Le département est créé,
|
||||
Le programme est créé,
|
||||
Des matières sont créées,
|
||||
Des interrogations sont créées,
|
||||
Il y a des élèves dans le département,
|
||||
Des professeurs sont affectés au matières,Un/e secretaire est affectée au département]
|
||||
test1:
|
||||
intitulé: Connexion en admin
|
||||
page: scodoc_admin
|
||||
operation: Acceder à la page https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/scodoc_admin avec les identifiants admin;
|
||||
resultat: Connexion établie (h3 = page Administration de scodoc)
|
||||
role: Admin
|
||||
createur: Aurélien
|
||||
test2:
|
||||
intitulé: Création d'un département
|
||||
page: scodoc_admin
|
||||
operation:
|
||||
Accès à la page https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/scodoc_admin,
|
||||
séléctionner un département dans création département,
|
||||
clicker sur créer département,
|
||||
valider sur la page suivante
|
||||
resultat: Apparition du lien du département sur la page d'accueil
|
||||
role: Admin Scodoc
|
||||
createur: Aurélien
|
||||
test3:
|
||||
intitulé: Création d'une formation
|
||||
page: Scolarite/Notes
|
||||
operation:
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/[nom_formation]/Scolarite/Notes/formation_create,
|
||||
remplissage des champs
|
||||
tf_acronyme (DUT Test),
|
||||
tf_titre (Diplome universitaire et technologique de test),
|
||||
tf_titre_officiel (Diplome universitaire et technologique de test),
|
||||
tf_formation_code (123456)
|
||||
Soumettre le formulaire;
|
||||
resultat: la page sur laquelle on est dirigée contient une class formation_descr
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test4:
|
||||
intitulé: Ajout d'une UE à la formation créée
|
||||
page: Scolarite/Notes
|
||||
operation:
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/AurelienUS/Scolarite/Notes/ue_create?formation_id=FORM130
|
||||
remplissage des champs
|
||||
tf_titre "Informatique"
|
||||
tf_acronyme "Info"
|
||||
tf_numero "1"
|
||||
tf_ects "10"
|
||||
tf_coefficient "10"
|
||||
Soumettre le formulaire;
|
||||
resultat: La page sur laquelle on est dirigée contient "Info Informatique"
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test5:
|
||||
intitulé: Ajout d'une matière à l'UE créée
|
||||
page: Scolarite/Notes
|
||||
operation: Soumettre le formulaire d'ajout de matière
|
||||
resultat: La page sur laquelle on est dirigée contient la classe notes_matiere_list et un de ses enfants contient Systeme
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test6:
|
||||
intitulé: Ajouter une session
|
||||
page: Scolarite/Notes
|
||||
operation: Verifier que la list de formation est présente
|
||||
Se rendre sur la page correspondante "Mise en place d'un semestre de formation" à la formation
|
||||
Vérifier que grtcontent h2 existe et qu'il contient "Mise en place d'un semestre de formation""
|
||||
Soumettre le formulaire après l'avoir rempli
|
||||
resultat: La page sur laquelle on est dirigée contient une classe head_message avec nouveau semestre créé
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test7:
|
||||
intitulé: Creer un étudiant
|
||||
page: Scolarite
|
||||
operation:
|
||||
https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/AurelienUS/Scolarite/etudident_create_form
|
||||
Remplir les champs et soumettre le formulaire
|
||||
resultat: La page contient ficheEtud avec un h2 contenant M. Normal UnEtudiant
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test8:
|
||||
intitulé: Creer une absence
|
||||
page: Scolarite/Absences
|
||||
operation: Affecter une absence à un étudiant
|
||||
resultat: La page absence de cet étudiant contient l'absence créée
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test9:
|
||||
intitulé: Justifier une absence
|
||||
page: Scolarite/Absences
|
||||
operation: Justifier une absence et la confirmer
|
||||
resultat: Ses absences apparaissent comme justifiée sur la page des absences de cet étudiant
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test10:
|
||||
intitulé: Générer les absences pour une journée
|
||||
page: Scolarite/Notes/Absences/EtatAbsences
|
||||
operation: Généner le récapitulatif des absences
|
||||
resultat: La page générée contient les absences préalablement créée
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test11:
|
||||
intitulé: Export XML de la formation
|
||||
page: Scolarite/Notes
|
||||
operation: Génération de l'export XML, vérifier s'il contient les informations de la formations
|
||||
resultat: Le xml généré contient les informations demandées
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test12:
|
||||
intitulé: Export JSON de la formation
|
||||
page: Scolarite/Notes
|
||||
operation: Génération de l'export JSON, vérifier s'il contient les informations de la formations
|
||||
resultat: Le JSON généré contient les informations demandées
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test13:
|
||||
intitulé: Verifier la génération du récapitulatif
|
||||
page: Scolarite/Notes/ue_list
|
||||
operation: Se rendre sur la page table récapitulative de la formation
|
||||
resultat: La page contient toutes les UE et matière précédemment créées
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test14:
|
||||
intitulé: Changer les données d'un étudiant
|
||||
page: Scolarité
|
||||
operation: Changer les données/Identitée
|
||||
resultat: La fiche étudiant est mise à jour avec les nouvelles informations
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test15:
|
||||
intitulé: Inscrire un étudiant
|
||||
page: Scolarite
|
||||
operation: Rechercher l'étudiant et l'inscrire au semestre courant
|
||||
resultat: La pageEtu de l'étudiant contient maintenant le semstre courant
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test16:
|
||||
intitulé: Décision recommandé de validation de semestre pour un etudiant assidu
|
||||
page: Scolarite/Notes
|
||||
operation: Selectionner la validation de semestre dans les opérations scolarité, séléctionner étudiant assidu et valider
|
||||
resultat: L'état ATT apparait sur la fiche de l'étudiant concerné
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test17:
|
||||
intitulé: Décision recommandé de validation de semestre pour un etudiant non assidu
|
||||
page: Scolarite/Notes
|
||||
operation: Selectionner la validation de semestre dans les opérations scolarité, séléctionner problème d'assiduité et valider
|
||||
resultat: L'état ATT apparait sur la fiche de l'étudiant concerné et la mention (non ass.) apparait sur la page de parcours de l'étudiant
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test18:
|
||||
intitulé: Effectuer la démission d'un étudiant
|
||||
page: Scolarite/ficheEtud
|
||||
operation: Selectionner la demission dans les opérations scolarité, entrer une date et confirmer
|
||||
resultat: La mention "Démission le xx" apparait sur la fiche de l'étudiant concerné
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test19:
|
||||
intitulé: Affecter des absences à un étudiant depuis la gestion des absences
|
||||
page: Scolarite/Absences
|
||||
operation: Selectionner la semaine concernée et cocher les cases correspondantes pour un étudiant
|
||||
resultat: Le compteur d'absence de l'étudiant à été mis à jour
|
||||
role: [SecretaireDPT, EnseignantDPT]
|
||||
createur: Aurélien
|
||||
test20:
|
||||
intitulé: Créer une répartition
|
||||
page: Scolarite/Notes
|
||||
operation: Dans le menu modifier créer des groupes, rentrer le nom de la partition et clicker sur nouvelle partition
|
||||
resultat: Le tableau contient une nouvelle ligne avec le nom de la partition préalablement rempli
|
||||
role: [AdminDPT, SecretaireDPT]
|
||||
createur: Aurélien
|
||||
test21:
|
||||
intitulé: Créer un groupe
|
||||
page: Scolarite/Notes
|
||||
operation: Dans le menu modifier/créer des groupes, clicker sur répartir à coté de la partition concernée, remplir groupName et appuyer sur créer groupe
|
||||
resultat: Le groupe apprait dans la div groups
|
||||
role: [AdminDPT, SecretaireDPT]
|
||||
createur: Aurélien
|
||||
test22:
|
||||
intitulé: Affecter des étudiants à un groupe
|
||||
page: Scolarite/Notes
|
||||
operation: Dans une répartition, déplacer des étudiants de étudiants sans groupe au groupe souhaité, enregister ces groupes
|
||||
resultat: Le groupe (discretelink) apparait maintenant sur la fiche des étudiants correspondant
|
||||
role: SecretaireDPT
|
||||
createur: Aurélien
|
||||
test23:
|
||||
intitulé: Créer une évaluation
|
||||
page: /Scolarite/Notes
|
||||
operation: Aller sur le module correspondant, ajouter une évaluation
|
||||
resultat: L'évaluation apparait maintenant au bout de la ligne
|
||||
role: [Admin,Chef des études, SecretaireDPT]
|
||||
createur: Aurélien
|
||||
test24:
|
||||
intitulé: Entrer des notes
|
||||
page: /Scolarite/Notes
|
||||
operation: Se rendre sur l'interrogation correspondante et rentrer des notes pour chaque étudiant
|
||||
resultat: La moyenne apparait mainteanant à côté de l'interrogation correspondante
|
||||
role: [EnseignantDPT]
|
||||
createur: Aurélien
|
||||
test25:
|
||||
intitulé: Verifier le calcul de la moyenne des notes pour une évaluation
|
||||
page: /Scolarite/Notes
|
||||
operation: Relever toutes les notes et comparer à la moyenne calculée
|
||||
resultat: Les deux sont identiques
|
||||
role: [SecretaireDPT]
|
||||
createur: Aurélien
|
||||
test26:
|
||||
intitulé: Ajouter un module optionnel
|
||||
page:
|
||||
operation:
|
||||
resultat:
|
||||
role: AdminDPT
|
||||
createur: Aurélien
|
||||
test27:
|
||||
intitulé: Ajouter une note optionnelle
|
||||
page:
|
||||
operation:
|
||||
resultat:
|
||||
role: EnseignantDPT
|
||||
createur: Aurélien
|
@ -62,7 +62,7 @@ test4:
|
||||
champsInteractions:
|
||||
[
|
||||
ProgrammesLink,
|
||||
create_formation_link,
|
||||
link-create-formation,
|
||||
tf_acronyme,
|
||||
tf_titre,
|
||||
tf_titre_officiel,
|
||||
@ -96,7 +96,7 @@ test6:
|
||||
tf_acronyme,
|
||||
tf_submit,
|
||||
tf_titre_officiel,
|
||||
create_formation_link,
|
||||
link-create-formation,
|
||||
errorMessage,
|
||||
]
|
||||
role: *AdminDPT
|
||||
@ -117,7 +117,7 @@ test7:
|
||||
tf_acronyme,
|
||||
tf_submit,
|
||||
tf_titre_officiel,
|
||||
create_formation_link,
|
||||
link-create-formation,
|
||||
errorMessage,
|
||||
]
|
||||
role: *AdminDPT
|
||||
@ -144,7 +144,7 @@ test9:
|
||||
champsModifie: null
|
||||
champsInteractions:
|
||||
[
|
||||
link_create_etudident,
|
||||
link-create-student,
|
||||
tf_nom,
|
||||
tf_prenom,
|
||||
tf_annee,
|
||||
@ -170,7 +170,7 @@ test10:
|
||||
tf_code_nip,
|
||||
dont_check_homonyms:list,
|
||||
tf_submit,
|
||||
titleError,
|
||||
title-error,
|
||||
]
|
||||
role: [*AdminDPT, *Secretaire]
|
||||
createur: Aurélien
|
||||
@ -180,10 +180,10 @@ test11:
|
||||
Se rendre sur la fiche étudiante d'un étudiant avec l'aide de la recherche à l'id in-expnom(sidebar)
|
||||
Clicker sur changer de coordonnées
|
||||
Remplir le formulaire et le soumestre
|
||||
resultat: L'élèment à l'id adresse_etudiant contient désormais les informations mise à jour.
|
||||
resultat: L'élèment à l'id student-adress contient désormais les informations mise à jour.
|
||||
etat: *ProgramCreated
|
||||
page: *Scolarite
|
||||
champsModifie: adresse_etudiant
|
||||
champsModifie: student-adress
|
||||
champsInteractions:
|
||||
[in-expnom, tf_domicile, tf_codepostaldomicile, tf_paysdomicile, tf_submit]
|
||||
role: [*AdminDPT, *Secretaire]
|
||||
@ -196,7 +196,7 @@ test12:
|
||||
page: *Scolarite
|
||||
champsModifie: null
|
||||
champsInteractions:
|
||||
[in-expnom, url_inscription_with_modules, inscription_Semestre_]
|
||||
[in-expnom, url_inscription_with_modules, inscription-semestre-]
|
||||
role: *Secretaire
|
||||
createur: Aurélien
|
||||
test13:
|
||||
@ -246,7 +246,7 @@ test17:
|
||||
etat: *EtudiantCreated
|
||||
page: *Absence
|
||||
champsModifie: null
|
||||
champsInteractions: [justifier_Absence, datedebut, description]
|
||||
champsInteractions: [justify-absence, datedebut, description]
|
||||
role: *Secretaire
|
||||
createur: Aurélien
|
||||
test18:
|
||||
@ -256,7 +256,7 @@ test18:
|
||||
etat: *EtudiantCreated
|
||||
page: *Absence
|
||||
champsModifie: null
|
||||
champsInteractions: [supprimer_Absence, datedebut, afficher_Liste_Absence]
|
||||
champsInteractions: [delete-absence, datedebut, display-list-absence]
|
||||
role: *Secretaire
|
||||
createur: Aurélien
|
||||
test19:
|
||||
@ -420,7 +420,7 @@ test34:
|
||||
[
|
||||
id:in-expnom,
|
||||
id:ProgrammesLink,
|
||||
id:titre_,
|
||||
id:titre-,
|
||||
id:tf_coefficient,
|
||||
id:tf_submit,
|
||||
]
|
||||
@ -584,31 +584,31 @@ test48:
|
||||
Accès à la page de création d'UE dans la formation précédemment créée
|
||||
Remplir et soumettre le formulaire
|
||||
Soumettre le formulaire;
|
||||
resultat: La page sur laquelle on est dirigée contient "Info Informatique"
|
||||
resultat: Le nom et l'accronyme de l'UE sont dans la page de la formation
|
||||
etat: *DeptCreated
|
||||
page: *Notes
|
||||
champsModifie:
|
||||
champsModifie: null
|
||||
champsInteractions:
|
||||
[
|
||||
tf_titre,
|
||||
tf_acronyme,
|
||||
tf_submit,
|
||||
tf_titre_officiel,
|
||||
create_formation_link,
|
||||
errorMessage,
|
||||
]
|
||||
[id:tf_titre, id:tf_acronyme, id:tf_submit, link:ue_create]
|
||||
role: *AdminDPT
|
||||
createur: Aurélien
|
||||
test49:
|
||||
intitulé: Ajout d'une matière à l'UE créée
|
||||
intitulé: Ajout d'une matière à la formation créée
|
||||
operation: Soumettre le formulaire d'ajout de matière
|
||||
resultat: La page sur laquelle on est dirigée contient la classe notes_matiere_list et un de ses enfants contient Systeme
|
||||
resultat: La page sur laquelle on est dirigée contient la classe notes_matiere_list et l'intitulé de la matière est présent
|
||||
etat: *MatiereCreated
|
||||
page: *Notes
|
||||
champs:
|
||||
champsModifie: null
|
||||
champsInteractions: [
|
||||
id:tf_titre,
|
||||
id:tf_acronyme,
|
||||
id:tf_submit,
|
||||
link:matiere_create
|
||||
link:matiere_edit,
|
||||
]
|
||||
role: *AdminDPT
|
||||
createur: Aurélien
|
||||
test50:
|
||||
test51:
|
||||
intitulé: Affecter des absences à un étudiant depuis la gestion des absences
|
||||
operation: Selectionner la semaine concernée et cocher les cases correspondantes pour un étudiant
|
||||
resultat: Le compteur d'absence de l'étudiant à été mis à jour
|
||||
@ -617,7 +617,7 @@ test50:
|
||||
champs:
|
||||
role: [*Secretaire, *Prof]
|
||||
createur: Aurélien
|
||||
test51:
|
||||
test52:
|
||||
intitulé: Générer les absences pour une journée
|
||||
operation: Généner le récapitulatif des absences
|
||||
resultat: La page générée contient les absences préalablement créée
|
||||
@ -626,7 +626,7 @@ test51:
|
||||
champs:
|
||||
role: *Secretaire
|
||||
createur: Aurélien
|
||||
test52:
|
||||
test53:
|
||||
intitulé: Créer une répartition
|
||||
operation: Dans le menu modifier créer des groupes, rentrer le nom de la partition et clicker sur nouvelle partition
|
||||
resultat: Le tableau contient une nouvelle ligne avec le nom de la partition préalablement rempli
|
||||
@ -635,7 +635,7 @@ test52:
|
||||
champs:
|
||||
role: [*Secretaire, *AdminDPT]
|
||||
createur: Aurélien
|
||||
test53:
|
||||
test54:
|
||||
intitulé: Créer un groupe
|
||||
operation: Dans le menu modifier/créer des groupes, clicker sur répartir à coté de la partition concernée, remplir groupName et appuyer sur créer groupe
|
||||
resultat: Le groupe apprait dans la div groups
|
||||
@ -644,7 +644,7 @@ test53:
|
||||
champs:
|
||||
role: [*Secretaire, *AdminDPT]
|
||||
createur: Aurélien
|
||||
test54:
|
||||
test55:
|
||||
intitulé: Affecter des étudiants à un groupe
|
||||
operation: Dans une répartition, déplacer des étudiants de étudiants sans groupe au groupe souhaité, enregister ces groupes
|
||||
resultat: Le groupe (discretelink) apparait maintenant sur la fiche des étudiants correspondant
|
||||
|
Binary file not shown.
8
createDepartement.py
Normal file
8
createDepartement.py
Normal file
@ -0,0 +1,8 @@
|
||||
import subprocess
|
||||
from setting import LINK_SCODOC_SERVER, NOM_DPT
|
||||
|
||||
|
||||
def main():
|
||||
cmdProcess = ["./scriptCreationDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
53
creationSiteDepartement.py
Normal file
53
creationSiteDepartement.py
Normal file
@ -0,0 +1,53 @@
|
||||
# coding: utf8
|
||||
import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import HtmlTestRunner
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
BASE_URL,
|
||||
NOM_DPT,
|
||||
LINK_SCODOC_SERVER,
|
||||
BASE_NOT_SECURED_URL,
|
||||
NAVIGATEUR,
|
||||
)
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.ui import Select, WebDriverWait
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver.support.select import Select
|
||||
|
||||
URL = BASE_URL + NOM_DPT + "/Scolarite"
|
||||
|
||||
ACRONYME_FORMATION = "FormationTEST"
|
||||
|
||||
|
||||
def main():
|
||||
if NAVIGATEUR == "firefox":
|
||||
driver = webdriver.Firefox()
|
||||
else:
|
||||
driver = webdriver.Chrome()
|
||||
driver.get(
|
||||
"https://"
|
||||
+ SCODOC_ADMIN_ID
|
||||
+ ":"
|
||||
+ SCODOC_ADMIN_PASS
|
||||
+ "@"
|
||||
+ BASE_NOT_SECURED_URL
|
||||
+ "force_admin_authentication"
|
||||
)
|
||||
driver.get(BASE_URL + "scodoc_admin")
|
||||
time.sleep(2)
|
||||
try:
|
||||
select = Select(driver.find_element_by_id("create-dept"))
|
||||
select.select_by_visible_text(NOM_DPT)
|
||||
driver.find_element_by_id("create-dept").submit()
|
||||
time.sleep(1)
|
||||
driver.find_element_by_id("tf_submit").click()
|
||||
time.sleep(1)
|
||||
driver.close()
|
||||
except NoSuchElementException:
|
||||
driver.close()
|
8
deleteDepartement.py
Normal file
8
deleteDepartement.py
Normal file
@ -0,0 +1,8 @@
|
||||
import subprocess
|
||||
from setting import LINK_SCODOC_SERVER, NOM_DPT
|
||||
|
||||
|
||||
def main():
|
||||
cmdProcess = ["./scriptDeleteDepartement.sh", LINK_SCODOC_SERVER, NOM_DPT]
|
||||
process = subprocess.Popen(cmdProcess)
|
||||
process.wait()
|
@ -1,205 +0,0 @@
|
||||
<formation acronyme="DUT Info" code_specialite="" type_parcours="100" titre_officiel="DUT Informatique" formation_code="FCOD2" version="1" titre="DUT Informatique" formation_id="FORM234">
|
||||
<ue acronyme="UE11" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE11" numero="1" titre="Base de l'informatique" type="0">
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M1101" code_apogee="" ects="" heures_tp="30.0" numero="1" abbrev="" heures_cours="10.0" module_type="0" titre="Introduction aux systèmes informatiques" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages" numero="2">
|
||||
<module coefficient="2.0" code="M1102" code_apogee="" ects="" heures_tp="30.0" numero="10" abbrev="Algorithmique" heures_cours="10.0" module_type="0" titre="Introduction à l’algorithmique et à la programmation" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages Avancé" numero="3">
|
||||
<module coefficient="2.0" code="M1103" code_apogee="" ects="" heures_tp="20.0" numero="3" abbrev="Structure de données" heures_cours="10.0" module_type="0" titre="Structure de données et algorithmes fondamentaux" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="4">
|
||||
<module coefficient="3.0" code="M1104" code_apogee="" ects="" heures_tp="25.0" numero="4" abbrev="BDD" heures_cours="10.0" module_type="0" titre="Introduction aux bases de données" semestre_id="1" heures_td="25.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M1105" code_apogee="" ects="" heures_tp="25.0" numero="5" abbrev="CDIN" heures_cours="0.0" module_type="0" titre="Conception de documents et d’interfaces numériques" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="6">
|
||||
<module coefficient="3.0" code="M1106" code_apogee="" ects="" heures_tp="0.0" numero="6" abbrev="Projet" heures_cours="0.0" module_type="0" titre="Projet tutoré : découverte" semestre_id="1" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE21" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE21" numero="1" titre="Informatique approfondie" type="0">
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M2101" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Architecture et Programmation des mécanismes de base d’un système informatique" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architecture matérielle - Systèmes d’exploitation - Réseaux avancé" numero="2">
|
||||
<module coefficient="2.0" code="M2102" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Architecture des réseaux" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages Analyse, conception et développement d’applications" numero="3">
|
||||
<module coefficient="2.0" code="M2103" code_apogee="" ects="" heures_tp="30.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Bases de la programmation orientée objet" semestre_id="2" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="4">
|
||||
<module coefficient="2.0" code="M2104" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="COO" heures_cours="10.0" module_type="0" titre="Bases de la conception orientée objet" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Interface homme-machine" numero="5">
|
||||
<module coefficient="2.0" code="M2105" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Introduction aux interfaces homme-machine" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="6">
|
||||
<module coefficient="2.0" code="M2106" code_apogee="" ects="" heures_tp="20.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Programmation et administration des bases de données" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="7">
|
||||
<module coefficient="3.0" code="M2107" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré : Description et planification de projet" semestre_id="2" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE31" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD5" numero="1" titre="Informatique avancée" type="0">
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M3101" code_apogee="" ects="" heures_tp="16.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Principes des systèmes d’exploitation" semestre_id="3" heures_td="14.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation, Réseaux" numero="2">
|
||||
<module coefficient="2.0" code="M3102" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Services réseaux" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Algorithmique - Programmation - Langages avancé" numero="3">
|
||||
<module coefficient="2.0" code="M3103" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Algorithmique avancée" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité" numero="4">
|
||||
<module coefficient="2.0" code="M3104" code_apogee="" ects="" heures_tp="16.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Programmation Web côté serveur" semestre_id="3" heures_td="14.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="5">
|
||||
<module coefficient="16.0" code="M3105" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Conception et programmation objet avancées" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Systèmes de gestion de bases de données" numero="6">
|
||||
<module coefficient="2.0" code="M3106C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Bases de données avancées" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS1" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE41" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD8" numero="1" titre="Compléments en informatique" type="0">
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation - Réseaux" numero="1">
|
||||
<module coefficient="2.0" code="M4101C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Administration système et réseau" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Architectures matérielles - Systèmes d’exploitation – Réseaux Analyse, conception et développement d’applications" numero="2">
|
||||
<module coefficient="2.0" code="M4102C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Programmation répartie" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web – Internet - Mobilité" numero="3">
|
||||
<module coefficient="2.0" code="M4103C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Programmation Web – client riche" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Web - Internet - Mobilité - Mobile" numero="4">
|
||||
<module coefficient="3.0" code="M4104C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Conception et développement d’applications mobiles" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Analyse, conception et développement d’applications" numero="5">
|
||||
<module coefficient="2.0" code="M4105C" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Compléments d’informatique en vue d’une insertion immédiate" semestre_id="4" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="6">
|
||||
<module coefficient="3.0" code="M4106" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré – Compléments" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS1" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE12" coefficient="0.0" is_external="0" code_apogee="" ue_code="UE12" numero="2" titre="Bases de culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M1201" code_apogee="" ects="" heures_tp="17.0" numero="1" abbrev="" heures_cours="10.0" module_type="0" titre="Mathématiques discrètes" semestre_id="1" heures_td="18.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M1202" code_apogee="" ects="" heures_tp="12.0" numero="10" abbrev="" heures_cours="6.0" module_type="0" titre="Algèbre linéaire" semestre_id="1" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="3">
|
||||
<module coefficient="2.0" code="M1203" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Environnement économique" semestre_id="1" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Organisation" numero="4">
|
||||
<module coefficient="1.0" code="M1204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Fonctionnement des organisations" semestre_id="1" heures_td="20.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M1205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Fondamentaux de la communication" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M1206" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Anglais et Informatique" semestre_id="1" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP Expression - Communication" numero="7">
|
||||
<module coefficient="1.0" code="M1207" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Connaître le monde professionnel" semestre_id="1" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="17">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="1" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE22" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD4" numero="2" titre="Approfondissements en culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M2201" code_apogee="" ects="" heures_tp="18.0" numero="10" abbrev="" heures_cours="11.0" module_type="0" titre="Graphes et langages" semestre_id="2" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M2202" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Analyse et méthodes numériques" semestre_id="2" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Droit - Organisation" numero="3">
|
||||
<module coefficient="2.0" code="M2203" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="12.0" module_type="0" titre="Environnement comptable, financier, juridique et social" semestre_id="2" heures_td="18.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit Analyse, conception et développement d’applications" numero="4">
|
||||
<module coefficient="2.0" code="M2204" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Gestion de projet informatique" semestre_id="2" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="1.0" code="M2205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication, information et argumentation" semestre_id="2" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M2206" code_apogee="" ects="" heures_tp="22.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communiquer en anglais" semestre_id="2" heures_td="23.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP" numero="7">
|
||||
<module coefficient="1.0" code="M2207" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="PPP - Identifier ses compétences" semestre_id="2" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="17">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="2" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE32" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD6" numero="2" titre="Culture scientifique, sociale et humaine avancées" type="0">
|
||||
<matiere titre="Mathématiques" numero="1">
|
||||
<module coefficient="2.0" code="M3201" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Probabilités et statistique" semestre_id="3" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques avancées" numero="2">
|
||||
<module coefficient="2.0" code="M3202C" code_apogee="" ects="" heures_tp="14.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Modélisations mathématiques" semestre_id="3" heures_td="16.0" />
|
||||
</matiere>
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="3">
|
||||
<module coefficient="2.0" code="M3203" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="10.0" module_type="0" titre="Droit des technologies de l’information et de la communication" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Gestion" numero="4">
|
||||
<module coefficient="2.0" code="M3204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="15.0" module_type="0" titre="Gestion des systèmes d’information" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression - Communication" numero="5">
|
||||
<module coefficient="2.0" code="M3205" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication professionnelle" semestre_id="3" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="6">
|
||||
<module coefficient="2.0" code="M3206" code_apogee="" ects="" heures_tp="22.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Collaborer en anglais" semestre_id="3" heures_td="23.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="16">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE33" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD7" numero="2" titre="Méthodologie et projets" type="0">
|
||||
<matiere titre="Analyse, conception et développement d’applications Économie - gestion - Organisation - Droit" numero="1">
|
||||
<module coefficient="2.0" code="M3301" code_apogee="" ects="" heures_tp="24.0" numero="10" abbrev="" heures_cours="14.0" module_type="0" titre="Méthodologie de la production d’applications" semestre_id="3" heures_td="22.0" />
|
||||
</matiere>
|
||||
<matiere titre="Projets tutorés" numero="2">
|
||||
<module coefficient="3.0" code="M3302" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Projet tutoré - Mise en situation professionnelle" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="PPP" numero="3">
|
||||
<module coefficient="2.0" code="M3303" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="PPP - Préciser son projet" semestre_id="3" heures_td="10.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="13">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="3" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE42" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD9" numero="2" titre="Compléments de culture scientifique, sociale et humaine" type="0">
|
||||
<matiere titre="Économie - Gestion - Organisation - Droit" numero="1">
|
||||
<module coefficient="2.0" code="M4201C" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Ateliers de création d’entreprise" semestre_id="4" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Mathématiques" numero="2">
|
||||
<module coefficient="2.0" code="M4202C" code_apogee="" ects="" heures_tp="10.0" numero="10" abbrev="" heures_cours="8.0" module_type="0" titre="Introduction à la recherche opérationnelle et aide à la décision" semestre_id="4" heures_td="12.0" />
|
||||
</matiere>
|
||||
<matiere titre="Expression – Communication" numero="3">
|
||||
<module coefficient="2.0" code="M4203" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Communication dans les organisations" semestre_id="4" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Anglais" numero="4">
|
||||
<module coefficient="2.0" code="M4204" code_apogee="" ects="" heures_tp="15.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Travailler en anglais" semestre_id="4" heures_td="15.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="14">
|
||||
<module coefficient="0.0" code="MALUS2" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
<ue acronyme="UE43" coefficient="0.0" is_external="0" code_apogee="" ue_code="UCOD10" numero="3" titre="Mise en situation professionnelle" type="0">
|
||||
<matiere titre="STAGE" numero="1">
|
||||
<module coefficient="12.0" code="M4301" code_apogee="" ects="" heures_tp="0.0" numero="10" abbrev="" heures_cours="0.0" module_type="0" titre="Stage professionnel" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
<matiere titre="Malus" numero="11">
|
||||
<module coefficient="0.0" code="MALUS3" code_apogee="" ects="" heures_tp="0.0" numero="0" abbrev="" heures_cours="0.0" module_type="1" titre="" semestre_id="4" heures_td="0.0" />
|
||||
</matiere>
|
||||
</ue>
|
||||
</formation>
|
File diff suppressed because it is too large
Load Diff
21
lancement_de_tout_les_tests.sh
Executable file
21
lancement_de_tout_les_tests.sh
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
#Ce script lance en séquence les différents jeux de tests.
|
||||
if [ "$#" -eq 1 ]
|
||||
then
|
||||
if [ "$1" = "--cleanup" ] || [ "$1" = "--c" ]
|
||||
then
|
||||
rm -rf ./ResultatTest/*
|
||||
else
|
||||
echo "Mauvaise utilisation de la commande, utilisez --cleanup ou -c pour supprimer les anciens rapport de tests"
|
||||
fi
|
||||
fi
|
||||
python3 01_creation_departement_test.py;
|
||||
python3 02_creation_formation_test.py;
|
||||
python3 03_etudiant_test.py;
|
||||
python3 04_creation_absence_test.py;
|
||||
python3 05_saisie_note_test.py;
|
||||
python3 06_test_moyenne.py;
|
||||
python3 07_test_admission.py;
|
||||
python3 deleteDepartement.py;
|
||||
./scriptGenerateReportPage.sh
|
||||
|
@ -1,6 +0,0 @@
|
||||
>>>
|
||||
.....
|
||||
----------------------------------------------------------------------
|
||||
Ran 5 tests in 77.731s
|
||||
|
||||
OK
|
99
readme.md
99
readme.md
@ -1,14 +1,93 @@
|
||||
I Configuration
|
||||
#Tests E2E du logiciel Scodoc
|
||||
|
||||
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)
|
||||
Renommer le fichier en .env
|
||||
Ces jeux de tests ont été conçus pour tester automatiquement Scodoc d'un point de vue E2E (End to End). Ils sont en théorie indépendants les uns des autres. Ils ont étés développés en python 3.
|
||||
## I Configuration
|
||||
Dans cette partie je vais détailler les prérequis pour l'environnement de développement
|
||||
### Prérequis Module
|
||||
Ces prérequis peuvent être trouvés dans requirements.txt qui se trouvent à la base du projet.
|
||||
Vous devez avoir pip d'installé, normalement il est fourni avec les versions de python3, sinon vous trouverez les étapes d'installation [ici](https://pip.pypa.io/en/stable/installing/)
|
||||
Les modules suivant sont nécessaire :
|
||||
>selenium==3.141.0
|
||||
>python-dotenv==0.17.1
|
||||
>HtmlTestRunner==0.8.0
|
||||
|
||||
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
|
||||
Vous pouvez les installer manuellement avec pip avec la commande suivante :
|
||||
>pip install selenium
|
||||
|
||||
IL y a certains module qui sont requis pour lancer ces tests pour cela les installer avec pip à l'aide des commandes suivante :
|
||||
pip install selenium
|
||||
pip install python-dotenv
|
||||
Les tests sont prévus pour fonctionner en python 3 avec unit test
|
||||
ou alternativement avec
|
||||
>pip install -r requirements.txt
|
||||
### Environnement de test
|
||||
Un modèle de .env est fourni dans ce projet, pour que les tests soient fonctionnel vous devez le remplir et le renommer en .env. Ce dernier servira à remplir différentes informations spécifiques concernant votre environnement Scodoc. Nous allons le voir ici en détail
|
||||
#### .env
|
||||
|
||||
#TODO Lancer les test en parrallèle
|
||||
>BASE_URL = "https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
|
||||
|
||||
Ici sera le lien vers la page d'accueil de votre Scodoc
|
||||
|
||||
>NOM_DPT = "test01"
|
||||
|
||||
Le nom du département surlequel vous allez effectuer vos tests, il est **FORTEMENT** conseillés de mettre ici un nom de département qui n'existe pas, sous risque de perte de données.
|
||||
|
||||
>SCODOC_ADMIN_ID = "admin_id"
|
||||
|
||||
Le nom d'utilisateur d'un Admin Scodoc.
|
||||
|
||||
>SCODOC_ADMIN_PASS = "admin_password"
|
||||
|
||||
Le mot de passe d'un Admin Scodoc.
|
||||
|
||||
>SCODOC_ENS_ID = "enseignant_id"
|
||||
|
||||
Le nom d'utilisateur d'un enseignant lambda qui servira pour rentrer des notes, soit qui existe, soit qui sera créé.
|
||||
|
||||
>SCODOC_ENS_PASS = "enseignant_password@10"
|
||||
|
||||
Le mot de passe de l'utilisateur précédent, si l'utilisateur précédent n'existe pas, veillez à avoir un mot de passe suffisamenent compliqué pour la création de ce dernier.
|
||||
|
||||
>SCODOC_CHEF_ID = "chef_id"
|
||||
|
||||
Le nom d'utilisateur d'un enseignant lambda qui se verra attribué le rôle de résponsable d'un module afin de créer des interrogations , soit qui existe, soit qui sera créé.
|
||||
|
||||
>SCODOC_CHEF_PASS = "p@ssword42@"
|
||||
|
||||
Le mot de passe de l'utilisateur précédent, si l'utilisateur précédent n'existe pas, veillez à avoir un mot de passe suffisamenent compliqué pour la
|
||||
|
||||
>LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
|
||||
|
||||
Le lien vers votre serveur Scodoc, ce dernier servira à lancer des scripts de mise en place sur le serveur. Veillez donc à avoir une connexion avec les droits root sur votre serveur, de préférences avec échange de clef ssh.
|
||||
|
||||
>BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
|
||||
|
||||
Le lien vers la page de choix de département, avec le format précisé.
|
||||
|
||||
>NAVIGATEUR = "firefox"
|
||||
|
||||
Ici vous pouvez choisir entre firefox et chrome,choisissez le navigateur dans lequel vous voulez que vos tests se déroulent. Cette ligne permettra au programme de choisir le webdriver correspondant.
|
||||
|
||||
#### Explications du fonctionnement des tests
|
||||
|
||||
Les tests sont prévus pour fonctionner avec firefox ou chrome les webdrivers sont intégrés dans le projet pour éviter de devoir les installer manuellement. Ces webdrivers servent à faire la connexion entre python et le navigateur.
|
||||
|
||||
##Lancement des tests
|
||||
|
||||
Pour lancer les tests, assurez vous d'avoir une connexion possible avec votre serveur. Positionnez vous à la racine de ce projet et il suffit donc de lancer la commande par exemple pour le premier jeux de tests
|
||||
|
||||
>python3 01_creation_departement_test.py
|
||||
|
||||
Alternativement vous pouvez lancer l'ensemble des tests avec la commande
|
||||
|
||||
>./lancement_de_tout_les_tests.sh
|
||||
|
||||
L'option --c ou --cleanup est disponible si vous souhaitez effacer tout les rapports précédents
|
||||
|
||||
###Resultats des tests
|
||||
|
||||
Les tests sont présentés sur une page HTML qui se trouve dans le dossier ResultatTest, il y a une page HTML par jeux de tests créée. Un récapitulatif est également créé par le biais du script
|
||||
|
||||
>./scriptGenerateReportPage.sh
|
||||
|
||||
Celui ci est lancé automatiquement à la fin du script
|
||||
|
||||
>./lancement_de_tout_les_tests.sh
|
||||
|
||||
Vous y retrouverez les liens menant au détails de chaque rapport ainsi qu'un résumé du nombre de test passés/échoués
|
@ -1,2 +1,3 @@
|
||||
selenium==3.141.0
|
||||
python-dotenv==0.17.1
|
||||
HtmlTestRunner==0.8.0
|
||||
python-dotenv==0.18.0
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
#Se script se charge de se connecter au serveur scodoc et créer le département donné en paramètre
|
||||
if [ "$#" -ne 2 ];
|
||||
then
|
||||
echo "Pas assez d'arguments"
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
#Se script se charge de se connecter au serveur scodoc et supprimer le département donné en paramètre
|
||||
if [ "$#" -ne 2 ];
|
||||
then
|
||||
echo "Pas assez d'arguments"
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
#Ce script se rends sur le serveur scodoc et lance le script précisé sur celui ci
|
||||
if [ "$#" -ne 3 ];
|
||||
then
|
||||
echo "Pas assez d'arguments"
|
||||
|
43
scriptGenerateReportPage.sh
Executable file
43
scriptGenerateReportPage.sh
Executable file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
TIME=$(date +%d%m_%H%M%S)
|
||||
echo '<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="Author" content="Made by 'tree'">
|
||||
<meta name="GENERATOR" content="$Version: $ tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $">
|
||||
<title>Directory Tree</title>
|
||||
<style type="text/css">
|
||||
<!--
|
||||
BODY { font-family : ariel, monospace, sans-serif; }
|
||||
P { font-weight: normal; font-family : ariel, monospace, sans-serif; color: black; background-color: transparent;}
|
||||
B { font-weight: normal; color: black; background-color: transparent;}
|
||||
A:visited { font-weight : normal; text-decoration : none; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
|
||||
A:link { font-weight : normal; text-decoration : none; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
|
||||
A:hover { color : #000000; font-weight : normal; text-decoration : underline; background-color : yellow; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
|
||||
A:active { color : #000000; font-weight: normal; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
|
||||
.VERSION { font-size: small; font-family : arial, sans-serif; }
|
||||
.NORM { color: black; background-color: transparent;}
|
||||
.FIFO { color: purple; background-color: transparent;}
|
||||
.CHAR { color: yellow; background-color: transparent;}
|
||||
.DIR { color: blue; background-color: transparent;}
|
||||
.BLOCK { color: yellow; background-color: transparent;}
|
||||
.LINK { color: aqua; background-color: transparent;}
|
||||
.SOCK { color: fuchsia;background-color: transparent;}
|
||||
.EXEC { color: green; background-color: transparent;}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Directory Tree</h1><p>
|
||||
<a href="./ResultatTest/">./ResultatTest/</a><br>
|
||||
' >> ./ResultatTest/Résumé_"${TIME}".html
|
||||
for file in ./ResultatTest/*.html; do
|
||||
RESULT=$(cat $file | grep "Summary")
|
||||
BASEFILE=$(basename $file)
|
||||
LINK="$BASEFILE"
|
||||
if [[ $LINK != *"Résumé"* ]] ; then
|
||||
echo "├── <a href=${LINK}>${BASEFILE}</a>${RESULT}<br>" >> ./ResultatTest/Résumé_${TIME}.html
|
||||
fi
|
||||
done
|
||||
echo '<br><br><br><br></body></html>' >> ./ResultatTest/Résumé_"${TIME}".html
|
50
suppressionSiteDepartement.py
Normal file
50
suppressionSiteDepartement.py
Normal file
@ -0,0 +1,50 @@
|
||||
# coding: utf8
|
||||
import unittest
|
||||
import time
|
||||
import subprocess
|
||||
import HtmlTestRunner
|
||||
from setting import (
|
||||
SCODOC_ADMIN_ID,
|
||||
SCODOC_ADMIN_PASS,
|
||||
BASE_URL,
|
||||
NOM_DPT,
|
||||
LINK_SCODOC_SERVER,
|
||||
BASE_NOT_SECURED_URL,
|
||||
NAVIGATEUR,
|
||||
)
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.support.ui import Select, WebDriverWait
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver.support.select import Select
|
||||
|
||||
URL = BASE_URL + NOM_DPT + "/Scolarite"
|
||||
|
||||
ACRONYME_FORMATION = "FormationTEST"
|
||||
|
||||
|
||||
def main():
|
||||
if NAVIGATEUR == "firefox":
|
||||
driver = webdriver.Firefox()
|
||||
else:
|
||||
driver = webdriver.Chrome()
|
||||
driver.get(
|
||||
"https://"
|
||||
+ SCODOC_ADMIN_ID
|
||||
+ ":"
|
||||
+ SCODOC_ADMIN_PASS
|
||||
+ "@"
|
||||
+ BASE_NOT_SECURED_URL
|
||||
+ "force_admin_authentication"
|
||||
)
|
||||
driver.get(BASE_URL + "scodoc_admin")
|
||||
time.sleep(2)
|
||||
try:
|
||||
select = Select(driver.find_element_by_id("delete-dept"))
|
||||
select.select_by_visible_text(NOM_DPT)
|
||||
driver.find_element_by_id("delete-dept").submit()
|
||||
driver.close()
|
||||
except NoSuchElementException:
|
||||
driver.close()
|
Loading…
Reference in New Issue
Block a user