Compare commits

..

No commits in common. "scodoc8" and "master" have entirely different histories.

21 changed files with 2060 additions and 2121 deletions

View File

@ -1,5 +1,4 @@
SCHEMA = "https" BASE_URL = "https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
BASE_URL = "scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
NOM_DPT = "test01" NOM_DPT = "test01"
SCODOC_ADMIN_ID = "admin_id" SCODOC_ADMIN_ID = "admin_id"
SCODOC_ADMIN_PASS = "admin_password" SCODOC_ADMIN_PASS = "admin_password"
@ -8,5 +7,5 @@ SCODOC_ENS_PASS = "enseignant_password@10"
SCODOC_CHEF_ID = "chef_id" SCODOC_CHEF_ID = "chef_id"
SCODOC_CHEF_PASS = "p@ssword42@" SCODOC_CHEF_PASS = "p@ssword42@"
LINK_SCODOC_SERVER = "root@ssh_server_scodoc" LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
BASE_SSH_URL = "scodoc-dev-iutinfo.univ-lille.fr/" BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
NAVIGATEUR = "firefox" NAVIGATEUR = "firefox"

View File

@ -1,94 +1,89 @@
# coding: utf8 # coding: utf8
import unittest import unittest
import time import time
import subprocess import subprocess
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
import suppressionSiteDepartement import suppressionSiteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, NOM_DPT,
SCODOC_PORT, LINK_SCODOC_SERVER,
NOM_DPT, BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER, NAVIGATEUR,
BASE_SSH_URL, )
NAVIGATEUR, from selenium import webdriver
) from selenium.webdriver.common.keys import Keys
from selenium import webdriver from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select
class PythonOrgSearch(unittest.TestCase):
URL_ROOT = SCHEMA + "://" + + + ":" + SCODOC_PORT # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
URL_AUTH = "/".join((URL_ROOT, "auth", "login")) def setUp(self):
URL_SCODOC8 = "/".join((URL_ROOT, "index")) if NAVIGATEUR == "firefox":
URL_HOME = "/".join((URL_ROOT, "ScoDoc", "index")) self.driver = webdriver.Firefox()
URL_DEPT = "/".join((URL_ROOT, "ScoDoc", NOM_DPT, "Scolarite", "index_html")) else:
URL_ADMIN = "/".join((URL_ROOT, "ScoDoc", "admin")) self.driver = webdriver.Chrome()
self.driver.get(
class PythonOrgSearch(unittest.TestCase): "https://"
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test + SCODOC_ADMIN_ID
def setUp(self): + ":"
next_page = "" + SCODOC_ADMIN_PASS
if NAVIGATEUR == "firefox": + "@"
self.driver = webdriver.Firefox() + BASE_NOT_SECURED_URL
else: + "force_admin_authentication"
self.driver = webdriver.Chrome() )
auth_page = URL_AUTH + "?next=%2F" + next_page self.driver.get(BASE_URL)
self.driver.get(auth_page)
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) # Test : Verification de la connexion admin effective
self.driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) # @expected : "Bonjour admin" est présent sur la page d'accueil
self.driver.find_element_by_id("submit").click() def test_01_connexion_admin(self):
self.driver.get(URL_SCODOC8) driver = self.driver
self.assertTrue("admin" in driver.page_source)
# Test : Verification de la connexion admin effective
# @expected : "Bonjour admin" est présent sur la page d'accueil # Test : Creer un département
def test_01_connexion_admin(self): # @expected : Le département est présent sur la page d'accueil
driver = self.driver def test_02_create_departement(self):
self.assertTrue("admin" in driver.page_source) driver = self.driver
driver.get(BASE_URL + "/scodoc_admin")
# Test : Creer un département time.sleep(2)
# @expected : Le département est présent sur la page d'accueil select = Select(driver.find_element_by_id("create-dept"))
def test_02_create_departement(self): select.select_by_visible_text(NOM_DPT)
driver = self.driver driver.find_element_by_id("create-dept").submit()
driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + "/scodoc_admin") time.sleep(1)
time.sleep(2) driver.find_element_by_id("tf_submit").click()
select = Select(driver.find_element_by_id("create-dept")) driver.get(BASE_URL)
select.select_by_visible_text(NOM_DPT) self.assertTrue(NOM_DPT in driver.page_source)
driver.find_element_by_id("create-dept").submit()
time.sleep(1) # Test : Suppresion d'un département, puis lancement d'un script coté serveur pour supprimer sa base de données
driver.find_element_by_id("tf_submit").click() # @expected : Le département n'apparait plus sur la page d'accueil
driver.get(URL_HOME) def test_03_delete_departement(self):
self.assertTrue(NOM_DPT in driver.page_source) driver = self.driver
driver.get(BASE_URL + "/scodoc_admin")
# Test : Suppresion d'un département, puis lancement d'un script coté serveur pour supprimer sa base de données select = Select(driver.find_element_by_id("delete-dept"))
# @expected : Le département n'apparait plus sur la page d'accueil select.select_by_visible_text(NOM_DPT)
def test_03_delete_departement(self): driver.find_element_by_id("delete-dept").submit()
driver = self.driver driver.get(BASE_URL)
driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + "/scodoc_admin") self.assertTrue(NOM_DPT not in driver.page_source)
select = Select(driver.find_element_by_id("delete-dept"))
select.select_by_visible_text(NOM_DPT) # ferme la fenetre à chaque fin de test
driver.find_element_by_id("delete-dept").submit() def tearDown(self):
driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT) self.driver.close()
self.assertTrue(NOM_DPT not in driver.page_source)
# ferme la fenetre à chaque fin de test if __name__ == "__main__":
def tearDown(self): deleteDepartement.main()
self.driver.close() createDepartement.main()
suppressionSiteDepartement.main()
unittest.main(
if __name__ == "__main__": testRunner=HtmlTestRunner.HTMLTestRunner(
deleteDepartement.main() report_name="01_création_département",
createDepartement.main() output="./ResultatTest",
suppressionSiteDepartement.main() combine_reports=True,
unittest.main( )
testRunner=HtmlTestRunner.HTMLTestRunner( )
report_name="01_création_département",
output="./ResultatTest",
combine_reports=True,
)
)

View File

@ -1,271 +1,268 @@
# coding: utf8 # coding: utf8
import unittest import unittest
import time import time
import subprocess import subprocess
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
import creationUtilisateurs from setting import (
from setting import ( SCODOC_ADMIN_ID,
SCODOC_ADMIN_ID, SCODOC_ADMIN_PASS,
SCODOC_ADMIN_PASS, BASE_URL,
SCHEMA, NOM_DPT,
SCODOC_SERVER, LINK_SCODOC_SERVER,
SCODOC_PORT, BASE_NOT_SECURED_URL,
NOM_DPT, NAVIGATEUR,
NAVIGATEUR, )
) from selenium import webdriver
from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import Select from selenium.webdriver.support.select import Select
from selenium.webdriver.support.select import Select
URL = BASE_URL + NOM_DPT + "/Scolarite"
URL_ROOT = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT
URL_AUTH = "/".join((URL_ROOT, "auth", "login")) ACRONYME_FORMATION = "formationtest"
URL_SCODOC8 = "/".join((URL_ROOT, "index"))
URL_HOME = "/".join((URL_ROOT, "ScoDoc", "index"))
URL_DEPT = "/".join((URL_ROOT, "ScoDoc", NOM_DPT, "Scolarite", "index_html")) class PythonOrgSearch(unittest.TestCase):
URL_ADMIN = "/".join((URL_ROOT, "ScoDoc", "admin")) # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
def setUp(self):
ACRONYME_FORMATION = "formationtest" if NAVIGATEUR == "firefox":
URL = URL_SCODOC8 self.driver = webdriver.Firefox()
else:
class PythonOrgSearch(unittest.TestCase): self.driver = webdriver.Chrome()
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test self.wait = WebDriverWait(self.driver, 10)
def setUp(self): self.driver.get(
if NAVIGATEUR == "firefox": "https://"
self.driver = webdriver.Firefox() + SCODOC_ADMIN_ID
else: + ":"
self.driver = webdriver.Chrome() + SCODOC_ADMIN_PASS
self.wait = WebDriverWait(self.driver, 10) + "@"
auth_page = URL_AUTH + ("?next=" + URL_HOME).replace("/", "%2F") + BASE_NOT_SECURED_URL
self.driver.get(auth_page) + "force_admin_authentication"
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) )
self.driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) self.driver.get(BASE_URL + "/ScoDoc")
self.driver.find_element_by_id("submit").click()
# Test Creer une formation
# Test Creer une formation # @expected : La formation se trouve dans le tableau de la liste des formations
# @expected : La formation se trouve dans le tableau de la liste des formations def test_011_create_formation(self):
def test_011_create_formation(self): driver = self.driver
global URL global URL
driver = self.driver driver.get(URL)
wait = self.wait driver.find_element_by_id("link-programmes").click()
driver.get(URL_DEPT) URL = driver.current_url
driver.find_element_by_id("link-programmes").click() driver.find_element_by_id("link-create-formation").click()
URL = driver.current_url self.wait.until(EC.url_changes(URL))
driver.find_element_by_id("link-create-formation").click() driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_titre").send_keys("TEST")
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION) driver.find_element_by_id("tf_titre_officiel").send_keys("formation de test")
driver.find_element_by_id("tf_titre").send_keys("TEST") driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_titre_officiel").send_keys("formation de test") driver.get(URL)
driver.find_element_by_id("tf_submit").click() formations = driver.find_elements_by_class_name("acronyme")
driver.get(URL) textElementAcronyme = []
formations = driver.find_elements_by_class_name("acronyme") for formation in formations:
textElementAcronyme = [] textElementAcronyme.append(formation.text)
for formation in formations: self.assertTrue(ACRONYME_FORMATION in textElementAcronyme)
textElementAcronyme.append(formation.text)
self.assertTrue(ACRONYME_FORMATION in textElementAcronyme) # Test : Changement du nom d'une formation
# @expected : Le nom de la formation est changé sur la page des formations
# Test : Changement du nom d'une formation def test_012_change_name_formation(self):
# @expected : Le nom de la formation est changé sur la page des formations driver = self.driver
def test_012_change_name_formation(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait idEditFormation = "edit-formation-" + ACRONYME_FORMATION.replace(" ","-")
driver.get(URL) driver.find_element_by_id(idEditFormation).click()
id_edit_formation = "edit-formation-" + ACRONYME_FORMATION.replace(" ","-") self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(id_edit_formation).click() driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION) driver.get(URL)
driver.find_element_by_id("tf_submit").click() formations = driver.find_elements_by_class_name("acronyme")
driver.get(URL) textElementAcronyme = []
formations = driver.find_elements_by_class_name("acronyme") for formation in formations:
text_element_acronyme = [] textElementAcronyme.append(formation.text)
for formation in formations: self.assertTrue(ACRONYME_FORMATION + ACRONYME_FORMATION in textElementAcronyme)
text_element_acronyme.append(formation.text) # Remise du nom à celui de départ
self.assertTrue(ACRONYME_FORMATION + ACRONYME_FORMATION in text_element_acronyme) driver.get(URL)
# Remise du nom à celui de départ idEditFormation = "edit-formation-" + ACRONYME_FORMATION + ACRONYME_FORMATION
driver.get(URL) driver.find_element_by_id(idEditFormation).click()
id_edit_formation = "edit-formation-" + ACRONYME_FORMATION + ACRONYME_FORMATION self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(id_edit_formation).click() driver.find_element_by_id("tf_acronyme").clear()
wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
driver.find_element_by_id("tf_acronyme").clear() driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
driver.find_element_by_id("tf_submit").click() # Test : Création d'une formation avec le même nom qu'une autre déjà existante
# @expected : La formation n'as pas pu être créée et on arrive donc sur un message d'erreur à la création
# Test : Création d'une formation avec le même nom qu'une autre déjà existante def test_013_same_name_formation(self):
# @expected : La formation n'as pas pu être créée et on arrive donc sur un message d'erreur à la création driver = self.driver
def test_013_same_name_formation(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait driver.find_element_by_id("link-create-formation").click()
driver.get(URL) self.wait.until(EC.url_changes(URL))
driver.find_element_by_id("link-create-formation").click() driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION)
wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_titre").send_keys("TEST")
driver.find_element_by_id("tf_acronyme").send_keys(ACRONYME_FORMATION) driver.find_element_by_id("tf_titre_officiel").send_keys("formation de test")
driver.find_element_by_id("tf_titre").send_keys("TEST") driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_titre_officiel").send_keys("formation de test") try:
driver.find_element_by_id("tf_submit").click() driver.find_element_by_class_name("error-message")
try: message_erreur_present = True
driver.find_element_by_class_name("error-message") except NoSuchElementException:
message_erreur_present = True message_erreur_present = False
except NoSuchElementException: self.assertTrue(message_erreur_present)
message_erreur_present = False
self.assertTrue(message_erreur_present) # 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
# Test : Ajout d'une UE dans la formation def test_014_ajout_UE(self):
# @Expected : L'UE est créée et elle apparait désormais dans la liste d'UE de la formation driver = self.driver
def test_014_ajout_UE(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait idTitre = "titre-" + ACRONYME_FORMATION.replace(" ", "-")
driver.get(URL) driver.find_element_by_id(idTitre).click()
id_titre = "titre-" + ACRONYME_FORMATION.lower().replace(" ", "-") self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(id_titre).click() driver.find_element_by_xpath("//a[contains(@href,'ue_create?')]").click()
wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_titre").send_keys("UE TEST")
driver.find_element_by_xpath("//a[contains(@href,'ue_create?')]").click() driver.find_element_by_id("tf_acronyme").send_keys("TEST")
driver.find_element_by_id("tf_titre").send_keys("UE TEST") driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_acronyme").send_keys("TEST") time.sleep(1)
driver.find_element_by_id("tf_submit").click() driver.get(URL)
time.sleep(1) driver.find_element_by_id(idTitre).click()
driver.get(URL) self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(id_titre).click() self.assertTrue("TEST UE TEST" in driver.page_source)
wait.until(EC.url_changes(URL)) driver.get(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
# Test : Ajout d'une matière dans la formation def test_015_ajout_matiere(self):
# @Expected : La matière est créée et elle apparait désormais sur la page de détail de la formation driver = self.driver
def test_015_ajout_matiere(self): global URL
driver = self.driver nomMat = "unematieretest"
wait = self.wait driver.get(URL)
driver.get(URL) time.sleep(3)
nomMat = "unematieretest" idTitre = "titre-" + ACRONYME_FORMATION
time.sleep(3) driver.find_element_by_id(idTitre).click()
idTitre = "titre-" + ACRONYME_FORMATION.lower().replace(" ", "-") self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(idTitre).click() time.sleep(3)
wait.until(EC.url_changes(URL)) driver.find_element_by_xpath("//a[contains(@href,'matiere_create?')]").click()
time.sleep(3) driver.find_element_by_id("tf_titre").send_keys(nomMat)
driver.find_element_by_xpath("//a[contains(@href,'matiere_create?')]").click() driver.find_element_by_id("tf_numero").send_keys("1")
driver.find_element_by_id("tf_titre").send_keys(nomMat) driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_numero").send_keys("1") time.sleep(3)
driver.find_element_by_id("tf_submit").click() driver.get(URL)
time.sleep(3) driver.find_element_by_id(idTitre).click()
driver.get(URL) time.sleep(3)
driver.find_element_by_id(idTitre).click() self.wait.until(EC.url_changes(URL))
time.sleep(3) elements = driver.find_elements_by_xpath("//a[contains(@href,'matiere_edit?')]")
wait.until(EC.url_changes(URL)) matIsPresent = False
elements = driver.find_elements_by_xpath("//a[contains(@href,'matiere_edit?')]") for element in elements:
matIsPresent = False if element.text == nomMat:
for element in elements: matIsPresent = True
if element.text == nomMat: self.assertTrue(matIsPresent)
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
# Test : Ajout d'un semestre dans la formation def test_016_ajout_Semestre(self):
# @Expected : Le semestre est créé et il apparait désormais dans la table des formations driver = self.driver
def test_016_ajout_Semestre(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait idAddSemestre = "add-semestre-" + ACRONYME_FORMATION.replace(" ", "-")
driver.get(URL) driver.find_element_by_id(idAddSemestre).click()
idAddSemestre = "add-semestre-" + ACRONYME_FORMATION.lower().replace(" ", "-") self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(idAddSemestre).click() driver.find_element_by_name("date_debut").send_keys("01/01/2021")
wait.until(EC.url_changes(URL)) driver.find_element_by_name("date_fin").send_keys("30/06/2021")
driver.find_element_by_name("date_debut").send_keys("01/01/2021") driver.find_element_by_name("responsable_id").send_keys("BACH Test (Bach)")
driver.find_element_by_name("date_fin").send_keys("30/06/2021") Select(driver.find_element_by_id("tf_semestre_id")).select_by_value("4")
driver.find_element_by_name("responsable_id").send_keys("BACH Jean-Sebastien (Bach)") driver.find_element_by_id("tf_submit").click()
Select(driver.find_element_by_id("tf_semestre_id")).select_by_value("4") self.wait.until(EC.url_changes(URL))
driver.find_element_by_id("tf_submit").click() self.assertTrue(
wait.until(EC.url_changes(URL)) "Nouveau semestre créé"
self.assertTrue( in driver.find_element_by_class_name("head_message").text
"Nouveau semestre créé" )
in driver.find_element_by_class_name("head_message").text driver.get(URL)
)
driver.get(URL) self.assertTrue((NOM_DPT.upper() + "-" + "DUT" + "--") in driver.page_source)
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"
# Test : Dupplique une formation sous une nouvelle version def test_017_creer_nouvelle_version_formation(self):
# @expected : La formation est dupliquée et à la version "2" driver = self.driver
def test_017_creer_nouvelle_version_formation(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait idTitre = "titre-" + ACRONYME_FORMATION
driver.get(URL) driver.find_element_by_id(idTitre).click()
idTitre = "titre-" + ACRONYME_FORMATION self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(idTitre).click() tmpurl = driver.current_url
wait.until(EC.url_changes(URL)) driver.find_element_by_xpath(
tmpurl = driver.current_url "//a[contains(@href,'formation_create_new_version?')]"
driver.find_element_by_xpath( ).click()
"//a[contains(@href,'formation_create_new_version?')]" self.wait.until(EC.url_changes(tmpurl))
).click() self.assertTrue("Nouvelle version !" in driver.page_source)
wait.until(EC.url_changes(tmpurl)) driver.get(URL)
self.assertTrue("Nouvelle version !" in driver.page_source) elements = driver.find_elements_by_class_name("version")
driver.get(URL) versionIsPresent = False
elements = driver.find_elements_by_class_name("version") for element in elements:
version_is_present = False if element.text == "2":
for element in elements: versionIsPresent = True
if element.text == "2": self.assertTrue(versionIsPresent)
version_is_present = True
self.assertTrue(version_is_present) # 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
# Test : Supprime une formation après avoir supprimé les semestres qui y sont rattachés def test_020_delete_formation(self):
# @expected : La formation n'apparait plus dans le tableau des formations driver = self.driver
def test_020_delete_formation(self): global URL
driver = self.driver driver.get(URL)
wait = self.wait idButtonDelete = "delete-formation-" + ACRONYME_FORMATION
driver.get(URL) driver.find_element_by_id(idButtonDelete).click()
id_button_delete = "delete-formation-" + ACRONYME_FORMATION self.wait.until(EC.url_changes(URL))
driver.find_element_by_id(id_button_delete).click() tmpURLDelete = driver.current_url
wait.until(EC.url_changes(URL)) listeSemestres = driver.find_elements_by_xpath(
tmp_url_delete = driver.current_url "//a[contains(@href, 'formsemestre_status?')]"
liste_semestres = driver.find_elements_by_xpath( )
"//a[contains(@href, 'formsemestre_status?')]" for semestre in listeSemestres:
) semestre.click()
for semestre in liste_semestres: self.wait.until(EC.url_changes(URL))
semestre.click() driver.find_element_by_xpath(
wait.until(EC.url_changes(URL)) "(//a[contains(text(),'Semestre')])[2]"
driver.find_element_by_xpath( ).click()
"(//a[contains(text(),'Semestre')])[2]" driver.find_element_by_xpath(
).click() "//a[contains(@href, 'formsemestre_delete?')]"
driver.find_element_by_xpath( ).click()
"//a[contains(@href, 'formsemestre_delete?')]" self.wait.until(EC.url_changes(URL))
).click() driver.find_element_by_id("tf_submit").click()
wait.until(EC.url_changes(URL)) time.sleep(2)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_xpath("//input[@value='OK']").click()
time.sleep(2) driver.get(tmpURLDelete)
driver.find_element_by_xpath("//input[@value='OK']").click() driver.find_element_by_xpath(
driver.get(tmp_url_delete) "//input[@value='Supprimer cette formation']"
driver.find_element_by_xpath( ).click()
"//input[@value='Supprimer cette formation']" driver.get(URL)
).click() formations = driver.find_elements_by_class_name("version")
driver.get(URL) formationDelete = True
formations = driver.find_elements_by_class_name("version") for formation in formations:
formation_delete = True if "1" in formation.text:
for formation in formations: formationDelete = False
if "1" in formation.text: self.assertTrue(formationDelete)
formation_delete = False
self.assertTrue(formation_delete) # def test_create_module(self):
# driver = self.driver
# def test_create_module(self): # element = driver.find_element_by_name("TESTDPT")
# driver = self.driver
# element = driver.find_element_by_name("TESTDPT") # ferme la fenetre à chaque fin de test
def tearDown(self):
# ferme la fenetre à chaque fin de test self.driver.close()
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
deleteDepartement.main()
if __name__ == "__main__": createDepartement.main()
deleteDepartement.main() creationSiteDepartement.main()
createDepartement.main()
creationSiteDepartement.main() unittest.main(
creationUtilisateurs.main() testRunner=HtmlTestRunner.HTMLTestRunner(
report_name="02_creation_formation_test",
unittest.main( output="./ResultatTest",
testRunner=HtmlTestRunner.HTMLTestRunner( combine_reports=True,
report_name="02_creation_formation_test", )
output="./ResultatTest", )
combine_reports=True,
)
)

View File

@ -1,215 +1,204 @@
import unittest import unittest
import time import time
import HtmlTestRunner import HtmlTestRunner
import subprocess import subprocess
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, NOM_DPT,
SCODOC_PORT, LINK_SCODOC_SERVER,
NOM_DPT, BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER, NAVIGATEUR,
BASE_SSH_URL, )
NAVIGATEUR, import urllib.parse as urlparse
) from urllib.parse import parse_qs
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select from selenium.webdriver.support.select import Select
URL = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" URL = BASE_URL + NOM_DPT + "/Scolarite"
nomEtu = "Semestre11" nomEtu = "Semestre11"
prenomEtu = "Etudiant1" prenomEtu = "Etudiant1"
nip = "11122234" nip = "11122234"
domicile = "50 rue de la marmite" domicile = "50 rue de la marmite"
codepostaldomicile = "59000" codepostaldomicile = "59000"
paysdomicile = "Lille" paysdomicile = "Lille"
URL_ROOT = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT
URL_AUTH = "/".join((URL_ROOT, "auth", "login")) class PythonOrgSearch(unittest.TestCase):
URL_SCODOC8 = "/".join((URL_ROOT, "index")) # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
URL_HOME = "/".join((URL_ROOT, "ScoDoc", "index")) def setUp(self):
URL_DEPT = "/".join((URL_ROOT, "ScoDoc", NOM_DPT, "Scolarite", "index_html")) if NAVIGATEUR == "firefox":
URL_ADMIN = "/".join((URL_ROOT, "ScoDoc", "admin")) self.driver = webdriver.Firefox()
else:
ACRONYME_FORMATION = "formationtest" self.driver = webdriver.Chrome()
URL = URL_SCODOC8 self.wait = WebDriverWait(self.driver, 10)
self.driver.get(
class PythonOrgSearch(unittest.TestCase): "https://"
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test + SCODOC_ADMIN_ID
def setUp(self): + ":"
next_page = "" + SCODOC_ADMIN_PASS
if NAVIGATEUR == "firefox": + "@"
self.driver = webdriver.Firefox() + BASE_NOT_SECURED_URL
else: + "force_admin_authentication"
self.driver = webdriver.Chrome() )
self.wait = WebDriverWait(self.driver, 10) global URL
auth_page = URL_AUTH + ("?next=" + next_page).replace("/", "%2F") self.driver.get(URL)
self.driver.get(auth_page)
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) # Test : creer un etudiant et verifie si sa fiche etudiante est creee
self.driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) # @expected : A la soumission du formulaire on retrouve la fiche d'information avec le nip (unique) dans la page, on a également un resultat en recherchant l'étudiant
self.driver.find_element_by_id("submit").click() def test_01_creation_etudiant(self):
self.driver.get(URL_HOME) driver = self.driver
global URL
# Test : creer un etudiant et verifie si sa fiche etudiante est creee driver.find_element_by_id("link-create-student").click()
# @expected : A la soumission du formulaire on retrouve la fiche d'information avec le nip (unique) dans la page, on a également un resultat en recherchant l'étudiant self.wait.until(EC.url_changes(URL))
def test_01_creation_etudiant(self): URL = driver.current_url
driver = self.driver driver.find_element_by_id("tf_nom").send_keys(nomEtu)
global URL driver.find_element_by_id("tf_prenom").send_keys(prenomEtu)
driver.find_element_by_id("link-create-student").click() driver.find_element_by_id("tf_annee").send_keys("2021")
self.wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_code_nip").send_keys(nip)
URL = driver.current_url driver.find_element_by_name("dont_check_homonyms:list").click()
driver.find_element_by_id("tf_nom").send_keys(nomEtu) driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_prenom").send_keys(prenomEtu) time.sleep(1)
driver.find_element_by_id("tf_annee").send_keys("2021") self.assertTrue("M. " + prenomEtu + " " + nomEtu.upper() in driver.page_source)
driver.find_element_by_id("tf_code_nip").send_keys(nip) self.assertTrue(nip in driver.page_source)
driver.find_element_by_name("dont_check_homonyms:list").click()
driver.find_element_by_id("tf_submit").click() # Test : Creer un étudiant avec un nip qui est déjà présent dans la base Scodoc
time.sleep(1) # @expected : La création mène à une page qui affiche "code étudiant dupliqué", l'étudiant n'est pas créé
self.assertTrue("M. " + prenomEtu + " " + nomEtu.upper() in driver.page_source) def test_02_creation_etudiant_avec_meme_nip(self):
self.assertTrue(nip in driver.page_source) driver = self.driver
global URL
# Test : Creer un étudiant avec un nip qui est déjà présent dans la base Scodoc driver.get(URL)
# @expected : La création mène à une page qui affiche "code étudiant dupliqué", l'étudiant n'est pas créé driver.find_element_by_id("tf_nom").send_keys(nomEtu)
def test_02_creation_etudiant_avec_meme_nip(self): driver.find_element_by_id("tf_prenom").send_keys(prenomEtu)
driver = self.driver driver.find_element_by_id("tf_annee").send_keys("2021")
global URL driver.find_element_by_id("tf_code_nip").send_keys(nip)
driver.get(URL) driver.find_element_by_name("dont_check_homonyms:list").click()
driver.find_element_by_id("tf_nom").send_keys(nomEtu) driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_prenom").send_keys(prenomEtu) time.sleep(1)
driver.find_element_by_id("tf_annee").send_keys("2021") self.assertTrue(
driver.find_element_by_id("tf_code_nip").send_keys(nip) "Code étudiant (code_nip) dupliqué !"
driver.find_element_by_name("dont_check_homonyms:list").click() in driver.find_element_by_class_name("title-error").text
driver.find_element_by_id("tf_submit").click() )
time.sleep(1)
self.assertTrue( # Test Modification de l'adresse étudiant
"Code étudiant (code_nip) dupliqué !" # expected : La nouvelle adresse est mise à jour sur la page information de l'étudiant
in driver.find_element_by_class_name("title-error").text def test_03_modification_adresse_etudiant(self):
) driver = self.driver
global URL
# Test Modification de l'adresse étudiant driver.get(URL)
# expected : La nouvelle adresse est mise à jour sur la page information de l'étudiant element = driver.find_element_by_id("in-expnom")
def test_03_modification_adresse_etudiant(self): element.send_keys(nomEtu)
driver = self.driver element.submit()
global URL self.wait.until(EC.url_changes(URL))
driver.get(URL) driver.find_element_by_xpath(
element = driver.find_element_by_id("in-expnom") "//a[contains(@href,'formChangeCoordonnees')]"
element.send_keys(nomEtu) ).click()
element.submit() time.sleep(1)
self.wait.until(EC.url_changes(URL)) driver.find_element_by_id("tf_domicile").send_keys(domicile)
driver.find_element_by_xpath( driver.find_element_by_id("tf_codepostaldomicile").send_keys(codepostaldomicile)
"//a[contains(@href,'formChangeCoordonnees')]" driver.find_element_by_id("tf_paysdomicile").send_keys(paysdomicile)
).click() driver.find_element_by_id("tf_submit").click()
time.sleep(1) time.sleep(1)
driver.find_element_by_id("tf_domicile").send_keys(domicile) self.assertTrue(
driver.find_element_by_id("tf_codepostaldomicile").send_keys(codepostaldomicile) codepostaldomicile in driver.find_element_by_id("student-address").text
driver.find_element_by_id("tf_paysdomicile").send_keys(paysdomicile) )
driver.find_element_by_id("tf_submit").click()
time.sleep(1) # Test Inscription d'un étudiant dans un semestre
self.assertTrue( # @expected :
codepostaldomicile in driver.find_element_by_id("student-address").text def test_04_inscription_etudiant(self):
) driver = self.driver
global URL
# Test Inscription d'un étudiant dans un semestre driver.get(URL)
# @expected : element = driver.find_element_by_id("in-expnom")
def test_04_inscription_etudiant(self): element.send_keys(nomEtu)
driver = self.driver element.submit()
global URL self.wait.until(EC.url_changes(URL))
driver.get(URL) driver.find_element_by_xpath(
element = driver.find_element_by_id("in-expnom") "//a[contains(@href, 'formsemestre_inscription_with_modules_form')]"
element.send_keys(nomEtu) ).click()
element.submit() self.wait.until(EC.url_changes(URL))
self.wait.until(EC.url_changes(URL)) try:
driver.find_element_by_xpath( semestres = driver.find_elements_by_xpath(
"//a[contains(@href, 'formsemestre_inscription_with_modules_form')]" "//a[contains(@id,'inscription-semestre-')]"
).click() )
self.wait.until(EC.url_changes(URL)) except NoSuchElementException:
try: self.assertFalse(True)
semestres = driver.find_elements_by_xpath( semestres[0].click()
"//a[contains(@id,'inscription-semestre-')]" driver.find_element_by_xpath("//input[@value='Inscrire']").click()
) time.sleep(2)
except NoSuchElementException: boutonInscrireIsNotPresent = False
self.assertFalse(True) try:
semestres[0].click() driver.find_element_by_partial_link_text("inscrire")
driver.find_element_by_xpath("//input[@value='Inscrire']").click() except:
time.sleep(2) boutonInscrireIsNotPresent = True
bouton_inscrire_is_not_present = False self.assertTrue(boutonInscrireIsNotPresent)
try:
driver.find_element_by_partial_link_text("inscrire") # Test Supprime un étudiant
except: # @expected : Lors d'une recherche sur le nom de l'étudiant, aucun résultat apparait
bouton_inscrire_is_not_present = True def test_05_suppresion_etudiant(self):
self.assertTrue(bouton_inscrire_is_not_present) driver = self.driver
urlRecherche = (
# Test Supprime un étudiant "https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
# @expected : Lors d'une recherche sur le nom de l'étudiant, aucun résultat apparait + NOM_DPT
def test_05_suppresion_etudiant(self): + "/Scolarite/search_etud_in_dept"
driver = self.driver )
urlRecherche = ( driver.get(urlRecherche)
SCHEMA element = driver.find_element_by_name("expnom")
+ "://" element.send_keys(nomEtu)
+ SCODOC_SERVER + ":" + SCODOC_PORT element.submit()
+ "ScoDoc/" time.sleep(1)
+ NOM_DPT etudid = driver.find_element_by_id("euid")
+ "/Scolarite/search_etud_in_dept" url = (
) "https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
driver.get(urlRecherche) + NOM_DPT
element = driver.find_element_by_name("expnom") + "/Scolarite/etudident_delete?etudid="
element.send_keys(nomEtu) + etudid.text
element.submit() )
time.sleep(1) driver.get(url)
etudid = driver.find_element_by_id("euid") time.sleep(1)
url = ( driver.find_element_by_xpath(
SCHEMA "//input[@value='Supprimer définitivement cet étudiant']"
+ "://" ).click()
+ SCODOC_SERVER + ":" + SCODOC_PORT driver.get(urlRecherche)
+ "ScoDoc/" element = driver.find_element_by_name("expnom")
+ NOM_DPT element.send_keys(nomEtu)
+ "/Scolarite/etudident_delete?etudid=" element.submit()
+ etudid.text time.sleep(1)
) try:
driver.get(url) element = driver.find_element_by_id("title-no-result")
time.sleep(1) self.assertTrue("Aucun résultat" in element.text)
driver.find_element_by_xpath( except:
"//input[@value='Supprimer définitivement cet étudiant']" self.assertFalse(True)
).click()
driver.get(urlRecherche) # ferme la fenetre
element = driver.find_element_by_name("expnom") def tearDown(self):
element.send_keys(nomEtu) self.driver.close()
element.submit()
time.sleep(1)
try: if __name__ == "__main__":
element = driver.find_element_by_id("title-no-result") deleteDepartement.main()
self.assertTrue("Aucun résultat" in element.text) createDepartement.main()
except: creationSiteDepartement.main()
self.assertFalse(True) cmdProcess = [
"./scriptExecution.sh",
# ferme la fenetre LINK_SCODOC_SERVER,
def tearDown(self): NOM_DPT,
self.driver.close() "test_scenario1_formation.py",
]
process = subprocess.Popen(cmdProcess)
if __name__ == "__main__": process.wait()
deleteDepartement.main() unittest.main(
createDepartement.main() testRunner=HtmlTestRunner.HTMLTestRunner(
creationSiteDepartement.main() report_name="03_Etudiant_test",
cmdProcess = [ output="./ResultatTest",
"./scriptExecution.sh", combine_reports=True,
LINK_SCODOC_SERVER, )
NOM_DPT, )
"test_scenario1_formation.py",
]
process = subprocess.Popen(cmdProcess)
process.wait()
unittest.main(
testRunner=HtmlTestRunner.HTMLTestRunner(
report_name="03_Etudiant_test",
output="./ResultatTest",
combine_reports=True,
)
)

View File

@ -1,171 +1,174 @@
import unittest import unittest
import time import time
import urllib.parse as urlparse import urllib.parse as urlparse
import subprocess import subprocess
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, NOM_DPT,
SCODOC_PORT, LINK_SCODOC_SERVER,
NOM_DPT, BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER, NAVIGATEUR,
BASE_SSH_URL, )
NAVIGATEUR, from urllib.parse import parse_qs
) from selenium import webdriver
from urllib.parse import parse_qs from selenium.webdriver.common.keys import Keys
from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select URL = BASE_URL + NOM_DPT + "/Scolarite"
NOM_ETU = "Semestre11"
URL = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" PRENOM_ETU = "EtudiantNumero1"
NOM_ETU = "Semestre11" dateDebutAbsenceNonJustifiee = "31/05/2021"
PRENOM_ETU = "EtudiantNumero1" dateDebutAbsenceJustifiee = "25/05/2021"
dateDebutAbsenceNonJustifiee = "31/05/2021"
dateDebutAbsenceJustifiee = "25/05/2021"
class PythonOrgSearch(unittest.TestCase):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test
class PythonOrgSearch(unittest.TestCase): def setUp(self):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test if NAVIGATEUR == "firefox":
def setUp(self): self.driver = webdriver.Firefox()
next_page = "" else:
if NAVIGATEUR == "firefox": self.driver = webdriver.Chrome()
self.driver = webdriver.Firefox() self.wait = WebDriverWait(self.driver, 10)
else: self.driver.get(
self.driver = webdriver.Chrome() "https://"
auth_page = SCHEMA + "://" + BASE_SSH_URL + "auth/login?next=%2F" + next_page + SCODOC_ADMIN_ID
self.driver.get(auth_page) + ":"
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) + SCODOC_ADMIN_PASS
self.driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) + "@"
self.driver.find_element_by_id("submit").click() + BASE_NOT_SECURED_URL
self.driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT) + "force_admin_authentication"
)
def test_010_trouver_etudiant(self): global URL
driver = self.driver self.driver.get(URL)
global URL
self.driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite") def test_010_trouver_etudiant(self):
element = self.driver.find_element_by_id("in-expnom") driver = self.driver
element.send_keys(NOM_ETU) global URL
element.submit() self.driver.get(BASE_URL + NOM_DPT + "/Scolarite")
self.wait.until(EC.url_changes(URL)) element = self.driver.find_element_by_id("in-expnom")
URL = driver.current_url element.send_keys(NOM_ETU)
self.assertTrue(NOM_ETU.upper() in driver.page_source) element.submit()
self.wait.until(EC.url_changes(URL))
# Test : creer une absence non justifiée URL = driver.current_url
# @expected : La fiche étudiante est incrémentée avec le nombre d'absence injustifiée correspondant self.assertTrue(NOM_ETU.upper() in driver.page_source)
def test_020_ajout_absence_non_justifiee(self):
driver = self.driver # Test : creer une absence non justifiée
global URL # @expected : La fiche étudiante est incrémentée avec le nombre d'absence injustifiée correspondant
driver.find_element_by_id("add-absence").click() def test_020_ajout_absence_non_justifiee(self):
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee) driver = self.driver
driver.find_element_by_id("butsubmit").submit() global URL
time.sleep(1) driver.find_element_by_id("add-absence").click()
self.assertTrue( driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee)
"Ajout de 2 absences <b>NON justifiées</b>" in driver.page_source driver.find_element_by_id("butsubmit").submit()
) time.sleep(1)
self.assertTrue(
driver = self.driver "Ajout de 2 absences <b>NON justifiées</b>" in driver.page_source
driver.find_element_by_link_text("Liste").click() )
self.assertTrue("2 absences non justifiées:" in driver.page_source)
driver = self.driver
# def test_modification_liste_absence_non_justifiee(self): driver.find_element_by_link_text("Liste").click()
# driver = self.driver self.assertTrue("2 absences non justifiées:" in driver.page_source)
# driver.find_element_by_link_text("Liste").click()
# self.assertTrue("2 absences non justifiées:" in driver.page_source) # def test_modification_liste_absence_non_justifiee(self):
# driver = self.driver
# Test pour ajouter deux absences justifiées # driver.find_element_by_link_text("Liste").click()
# @expected : La fiche d'information de l'étudiant concerné à son compteur d'absence augmenté de 2 # self.assertTrue("2 absences non justifiées:" in driver.page_source)
def test_021_ajout_absence_justifiee(self):
driver = self.driver # Test pour ajouter deux absences justifiées
global URL # @expected : La fiche d'information de l'étudiant concerné à son compteur d'absence augmenté de 2
driver.find_element_by_id("add-absence").click() def test_021_ajout_absence_justifiee(self):
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee) driver = self.driver
driver.find_element_by_name("estjust").click() global URL
driver.find_element_by_id("butsubmit").submit() driver.find_element_by_id("add-absence").click()
time.sleep(1) driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
self.assertTrue("Ajout de 2 absences <b>justifiées</b>" in driver.page_source) driver.find_element_by_name("estjust").click()
driver = self.driver driver.find_element_by_id("butsubmit").submit()
driver.find_element_by_link_text("Liste").click() time.sleep(1)
self.assertTrue("2 absences justifiées:" in driver.page_source) self.assertTrue("Ajout de 2 absences <b>justifiées</b>" in driver.page_source)
driver = self.driver
# def test_modification_liste_absence_justifiee(self): driver.find_element_by_link_text("Liste").click()
# driver = self.driver self.assertTrue("2 absences justifiées:" in driver.page_source)
# driver.find_element_by_link_text("Liste").click()
# self.assertTrue("2 absences justifiées:" in driver.page_source) # def test_modification_liste_absence_justifiee(self):
# driver = self.driver
# Test Justification d'une absence non justifiée # driver.find_element_by_link_text("Liste").click()
# @expected : Le champs des absences non justifiées diminue et celui des justifiés augmente du nombre d'absence # self.assertTrue("2 absences justifiées:" in driver.page_source)
def test_022_ajout_justification(self):
driver = self.driver # Test Justification d'une absence non justifiée
global URL # @expected : Le champs des absences non justifiées diminue et celui des justifiés augmente du nombre d'absence
driver.find_element_by_id("justify-absence").click() def test_022_ajout_justification(self):
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee) driver = self.driver
driver.find_element_by_name("description").send_keys("Un test selenium") global URL
driver.find_element_by_xpath("//input[@value='Envoyer']").click() driver.find_element_by_id("justify-absence").click()
self.wait.until(EC.url_changes(URL)) driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
self.assertTrue("Ajout de 2 <b>justifications</b>" in driver.page_source) driver.find_element_by_name("description").send_keys("Un test selenium")
driver = self.driver driver.find_element_by_xpath("//input[@value='Envoyer']").click()
driver.find_element_by_link_text("Liste").click() self.wait.until(EC.url_changes(URL))
self.assertTrue("2 absences justifiées:" in driver.page_source) self.assertTrue("Ajout de 2 <b>justifications</b>" in driver.page_source)
self.assertTrue("absences non justifiées:" in driver.page_source) driver = self.driver
driver.find_element_by_link_text("Liste").click()
# def test_modification_liste_ajout_justification(self): self.assertTrue("2 absences justifiées:" in driver.page_source)
# driver = self.driver self.assertTrue("absences non justifiées:" in driver.page_source)
# driver.find_element_by_link_text("Liste").click()
# self.assertTrue("4 absences justifiées:" in driver.page_source) # def test_modification_liste_ajout_justification(self):
# self.assertTrue("absences non justifiées:" not in driver.page_source) # driver = self.driver
# driver.find_element_by_link_text("Liste").click()
# Test Suppression des absences pour un élève # self.assertTrue("4 absences justifiées:" in driver.page_source)
# @expected : Les compteurs d'absences sont remplacés par "Pas d'absences" # self.assertTrue("absences non justifiées:" not in driver.page_source)
def test_024_supprimer_absence(self):
driver = self.driver # Test Suppression des absences pour un élève
global URL # @expected : Les compteurs d'absences sont remplacés par "Pas d'absences"
driver.find_element_by_id("delete-absence").click() def test_024_supprimer_absence(self):
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee) driver = self.driver
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click() global URL
self.wait.until(EC.url_changes(URL)) driver.find_element_by_id("delete-absence").click()
self.assertTrue("Annulation sur 2 demi-journées " in driver.page_source) driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceJustifiee)
driver.find_element_by_id("delete-absence").click() driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee) self.wait.until(EC.url_changes(URL))
driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click() self.assertTrue("Annulation sur 2 demi-journées " in driver.page_source)
self.wait.until(EC.url_changes(URL)) driver.find_element_by_id("delete-absence").click()
driver.find_element_by_id("display-list-absence").click() driver.find_element_by_name("datedebut").send_keys(dateDebutAbsenceNonJustifiee)
self.assertTrue("Pas d'absences justifiées" in driver.page_source) driver.find_element_by_xpath("//input[@value='Supprimer les absences']").click()
self.assertTrue("Pas d'absences non justifiées" in driver.page_source) self.wait.until(EC.url_changes(URL))
driver.find_element_by_id("display-list-absence").click()
# def test_modification_liste_supression_absence(self): self.assertTrue("Pas d'absences justifiées" in driver.page_source)
# driver = self.driver self.assertTrue("Pas d'absences non justifiées" in driver.page_source)
# driver.find_element_by_link_text("Liste").click()
# self.assertTrue("2 absences justifiées:" in driver.page_source) # def test_modification_liste_supression_absence(self):
# self.assertTrue("absences non justifiées:" not in driver.page_source) # driver = self.driver
# driver.find_element_by_link_text("Liste").click()
# ferme la fenetre # self.assertTrue("2 absences justifiées:" in driver.page_source)
def tearDown(self): # self.assertTrue("absences non justifiées:" not in driver.page_source)
self.driver.close()
# ferme la fenetre
def tearDown(self):
if __name__ == "__main__": self.driver.close()
deleteDepartement.main()
createDepartement.main()
creationSiteDepartement.main() if __name__ == "__main__":
cmdProcess = [ deleteDepartement.main()
"./scriptExecution.sh", createDepartement.main()
LINK_SCODOC_SERVER, creationSiteDepartement.main()
NOM_DPT, cmdProcess = [
"test_scenario2_formation.py", "./scriptExecution.sh",
] LINK_SCODOC_SERVER,
process = subprocess.Popen(cmdProcess) NOM_DPT,
process.wait() "test_scenario2_formation.py",
unittest.main( ]
testRunner=HtmlTestRunner.HTMLTestRunner( process = subprocess.Popen(cmdProcess)
report_name="04_Absences_tests", process.wait()
output="./ResultatTest", unittest.main(
combine_reports=True, testRunner=HtmlTestRunner.HTMLTestRunner(
) report_name="04_Absences_tests",
) output="./ResultatTest",
combine_reports=True,
)
)

View File

@ -1,404 +1,409 @@
import unittest import unittest
import time import time
import subprocess import subprocess
import urllib.parse as urlparse import urllib.parse as urlparse
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, NOM_DPT,
SCODOC_PORT, SCODOC_ENS_ID,
NOM_DPT, SCODOC_ENS_PASS,
SCODOC_ENS_ID, SCODOC_CHEF_ID,
SCODOC_ENS_PASS, SCODOC_CHEF_PASS,
SCODOC_CHEF_ID, NAVIGATEUR,
SCODOC_CHEF_PASS, LINK_SCODOC_SERVER,
NAVIGATEUR, BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER, )
BASE_SSH_URL, from urllib.parse import parse_qs
) from selenium import webdriver
from urllib.parse import parse_qs from selenium.webdriver.common.keys import Keys
from selenium import webdriver from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select URL_MATIERE = ""
URL_SEMESTRE = ""
URL_MATIERE = "" URL = BASE_URL + NOM_DPT + "/Scolarite"
URL_SEMESTRE = "" PRENOM_ENS = "Ens"
URL = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" PRENOM_CHEF = "Chef"
PRENOM_ENS = "Ens" isAdmin = True
PRENOM_CHEF = "Chef" isChef = False
isAdmin = True isEns = False
isChef = False # Prérequis
isEns = False class PythonOrgSearch(unittest.TestCase):
# Prérequis # Permet de se connecter et se remettre sur la page d'accueil avant chaque test
class PythonOrgSearch(unittest.TestCase): def setUp(self):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test if NAVIGATEUR == "firefox":
def setUp(self): self.driver = webdriver.Firefox()
next_page = "" else:
if NAVIGATEUR == "firefox": self.driver = webdriver.Chrome()
self.driver = webdriver.Firefox() self.wait = WebDriverWait(self.driver, 10)
else: if isAdmin:
self.driver = webdriver.Chrome() self.driver.get(
self.wait = WebDriverWait(self.driver, 10) "https://"
auth_page = SCHEMA + "://" + BASE_SSH_URL + "auth/login?next=%2F" + next_page + SCODOC_ADMIN_ID
self.driver.get(auth_page) + ":"
if isAdmin: + SCODOC_ADMIN_PASS
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) + "@"
self.driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) + BASE_NOT_SECURED_URL
elif isChef: + "force_admin_authentication"
self.driver.find_element_by_id("user_name").send_keys(SCODOC_CHEF_ID) )
self.driver.find_element_by_id("password").send_keys(SCODOC_CHEF_PASS) else:
elif isEns: self.driver.get(BASE_URL + NOM_DPT + "/Scolarite")
self.driver.find_element_by_id("user_name").send_keys(SCODOC_ENS_ID) if isChef:
self.driver.find_element_by_id("password").send_keys(SCODOC_ENS_PASS) self.driver.find_element_by_name("__ac_name").send_keys(SCODOC_CHEF_ID)
self.driver.find_element_by_id("submit").click() self.driver.find_element_by_name("__ac_password").send_keys(
self.driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT) SCODOC_CHEF_PASS
)
# Test : Vérifie s'il y a un semestre en cours time.sleep(3)
# @expected : La class listesems n'est pas vide et contient "Session en cours" self.driver.find_element_by_name("submit").click()
def test_010_semestre_en_cours(self): elif isEns:
driver = self.driver self.driver.find_element_by_name("__ac_name").send_keys(SCODOC_ENS_ID)
global URL self.driver.find_element_by_name("__ac_password").send_keys(
driver.get(URL) SCODOC_ENS_PASS
# time.sleep(1) )
self.assertTrue( self.driver.find_element_by_name("submit").click()
"Sessions en cours" in driver.find_element_by_class_name("listesems").text
) # Test : Vérifie s'il y a un semestre en cours
# @expected : La class listesems n'est pas vide et contient "Session en cours"
# Test : Vérifie si une matière existe def test_010_semestre_en_cours(self):
# @expected : Le nom de la matière est présent dans le semestre préalablement testé driver = self.driver
def test_020_matiere_existante(self): global URL
driver = self.driver driver.get(URL)
global URL # time.sleep(1)
driver.get(URL) self.assertTrue(
driver.find_element_by_link_text("semestre 4").click() "Sessions en cours" in driver.find_element_by_class_name("listesems").text
self.wait.until(EC.url_changes(URL)) )
matiereExist = False
try: # Test : Vérifie si une matière existe
driver.find_element_by_class_name("formsemestre_status_ue") # @expected : Le nom de la matière est présent dans le semestre préalablement testé
global URL_SEMESTRE def test_020_matiere_existante(self):
URL_SEMESTRE = driver.current_url driver = self.driver
matiereExist = True global URL
except NoSuchElementException: driver.get(URL)
matiereExist = False driver.find_element_by_link_text("semestre 4").click()
self.assertTrue(matiereExist) self.wait.until(EC.url_changes(URL))
matiereExist = False
#Test : Changement de responsable sur module try:
# @expected : Le nom du responsable choisi apparait désormais sur le module concerné driver.find_element_by_class_name("formsemestre_status_ue")
def test_030_changement_responsable_sur_module(self): global URL_SEMESTRE
driver = self.driver URL_SEMESTRE = driver.current_url
isThere = False matiereExist = True
driver.get(URL_SEMESTRE) except NoSuchElementException:
driver.find_element_by_link_text("M4101C").click() matiereExist = False
time.sleep(1) self.assertTrue(matiereExist)
global URL_MATIERE
URL_MATIERE = driver.current_url #Test : Changement de responsable sur module
driver.find_element_by_xpath( # @expected : Le nom du responsable choisi apparait désormais sur le module concerné
"//a[contains(@href,'edit_moduleimpl_resp?')]" def test_030_changement_responsable_sur_module(self):
).click() driver = self.driver
self.wait.until(EC.url_changes(URL_MATIERE)) isThere = False
constructIdResponsable = ( driver.get(URL_SEMESTRE)
SCODOC_CHEF_ID.upper() driver.find_element_by_link_text("M4101C").click()
+ " " time.sleep(1)
+ PRENOM_CHEF global URL_MATIERE
+ " (" URL_MATIERE = driver.current_url
+ SCODOC_CHEF_ID.lower() driver.find_element_by_xpath(
+ ")" "//a[contains(@href,'edit_moduleimpl_resp?')]"
) ).click()
idInput = driver.find_element_by_name("responsable_id") self.wait.until(EC.url_changes(URL_MATIERE))
idInput.clear() constructIdResponsable = (
idInput.send_keys(constructIdResponsable) SCODOC_CHEF_ID.upper()
driver.find_element_by_id("tf_submit").click() + " "
time.sleep(1) + PRENOM_CHEF
driver.get(URL_MATIERE) + " ("
nomResponsable = driver.find_element_by_id("ens-responsable") + SCODOC_CHEF_ID.lower()
self.assertTrue(SCODOC_CHEF_ID.lower() in nomResponsable.text.lower()) + ")"
global isAdmin )
isAdmin = False idInput = driver.find_element_by_name("responsable_id")
global isChef idInput.clear()
isChef = True idInput.send_keys(constructIdResponsable)
driver.find_element_by_id("tf_submit").click()
# Test : Ajout d'un enseignant comme résponsable d'un module time.sleep(1)
# @expected : Le nom de l'enseignant apparait désormais sur la page d'information du module driver.get(URL_MATIERE)
def test_031_ajout_enseignant_sur_module(self): nomResponsable = driver.find_element_by_id("ens-responsable")
driver = self.driver self.assertTrue(SCODOC_CHEF_ID.lower() in nomResponsable.text.lower())
global URL_MATIERE global isAdmin
driver.get(URL_MATIERE) isAdmin = False
time.sleep(2) global isChef
driver.find_element_by_partial_link_text("modifier les enseignants").click() isChef = True
time.sleep(1)
constructIDEns = ( # Test : Ajout d'un enseignant comme résponsable d'un module
SCODOC_ENS_ID.upper() + " " + PRENOM_ENS + " (" + SCODOC_ENS_ID + ")" # @expected : Le nom de l'enseignant apparait désormais sur la page d'information du module
) def test_031_ajout_enseignant_sur_module(self):
driver.find_element_by_id("ens_id").send_keys(constructIDEns) driver = self.driver
driver.find_element_by_id("tf_submit").click() global URL_MATIERE
time.sleep(1) driver.get(URL_MATIERE)
driver.get(URL_MATIERE) time.sleep(2)
professeurDansModule = driver.find_elements_by_class_name("ens-in-module") driver.find_element_by_partial_link_text("modifier les enseignants").click()
time.sleep(5) time.sleep(1)
professeurString = [] constructIDEns = (
for professeur in professeurDansModule: SCODOC_ENS_ID.upper() + " " + PRENOM_ENS + " (" + SCODOC_ENS_ID + ")"
professeurString.append(professeur.text) )
for professeurS in professeurString: driver.find_element_by_id("ens_id").send_keys(constructIDEns)
if SCODOC_ENS_ID.lower() in professeurS.lower(): driver.find_element_by_id("tf_submit").click()
isThere = True time.sleep(1)
self.assertTrue(isThere) driver.get(URL_MATIERE)
professeurDansModule = driver.find_elements_by_class_name("ens-in-module")
# Test : Création d'une interrogation en tant que chef des études time.sleep(5)
# @eexpected : L'interrogation apparait désormais dans ce module professeurString = []
def test_040_creation_interrogation(self): for professeur in professeurDansModule:
descriptionInterrogation = "Interrogation numero 2" professeurString.append(professeur.text)
driver = self.driver for professeurS in professeurString:
global URL_MATIERE if SCODOC_ENS_ID.lower() in professeurS.lower():
driver.get( isThere = True
SCHEMA self.assertTrue(isThere)
+ "://"
+ SCODOC_ADMIN_ID # Test : Création d'une interrogation en tant que chef des études
+ ":" # @eexpected : L'interrogation apparait désormais dans ce module
+ SCODOC_ADMIN_PASS def test_040_creation_interrogation(self):
+ "@" descriptionInterrogation = "Interrogation numero 2"
+ BASE_SSH_URL driver = self.driver
+ "force_admin_authentication" global URL_MATIERE
) driver.get(
# driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT) "https://"
# driver.find_element_by_link_text("déconnecter").click() + SCODOC_ADMIN_ID
# driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT) + ":"
# driver.find_element_by_id("name").send_keys(SCODOC_CHEF_ID) + SCODOC_ADMIN_PASS
# driver.find_element_by_id("password").send_keys(SCODOC_CHEF_PASS) + "@scodoc-dev-iutinfo.univ-lille.fr/force_admin_authentication"
# driver.find_element_by_id("submit").click() )
driver.get(URL_MATIERE) # driver.get(BASE_URL)
time.sleep(1) # driver.find_element_by_link_text("déconnecter").click()
driver.find_element_by_link_text("Créer nouvelle évaluation").click() # driver.get(BASE_URL)
time.sleep(1) # driver.find_element_by_id("name").send_keys(SCODOC_CHEF_ID)
driver.find_element_by_name("jour").clear() # driver.find_element_by_id("password").send_keys(SCODOC_CHEF_PASS)
driver.find_element_by_name("jour").send_keys("31/05/2021") # driver.find_element_by_id("submit").click()
driver.find_element_by_id("tf_description").send_keys(descriptionInterrogation) driver.get(URL_MATIERE)
driver.find_element_by_id("tf_coefficient").send_keys("2") time.sleep(1)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_link_text("Créer nouvelle évaluation").click()
time.sleep(1) time.sleep(1)
global isChef driver.find_element_by_name("jour").clear()
isChef = False driver.find_element_by_name("jour").send_keys("31/05/2021")
global isEns driver.find_element_by_id("tf_description").send_keys(descriptionInterrogation)
isEns = True driver.find_element_by_id("tf_coefficient").send_keys("2")
self.assertTrue(descriptionInterrogation in driver.page_source) driver.find_element_by_id("tf_submit").click()
time.sleep(1)
# Test Vérifie si une interrogation existe sur un module global isChef
# @expected "Module" est présent dans le "formsemetre" isChef = False
def test_050_interro_existante(self): global isEns
driver = self.driver isEns = True
global URL_MATIERE self.assertTrue(descriptionInterrogation in driver.page_source)
driver.get(URL_MATIERE)
time.sleep(1) # Test Vérifie si une interrogation existe sur un module
self.assertTrue( # @expected "Module" est présent dans le "formsemetre"
"Module" in driver.find_element_by_class_name("formsemestre").text def test_050_interro_existante(self):
) driver = self.driver
global URL_MATIERE
# Test Entree des notes pour le premier étudiant inscrit à un module driver.get(URL_MATIERE)
# @expected : "saisir note" est remplacé par "afficher" sur la page d'information de l'interrogation concernée time.sleep(1)
def test_060_entree_note(self): self.assertTrue(
driver = self.driver "Module" in driver.find_element_by_class_name("formsemestre").text
global URL_MATIERE )
driver.get(URL_MATIERE)
driver.find_element_by_class_name("notes_img").click() # Test Entree des notes pour le premier étudiant inscrit à un module
time.sleep(1) # @expected : "saisir note" est remplacé par "afficher" sur la page d'information de l'interrogation concernée
element = driver.find_element_by_class_name("note") def test_060_entree_note(self):
element.send_keys("12") driver = self.driver
driver.find_element_by_id("formnotes_submit").click() global URL_MATIERE
# self.wait.until(EC.url_changes(url)) driver.get(URL_MATIERE)
self.assertTrue( driver.find_element_by_class_name("notes_img").click()
driver.find_element_by_link_text("afficher").text in driver.page_source time.sleep(1)
) element = driver.find_element_by_class_name("note")
element.send_keys("12")
# Test : Ajoute les notes manquante poru les étudiants concernés dans une interrogation driver.find_element_by_id("formnotes_submit").click()
# @expected : Tout les étudiants on une note # self.wait.until(EC.url_changes(url))
def test_070_ajout_note_incomplete(self): self.assertTrue(
driver = self.driver driver.find_element_by_link_text("afficher").text in driver.page_source
global URL_MATIERE )
driver.get(URL_MATIERE)
time.sleep(1) # Test : Ajoute les notes manquante poru les étudiants concernés dans une interrogation
driver.find_element_by_class_name("notes_img").click() # @expected : Tout les étudiants on une note
elements = driver.find_elements_by_class_name("note") def test_070_ajout_note_incomplete(self):
for element in elements: driver = self.driver
if element.get_attribute("value") == "": global URL_MATIERE
element.send_keys(15) driver.get(URL_MATIERE)
driver.find_element_by_id("formnotes_submit").click() time.sleep(1)
time.sleep(5) driver.find_element_by_class_name("notes_img").click()
element = driver.find_element_by_id("in-expnom") elements = driver.find_elements_by_class_name("note")
element.send_keys("SEMESTRE47") for element in elements:
element.submit() if element.get_attribute("value") == "":
time.sleep(5) element.send_keys(15)
self.assertTrue("12" in driver.find_element_by_class_name("rcp_moy").text) driver.find_element_by_id("formnotes_submit").click()
time.sleep(5)
# Test : Suppresion des notes pour tout les étudiants concernés dans une interrogation element = driver.find_element_by_id("in-expnom")
# @expected : La moyenne ne s'affiche plus, "afficher" disparait de la page d'information de l'interrogation element.send_keys("SEMESTRE47")
def test_080_suppression_note(self): element.submit()
driver = self.driver time.sleep(5)
global URL_MATIERE self.assertTrue("12" in driver.find_element_by_class_name("rcp_moy").text)
driver.get(URL_MATIERE)
time.sleep(1) # Test : Suppresion des notes pour tout les étudiants concernés dans une interrogation
driver.find_element_by_class_name("notes_img").click() # @expected : La moyenne ne s'affiche plus, "afficher" disparait de la page d'information de l'interrogation
time.sleep(1) def test_080_suppression_note(self):
elements = driver.find_elements_by_class_name("note") driver = self.driver
for element in elements: global URL_MATIERE
element.clear() driver.get(URL_MATIERE)
element.send_keys("SUPR") time.sleep(1)
driver.find_element_by_id("formnotes_submit").click() driver.find_element_by_class_name("notes_img").click()
time.sleep(1) time.sleep(1)
interro_non_Presente = False elements = driver.find_elements_by_class_name("note")
try: for element in elements:
driver.find_element_by_link_text("afficher") element.clear()
interro_non_Presente = False element.send_keys("SUPR")
except NoSuchElementException: driver.find_element_by_id("formnotes_submit").click()
interro_non_Presente = True time.sleep(1)
self.assertTrue(interro_non_Presente) interro_non_Presente = False
global isChef try:
isChef = True driver.find_element_by_link_text("afficher")
global isEns interro_non_Presente = False
isEns = False except NoSuchElementException:
interro_non_Presente = True
# Test : SUppression d'une interrogation par le chef des études self.assertTrue(interro_non_Presente)
# @expected : L'interrogation n'apparait plus sur le module, les notes sont supprimées également global isChef
def test_090_suppresion_interrogation(self): isChef = True
global URL_MATIERE global isEns
descriptionInterrogation = "Interrogation à supprimer" isEns = False
driver = self.driver
driver.get(URL_MATIERE) # Test : SUppression d'une interrogation par le chef des études
time.sleep(1) # @expected : L'interrogation n'apparait plus sur le module, les notes sont supprimées également
driver.find_element_by_link_text("Créer nouvelle évaluation").click() def test_090_suppresion_interrogation(self):
time.sleep(1) global URL_MATIERE
driver.find_element_by_name("jour").clear() descriptionInterrogation = "Interrogation à supprimer"
driver.find_element_by_name("jour").send_keys("30/05/2021") driver = self.driver
driver.find_element_by_id("tf_description").send_keys(descriptionInterrogation) driver.get(URL_MATIERE)
driver.find_element_by_id("tf_coefficient").send_keys("2") time.sleep(1)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_link_text("Créer nouvelle évaluation").click()
time.sleep(1) time.sleep(1)
self.assertTrue(descriptionInterrogation in driver.page_source) driver.find_element_by_name("jour").clear()
driver.find_element_by_class_name("delete_img").click() driver.find_element_by_name("jour").send_keys("30/05/2021")
time.sleep(1) driver.find_element_by_id("tf_description").send_keys(descriptionInterrogation)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_id("tf_coefficient").send_keys("2")
# global isAdmin driver.find_element_by_id("tf_submit").click()
# isAdmin = True time.sleep(1)
# global isEns self.assertTrue(descriptionInterrogation in driver.page_source)
# isEns = False driver.find_element_by_class_name("delete_img").click()
self.assertFalse(descriptionInterrogation in driver.page_source) time.sleep(1)
driver.find_element_by_id("tf_submit").click()
# Test : Suppression d'un enseignant responsable d'un module # global isAdmin
# @expected : L'enseignant n'apparait plus comme responsable dans ce module # isAdmin = True
def test_200_suppression_enseignant_sur_module(self): # global isEns
driver = self.driver # isEns = False
driver.get(URL_MATIERE) self.assertFalse(descriptionInterrogation in driver.page_source)
time.sleep(1)
driver.find_element_by_partial_link_text("modifier les enseignants").click() # Test : Suppression d'un enseignant responsable d'un module
time.sleep(1) # @expected : L'enseignant n'apparait plus comme responsable dans ce module
elements = driver.find_elements_by_link_text("supprimer") def test_200_suppression_enseignant_sur_module(self):
for element in elements: driver = self.driver
element.click() driver.get(URL_MATIERE)
time.sleep(1) time.sleep(1)
time.sleep(1) driver.find_element_by_partial_link_text("modifier les enseignants").click()
driver.get(URL_MATIERE) time.sleep(1)
time.sleep(5) elements = driver.find_elements_by_link_text("supprimer")
self.assertTrue(SCODOC_ENS_ID not in driver.page_source) for element in elements:
element.click()
# Test : Suppresion du reste des interrogations sans notes time.sleep(1)
# @expected Tout les interrogation sans notes sont supprimées time.sleep(1)
def test_910_suppresion_interrogation_restante(self): driver.get(URL_MATIERE)
driver = self.driver time.sleep(5)
driver.get(URL_MATIERE) self.assertTrue(SCODOC_ENS_ID not in driver.page_source)
time.sleep(1)
elements = driver.find_elements_by_xpath( # Test : Suppresion du reste des interrogations sans notes
"//a[contains(@href,'evaluation_delete?')]" # @expected Tout les interrogation sans notes sont supprimées
) def test_910_suppresion_interrogation_restante(self):
while elements: driver = self.driver
elements[0].click() driver.get(URL_MATIERE)
driver.find_element_by_id("tf_submit").click() time.sleep(1)
self.wait.until(EC.url_changes(URL)) elements = driver.find_elements_by_xpath(
driver.find_element_by_partial_link_text("Continuer").click() "//a[contains(@href,'evaluation_delete?')]"
self.wait.until(EC.url_changes(URL)) )
elements = driver.find_elements_by_xpath( while elements:
"//a[contains(@href,'evaluation_delete?')]" elements[0].click()
) driver.find_element_by_id("tf_submit").click()
self.wait.until(EC.url_changes(URL))
# ferme la fenetre et fais du clean up driver.find_element_by_partial_link_text("Continuer").click()
def tearDown(self): self.wait.until(EC.url_changes(URL))
self.driver.close() elements = driver.find_elements_by_xpath(
"//a[contains(@href,'evaluation_delete?')]"
)
if __name__ == "__main__":
if NAVIGATEUR == "firefox": # ferme la fenetre et fais du clean up
driver = webdriver.Firefox() def tearDown(self):
else: self.driver.close()
driver = webdriver.Chrome()
deleteDepartement.main()
createDepartement.main() if __name__ == "__main__":
creationSiteDepartement.main() if NAVIGATEUR == "firefox":
cmdProcess = [ driver = webdriver.Firefox()
"./scriptExecution.sh", else:
LINK_SCODOC_SERVER, driver = webdriver.Chrome()
NOM_DPT, deleteDepartement.main()
"test_scenario2_formation.py", createDepartement.main()
] creationSiteDepartement.main()
process = subprocess.Popen(cmdProcess) cmdProcess = [
process.wait() "./scriptExecution.sh",
time.sleep(5) LINK_SCODOC_SERVER,
driver.get( NOM_DPT,
SCHEMA "test_scenario2_formation.py",
+ "://" ]
+ SCODOC_ADMIN_ID process = subprocess.Popen(cmdProcess)
+ ":" process.wait()
+ SCODOC_ADMIN_PASS time.sleep(5)
+ "@" driver.get(
+ BASE_SSH_URL "https://"
+ "force_admin_authentication" + SCODOC_ADMIN_ID
) + ":"
driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite") + SCODOC_ADMIN_PASS
driver.find_element_by_id("link-view-users").click() + "@"
time.sleep(5) + BASE_NOT_SECURED_URL
noms = driver.find_elements_by_class_name("nom_fmt") + "force_admin_authentication"
chefCree = False )
ensCree = False driver.get(BASE_URL + NOM_DPT + "/Scolarite")
for nom in noms: driver.find_element_by_id("link-view-users").click()
if nom.text.lower() == SCODOC_CHEF_ID.lower(): time.sleep(5)
chefCree = True noms = driver.find_elements_by_class_name("nom_fmt")
if nom.text.lower() == SCODOC_ENS_ID.lower(): chefCree = False
ensCree = True ensCree = False
if not chefCree: for nom in noms:
time.sleep(2) if nom.text.lower() == SCODOC_CHEF_ID.lower():
constructValue = "Ens" + NOM_DPT chefCree = True
driver.find_element_by_id("create-user").click() if nom.text.lower() == SCODOC_ENS_ID.lower():
driver.find_element_by_id("tf_nom").send_keys(SCODOC_CHEF_ID) ensCree = True
driver.find_element_by_id("tf_user_name").send_keys(SCODOC_CHEF_ID) if not chefCree:
driver.find_element_by_id("tf_prenom").send_keys("chef") time.sleep(2)
driver.find_element_by_id("tf_passwd").send_keys(SCODOC_CHEF_PASS) constructValue = "Ens" + NOM_DPT
driver.find_element_by_id("tf_passwd2").send_keys(SCODOC_CHEF_PASS) driver.find_element_by_id("create-user").click()
driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click() driver.find_element_by_id("tf_nom").send_keys(SCODOC_CHEF_ID)
driver.find_element_by_xpath("//input[@name='force:list']").click() driver.find_element_by_id("tf_user_name").send_keys(SCODOC_CHEF_ID)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_id("tf_prenom").send_keys("chef")
driver.find_element_by_id("link-view-users").click() driver.find_element_by_id("tf_passwd").send_keys(SCODOC_CHEF_PASS)
if not ensCree: driver.find_element_by_id("tf_passwd2").send_keys(SCODOC_CHEF_PASS)
time.sleep(2) driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click()
constructValue = "Ens" + NOM_DPT driver.find_element_by_xpath("//input[@name='force:list']").click()
driver.find_element_by_id("create-user").click() driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_nom").send_keys(SCODOC_ENS_ID) driver.find_element_by_id("link-view-users").click()
driver.find_element_by_id("tf_user_name").send_keys(SCODOC_ENS_ID) if not ensCree:
driver.find_element_by_id("tf_prenom").send_keys(PRENOM_ENS) time.sleep(2)
driver.find_element_by_id("tf_passwd").send_keys(SCODOC_ENS_PASS) constructValue = "Ens" + NOM_DPT
driver.find_element_by_id("tf_passwd2").send_keys(SCODOC_ENS_PASS) driver.find_element_by_id("create-user").click()
driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click() driver.find_element_by_id("tf_nom").send_keys(SCODOC_ENS_ID)
driver.find_element_by_xpath("//input[@name='force:list']").click() driver.find_element_by_id("tf_user_name").send_keys(SCODOC_ENS_ID)
driver.find_element_by_id("tf_submit").click() driver.find_element_by_id("tf_prenom").send_keys(PRENOM_ENS)
driver.find_element_by_id("link-view-users").click() driver.find_element_by_id("tf_passwd").send_keys(SCODOC_ENS_PASS)
driver.close() driver.find_element_by_id("tf_passwd2").send_keys(SCODOC_ENS_PASS)
unittest.main( driver.find_element_by_xpath("//input[@value='" + constructValue + "']").click()
testRunner=HtmlTestRunner.HTMLTestRunner( driver.find_element_by_xpath("//input[@name='force:list']").click()
report_name="05_Saisie_note_tests", driver.find_element_by_id("tf_submit").click()
output="./ResultatTest", driver.find_element_by_id("link-view-users").click()
combine_reports=True, driver.close()
) unittest.main(
) testRunner=HtmlTestRunner.HTMLTestRunner(
report_name="05_Saisie_note_tests",
output="./ResultatTest",
combine_reports=True,
)
)

View File

@ -1,457 +1,454 @@
import unittest import unittest
import time import time
import subprocess import subprocess
import urllib.parse as urlparse import urllib.parse as urlparse
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, BASE_NOT_SECURED_URL,
SCODOC_PORT, LINK_SCODOC_SERVER,
BASE_SSH_URL, NOM_DPT,
LINK_SCODOC_SERVER, SCODOC_ENS_ID,
NOM_DPT, SCODOC_ENS_PASS,
SCODOC_ENS_ID, SCODOC_CHEF_ID,
SCODOC_ENS_PASS, SCODOC_CHEF_PASS,
SCODOC_CHEF_ID, NAVIGATEUR,
SCODOC_CHEF_PASS, )
NAVIGATEUR, from urllib.parse import parse_qs
) from selenium import webdriver
from urllib.parse import parse_qs from selenium.webdriver.common.keys import Keys
from selenium import webdriver from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select urlMatiere = ""
listeEtudiant = []
urlMatiere = "" global MOY_UE1
listeEtudiant = [] global MOY_UE2
global MOY_UE1 global URL_SEMESTRE
global MOY_UE2 global COEFFUE1
global URL_SEMESTRE global COEFFUE2
global COEFFUE1
global COEFFUE2
class PythonOrgSearch(unittest.TestCase):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test
class PythonOrgSearch(unittest.TestCase): def setUp(self):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test if NAVIGATEUR == "firefox":
def setUp(self): self.driver = webdriver.Firefox()
if NAVIGATEUR == "firefox": elif NAVIGATEUR == "chrome":
self.driver = webdriver.Firefox() self.driver = webdriver.Chrome()
elif NAVIGATEUR == "chrome": self.url = BASE_URL + NOM_DPT + "/Scolarite"
self.driver = webdriver.Chrome() self.wait = WebDriverWait(self.driver, 10)
self.url = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" self.driver.get(
self.wait = WebDriverWait(self.driver, 10) "https://"
self.driver.get( + SCODOC_ADMIN_ID
SCHEMA + ":"
+ "://" + SCODOC_ADMIN_PASS
+ SCODOC_ADMIN_ID + "@"
+ ":" + BASE_NOT_SECURED_URL
+ SCODOC_ADMIN_PASS + "force_admin_authentication"
+ "@" )
+ BASE_SSH_URL
+ "force_admin_authentication" # Test: Ajout de note pour deux élèves dans une seule UE et vérifie si la moyenne de cet UE sur la fiche étudiante correspondant à la valeur rentrée
) # @expected : La note rentrée et la moyenne sont identiques
def test_010_ajout_note_multiple_pour_une_ue(self):
# Test: Ajout de note pour deux élèves dans une seule UE et vérifie si la moyenne de cet UE sur la fiche étudiante correspondant à la valeur rentrée global listeEtudiant
# @expected : La note rentrée et la moyenne sont identiques global MOY_UE1
def test_010_ajout_note_multiple_pour_une_ue(self): global URL_SEMESTRE
global listeEtudiant driver = self.driver
global MOY_UE1 url = self.url
global URL_SEMESTRE driver.get(url)
driver = self.driver linkAddNote = "formnotes_note_"
url = self.url driver.find_element_by_link_text("semestre 1").click()
driver.get(url) self.wait.until(EC.url_changes(url))
linkAddNote = "formnotes_note_" URL_SEMESTRE = driver.current_url
driver.find_element_by_link_text("semestre 1").click() ue_name = driver.find_elements_by_class_name("status_ue_acro")[0].text
self.wait.until(EC.url_changes(url)) driver.find_element_by_link_text("M1101").click()
URL_SEMESTRE = driver.current_url self.wait.until(EC.url_changes(URL_SEMESTRE))
ue_name = driver.find_elements_by_class_name("status_ue_acro")[0].text driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_link_text("M1101").click() self.wait.until(EC.url_changes(URL_SEMESTRE))
self.wait.until(EC.url_changes(URL_SEMESTRE)) URL = driver.current_url
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() for champs in driver.find_elements_by_xpath(
self.wait.until(EC.url_changes(URL_SEMESTRE)) "//input[contains(@id,'" + linkAddNote + "')]"
URL = driver.current_url ):
for champs in driver.find_elements_by_xpath( champs.clear()
"//input[contains(@id,'" + linkAddNote + "')]" champs.send_keys(12)
): idChamp = champs.get_attribute("id")
champs.clear() idEtud = idChamp[len(linkAddNote) : len(idChamp)]
champs.send_keys(12) if idEtud not in listeEtudiant:
idChamp = champs.get_attribute("id") listeEtudiant.append(idEtud)
idEtud = idChamp[len(linkAddNote) : len(idChamp)] driver.find_element_by_id("formnotes_submit").click()
if idEtud not in listeEtudiant: self.wait.until(EC.url_changes(URL))
listeEtudiant.append(idEtud) driver.get(URL_SEMESTRE)
driver.find_element_by_id("formnotes_submit").click() noteBonne = True
self.wait.until(EC.url_changes(URL)) # print(listeEtudiant)
driver.get(URL_SEMESTRE) for etudiant in listeEtudiant:
noteBonne = True searchBar = driver.find_element_by_id("in-expnom")
# print(listeEtudiant) searchBar.send_keys(etudiant)
for etudiant in listeEtudiant: searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
searchBar.submit() if "12" not in MOY_UE1:
time.sleep(5) noteBonne = False
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text self.assertTrue(noteBonne)
if "12" not in MOY_UE1:
noteBonne = False # Test : Ajoute une note à la seconde UE pour les deux élèves
self.assertTrue(noteBonne) # @expected : La moyenne de la seconde UE apparait et corresponds à la note rentrée
def test_020_ajout_note_seconde_ue(self):
# Test : Ajoute une note à la seconde UE pour les deux élèves global listeEtudiant
# @expected : La moyenne de la seconde UE apparait et corresponds à la note rentrée global MOY_UE2
def test_020_ajout_note_seconde_ue(self): global URL_SEMESTRE
global listeEtudiant linkAddNote = "formnotes_note_"
global MOY_UE2 driver = self.driver
global URL_SEMESTRE url = self.url
linkAddNote = "formnotes_note_" driver.get(URL_SEMESTRE)
driver = self.driver ue_name = driver.find_elements_by_class_name("status_ue_acro")[1].text
url = self.url driver.find_element_by_link_text("M1201").click()
driver.get(URL_SEMESTRE) self.wait.until(EC.url_changes(URL_SEMESTRE))
ue_name = driver.find_elements_by_class_name("status_ue_acro")[1].text driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_link_text("M1201").click() self.wait.until(EC.url_changes(URL_SEMESTRE))
self.wait.until(EC.url_changes(URL_SEMESTRE)) URL = driver.current_url
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() for champs in driver.find_elements_by_xpath(
self.wait.until(EC.url_changes(URL_SEMESTRE)) "//input[contains(@id,'" + linkAddNote + "')]"
URL = driver.current_url ):
for champs in driver.find_elements_by_xpath( champs.clear()
"//input[contains(@id,'" + linkAddNote + "')]" champs.send_keys(8)
): driver.find_element_by_id("formnotes_submit").click()
champs.clear() self.wait.until(EC.url_changes(URL))
champs.send_keys(8) driver.get(URL_SEMESTRE)
driver.find_element_by_id("formnotes_submit").click() noteBonne = True
self.wait.until(EC.url_changes(URL)) for etudiant in listeEtudiant:
driver.get(URL_SEMESTRE) URL = driver.current_url
noteBonne = True searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) MOY_UE2 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
searchBar.submit() if "8" not in MOY_UE2:
time.sleep(5) noteBonne = False
MOY_UE2 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
if "8" not in MOY_UE2: self.assertTrue(noteBonne)
noteBonne = False
# Test : Vérification calcul de la moyenne générale
self.assertTrue(noteBonne) # @expected La moyenne prends en compte les deux ue et leur coefficiant
def test_030_verification_moyenne_generale(self):
# Test : Vérification calcul de la moyenne générale global COEFF_UE1
# @expected La moyenne prends en compte les deux ue et leur coefficiant global COEFF_UE2
def test_030_verification_moyenne_generale(self): COEFF_UE1 = 2
global COEFF_UE1 COEFF_UE2 = 2
global COEFF_UE2 driver = self.driver
COEFF_UE1 = 2 url = self.url
COEFF_UE2 = 2 driver.get(url)
driver = self.driver moyenneBonne = True
url = self.url for etudiant in listeEtudiant:
driver.get(url) searchBar = driver.find_element_by_id("in-expnom")
moyenneBonne = True searchBar.send_keys(etudiant)
for etudiant in listeEtudiant: searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) if (
searchBar.submit() (float(MOY_UE1) * COEFF_UE1 + float(MOY_UE2) * COEFF_UE2)
time.sleep(5) / (COEFF_UE1 + COEFF_UE2)
if ( ) != float(driver.find_element_by_class_name("rcp_moy").text):
(float(MOY_UE1) * COEFF_UE1 + float(MOY_UE2) * COEFF_UE2) moyenneBonne = False
/ (COEFF_UE1 + COEFF_UE2) self.assertTrue(moyenneBonne)
) != float(driver.find_element_by_class_name("rcp_moy").text):
moyenneBonne = False # Test : Changement du coefficiant d'un module et de ce fait, du coefficiant de l'UE
self.assertTrue(moyenneBonne) # @expected : La moyenne générale se modifie en fonction de ce changement de coefficiant
def test_040_modification_coefficiant_module(self):
# Test : Changement du coefficiant d'un module et de ce fait, du coefficiant de l'UE global COEFF_UE1
# @expected : La moyenne générale se modifie en fonction de ce changement de coefficiant COEFF_UE1 = 3
def test_040_modification_coefficiant_module(self): driver = self.driver
global COEFF_UE1 url = self.url
COEFF_UE1 = 3 driver.get(url)
driver = self.driver driver.find_element_by_id("link-programmes").click()
url = self.url driver.find_element_by_id("titre-dut-info").click()
driver.get(url) driver.find_element_by_xpath("//span[contains(text(),'M1101')]").click()
driver.find_element_by_id("link-programmes").click() driver.find_element_by_id("tf_coefficient").clear()
driver.find_element_by_id("titre-dut-info").click() driver.find_element_by_id("tf_coefficient").send_keys(COEFF_UE1)
driver.find_element_by_xpath("//span[contains(text(),'M1101')]").click() URL = driver.current_url
driver.find_element_by_id("tf_coefficient").clear() driver.find_element_by_id("tf_submit").click()
driver.find_element_by_id("tf_coefficient").send_keys(COEFF_UE1) self.wait.until(EC.url_changes(URL))
URL = driver.current_url moyenneBonne = True
driver.find_element_by_id("tf_submit").click() for etudiant in listeEtudiant:
self.wait.until(EC.url_changes(URL)) URL = driver.current_url
moyenneBonne = True searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) if (
searchBar.submit() (float(MOY_UE1) * COEFF_UE1 + float(MOY_UE2) * COEFF_UE2)
time.sleep(5) / (COEFF_UE1 + COEFF_UE2)
if ( ) != float(driver.find_element_by_class_name("rcp_moy").text):
(float(MOY_UE1) * COEFF_UE1 + float(MOY_UE2) * COEFF_UE2) moyenneBonne = False
/ (COEFF_UE1 + COEFF_UE2) self.assertTrue(moyenneBonne)
) != float(driver.find_element_by_class_name("rcp_moy").text):
moyenneBonne = False # Test : Ajout d'une note bonus pour un étudiant et d'une note malus pour un autre
self.assertTrue(moyenneBonne) # @expected : La moyenne de l'UE où est ajouté la note bonus/malus est impactée par cette dernière, la moyenne générale change avec ce changement de moyenne d'UE
def test_050_ajout_note_bonus(self):
# Test : Ajout d'une note bonus pour un étudiant et d'une note malus pour un autre moyenneBonusEtudiant1 = "0.25"
# @expected : La moyenne de l'UE où est ajouté la note bonus/malus est impactée par cette dernière, la moyenne générale change avec ce changement de moyenne d'UE moyenneBonusEtudiant2 = "0.25"
def test_050_ajout_note_bonus(self): linkAddNote = "formnotes_note_"
moyenneBonusEtudiant1 = "0.25" driver = self.driver
moyenneBonusEtudiant2 = "0.25" driver.get(URL_SEMESTRE)
linkAddNote = "formnotes_note_" driver.find_element_by_partial_link_text("malus").click()
driver = self.driver driver.find_element_by_link_text("Créer nouvelle évaluation").click()
driver.get(URL_SEMESTRE) time.sleep(1)
driver.find_element_by_partial_link_text("malus").click() driver.find_element_by_name("jour").clear()
driver.find_element_by_link_text("Créer nouvelle évaluation").click() driver.find_element_by_name("jour").send_keys("31/01/2021")
time.sleep(1) driver.find_element_by_id("tf_description").send_keys("une interrogation bonus")
driver.find_element_by_name("jour").clear() driver.find_element_by_id("tf_submit").click()
driver.find_element_by_name("jour").send_keys("31/01/2021") time.sleep(1)
driver.find_element_by_id("tf_description").send_keys("une interrogation bonus") driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_id("tf_submit").click() self.wait.until(EC.url_changes(URL_SEMESTRE))
time.sleep(1) champsNote = driver.find_elements_by_xpath(
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() "//input[contains(@id,'" + linkAddNote + "')]"
self.wait.until(EC.url_changes(URL_SEMESTRE)) )
champsNote = driver.find_elements_by_xpath( champsNote[0].clear()
"//input[contains(@id,'" + linkAddNote + "')]" champsNote[1].clear()
) champsNote[0].send_keys("-" + moyenneBonusEtudiant1)
champsNote[0].clear() champsNote[1].send_keys(moyenneBonusEtudiant2)
champsNote[1].clear() driver.find_element_by_id("formnotes_submit").click()
champsNote[0].send_keys("-" + moyenneBonusEtudiant1) numeroEtu = 0
champsNote[1].send_keys(moyenneBonusEtudiant2) moyenneBonne = True
driver.find_element_by_id("formnotes_submit").click() for etudiant in listeEtudiant:
numeroEtu = 0 URL = driver.current_url
moyenneBonne = True searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) if numeroEtu == 0:
searchBar.submit() if (
time.sleep(5) (
if numeroEtu == 0: float(MOY_UE1) * COEFF_UE1
if ( + (float(MOY_UE2) + float(moyenneBonusEtudiant1)) * COEFF_UE2
( )
float(MOY_UE1) * COEFF_UE1 / (COEFF_UE1 + COEFF_UE2)
+ (float(MOY_UE2) + float(moyenneBonusEtudiant1)) * COEFF_UE2 ) != float(driver.find_element_by_class_name("rcp_moy").text):
) moyenneBonne = False
/ (COEFF_UE1 + COEFF_UE2) elif numeroEtu == 1:
) != float(driver.find_element_by_class_name("rcp_moy").text): if (
moyenneBonne = False (
elif numeroEtu == 1: float(MOY_UE1) * COEFF_UE1
if ( + (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2
( )
float(MOY_UE1) * COEFF_UE1 / (COEFF_UE1 + COEFF_UE2)
+ (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2 ) != float(driver.find_element_by_class_name("rcp_moy").text):
) moyenneBonne = False
/ (COEFF_UE1 + COEFF_UE2) numeroEtu = numeroEtu + 1
) != float(driver.find_element_by_class_name("rcp_moy").text): self.assertTrue(moyenneBonne)
moyenneBonne = False
numeroEtu = numeroEtu + 1 # Test : Ajout d'une note en attente pour un étudiant, et d'une note entrée pour un autre sur une même évaluation
self.assertTrue(moyenneBonne) # @expected :
def test_060_note_attente(self):
# Test : Ajout d'une note en attente pour un étudiant, et d'une note entrée pour un autre sur une même évaluation moyenneBonusEtudiant1 = "0.25"
# @expected : moyenneBonusEtudiant2 = "0.25"
def test_060_note_attente(self): linkAddNote = "formnotes_note_"
moyenneBonusEtudiant1 = "0.25" champsNote = []
moyenneBonusEtudiant2 = "0.25" driver = self.driver
linkAddNote = "formnotes_note_" driver.get(URL_SEMESTRE)
champsNote = [] driver.find_element_by_link_text("M1101").click()
driver = self.driver self.wait.until(EC.url_changes(URL_SEMESTRE))
driver.get(URL_SEMESTRE) driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_link_text("M1101").click() URL = driver.current_url
self.wait.until(EC.url_changes(URL_SEMESTRE)) champsNote = driver.find_elements_by_xpath(
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() "//input[contains(@id,'" + linkAddNote + "')]"
URL = driver.current_url )
champsNote = driver.find_elements_by_xpath( champsNote[0].clear()
"//input[contains(@id,'" + linkAddNote + "')]" champsNote[0].send_keys("ATT")
) driver.find_element_by_id("formnotes_submit").click()
champsNote[0].clear() self.wait.until(EC.url_changes(URL))
champsNote[0].send_keys("ATT") numeroEtu = 0
driver.find_element_by_id("formnotes_submit").click() moyenneBonne = True
self.wait.until(EC.url_changes(URL)) affichageMoyenne = True
numeroEtu = 0 for etudiant in listeEtudiant:
moyenneBonne = True URL = driver.current_url
affichageMoyenne = True searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys(etudiant) ueListElement = driver.find_elements_by_class_name("ue_acro")
searchBar.submit() ueListText = []
time.sleep(5) for ueElement in ueListElement:
ueListElement = driver.find_elements_by_class_name("ue_acro") ueListText.append(ueElement.text)
ueListText = [] if numeroEtu == 0:
for ueElement in ueListElement: moyEtudiant1 = float(MOY_UE2) + float(moyenneBonusEtudiant1)
ueListText.append(ueElement.text) if moyEtudiant1 != float(
if numeroEtu == 0: driver.find_element_by_class_name("rcp_moy").text
moyEtudiant1 = float(MOY_UE2) + float(moyenneBonusEtudiant1) ):
if moyEtudiant1 != float( moyenneBonne = False
driver.find_element_by_class_name("rcp_moy").text if "UE11" in ueListText:
): affichageMoyenne = False
moyenneBonne = False elif numeroEtu == 1:
if "UE11" in ueListText: moyEtudiant2 = (
affichageMoyenne = False float(MOY_UE1) * COEFF_UE1
elif numeroEtu == 1: + (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2
moyEtudiant2 = ( ) / (COEFF_UE1 + COEFF_UE2)
float(MOY_UE1) * COEFF_UE1 if moyEtudiant2 != float(
+ (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2 driver.find_element_by_class_name("rcp_moy").text
) / (COEFF_UE1 + COEFF_UE2) ):
if moyEtudiant2 != float( moyenneBonne = False
driver.find_element_by_class_name("rcp_moy").text if "UE11" not in ueListText:
): affichageMoyenne = False
moyenneBonne = False numeroEtu = numeroEtu + 1
if "UE11" not in ueListText: self.assertTrue(moyenneBonne and affichageMoyenne)
affichageMoyenne = False
numeroEtu = numeroEtu + 1 def test_070_note_absent(self):
self.assertTrue(moyenneBonne and affichageMoyenne) ue_name = "UE11"
moyenneBonusEtudiant1 = "0.25"
def test_070_note_absent(self): moyenneBonusEtudiant2 = "0.25"
ue_name = "UE11" linkAddNote = "formnotes_note_"
moyenneBonusEtudiant1 = "0.25" MOY_UE1_EXC = 0
moyenneBonusEtudiant2 = "0.25" champsNote = []
linkAddNote = "formnotes_note_" driver = self.driver
MOY_UE1_EXC = 0 driver.get(URL_SEMESTRE)
champsNote = [] driver.find_element_by_link_text("M1101").click()
driver = self.driver self.wait.until(EC.url_changes(URL_SEMESTRE))
driver.get(URL_SEMESTRE) driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_link_text("M1101").click() URL = driver.current_url
self.wait.until(EC.url_changes(URL_SEMESTRE)) champsNote = driver.find_elements_by_xpath(
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() "//input[contains(@id,'" + linkAddNote + "')]"
URL = driver.current_url )
champsNote = driver.find_elements_by_xpath( champsNote[0].clear()
"//input[contains(@id,'" + linkAddNote + "')]" champsNote[0].send_keys("ABS")
) driver.find_element_by_id("formnotes_submit").click()
champsNote[0].clear() self.wait.until(EC.url_changes(URL))
champsNote[0].send_keys("ABS") numeroEtu = 0
driver.find_element_by_id("formnotes_submit").click() moyenneBonne = True
self.wait.until(EC.url_changes(URL)) affichageMoyenne = True
numeroEtu = 0 noteExcuseeEgaleAZero = True
moyenneBonne = True ueList = []
affichageMoyenne = True for etudiant in listeEtudiant:
noteExcuseeEgaleAZero = True URL = driver.current_url
ueList = [] searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") self.wait.until(EC.url_changes(URL))
searchBar.send_keys(etudiant) ueListElement = driver.find_elements_by_class_name("ue_acro")
searchBar.submit() ueListText = []
self.wait.until(EC.url_changes(URL)) for ueElement in ueListElement:
ueListElement = driver.find_elements_by_class_name("ue_acro") ueListText.append(ueElement.text)
ueListText = [] if numeroEtu == 0:
for ueElement in ueListElement: moyEtudiant1 = (
ueListText.append(ueElement.text) float(MOY_UE1_EXC) * COEFF_UE1
if numeroEtu == 0: + ((float(MOY_UE2) + float(moyenneBonusEtudiant1)) * COEFF_UE2)
moyEtudiant1 = ( ) / (COEFF_UE1 + COEFF_UE2)
float(MOY_UE1_EXC) * COEFF_UE1 # print(format(moyEtudiant1, "2.2f"))
+ ((float(MOY_UE2) + float(moyenneBonusEtudiant1)) * COEFF_UE2) # print(
) / (COEFF_UE1 + COEFF_UE2) # format(
# print(format(moyEtudiant1, "2.2f")) # float(driver.find_element_by_class_name("rcp_moy").text), "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"
# ) ):
if format(moyEtudiant1, "2.2f") != format( moyenneBonne = False
float(driver.find_element_by_class_name("rcp_moy").text), "2.2f" if ue_name not in ueListText:
): affichageMoyenne = False
moyenneBonne = False MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
if ue_name not in ueListText: if float(0) != float(MOY_UE1):
affichageMoyenne = False noteExcuseeEgaleAZero = False
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text elif numeroEtu == 1:
if float(0) != float(MOY_UE1): MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text
noteExcuseeEgaleAZero = False moyEtudiant2 = (
elif numeroEtu == 1: float(MOY_UE1) * COEFF_UE1
MOY_UE1 = driver.find_element_by_id("ue-" + ue_name.lower().replace(" ","-")).text + (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2
moyEtudiant2 = ( ) / (COEFF_UE1 + COEFF_UE2)
float(MOY_UE1) * COEFF_UE1 if moyEtudiant2 != float(
+ (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2 driver.find_element_by_class_name("rcp_moy").text
) / (COEFF_UE1 + COEFF_UE2) ):
if moyEtudiant2 != float( moyenneBonne = False
driver.find_element_by_class_name("rcp_moy").text if "UE11" not in ueListText:
): affichageMoyenne = False
moyenneBonne = False numeroEtu = numeroEtu + 1
if "UE11" not in ueListText: self.assertTrue(moyenneBonne and affichageMoyenne and noteExcuseeEgaleAZero)
affichageMoyenne = False
numeroEtu = numeroEtu + 1 def test_080_note_excuse(self):
self.assertTrue(moyenneBonne and affichageMoyenne and noteExcuseeEgaleAZero) moyenneBonusEtudiant1 = "0.25"
moyenneBonusEtudiant2 = "0.25"
def test_080_note_excuse(self): linkAddNote = "formnotes_note_"
moyenneBonusEtudiant1 = "0.25" champsNote = []
moyenneBonusEtudiant2 = "0.25" driver = self.driver
linkAddNote = "formnotes_note_" driver.get(URL_SEMESTRE)
champsNote = [] driver.find_element_by_link_text("M1101").click()
driver = self.driver self.wait.until(EC.url_changes(URL_SEMESTRE))
driver.get(URL_SEMESTRE) driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click()
driver.find_element_by_link_text("M1101").click() URL = driver.current_url
self.wait.until(EC.url_changes(URL_SEMESTRE)) champsNote = driver.find_elements_by_xpath(
driver.find_element_by_xpath("//a[contains(@href,'saisie_notes?')]").click() "//input[contains(@id,'" + linkAddNote + "')]"
URL = driver.current_url )
champsNote = driver.find_elements_by_xpath( champsNote[0].clear()
"//input[contains(@id,'" + linkAddNote + "')]" champsNote[0].send_keys("EXC")
) driver.find_element_by_id("formnotes_submit").click()
champsNote[0].clear() self.wait.until(EC.url_changes(URL))
champsNote[0].send_keys("EXC") numeroEtu = 0
driver.find_element_by_id("formnotes_submit").click() moyenneBonne = True
self.wait.until(EC.url_changes(URL)) affichageMoyenne = True
numeroEtu = 0 ueList = []
moyenneBonne = True for etudiant in listeEtudiant:
affichageMoyenne = True URL = driver.current_url
ueList = [] searchBar = driver.find_element_by_id("in-expnom")
for etudiant in listeEtudiant: searchBar.send_keys(etudiant)
URL = driver.current_url searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") self.wait.until(EC.url_changes(URL))
searchBar.send_keys(etudiant) ueListElement = driver.find_elements_by_class_name("ue_acro")
searchBar.submit() ueListText = []
self.wait.until(EC.url_changes(URL)) for ueElement in ueListElement:
ueListElement = driver.find_elements_by_class_name("ue_acro") ueListText.append(ueElement.text)
ueListText = [] if numeroEtu == 0:
for ueElement in ueListElement: moyEtudiant1 = float(MOY_UE2) + float(moyenneBonusEtudiant1)
ueListText.append(ueElement.text) if moyEtudiant1 != float(
if numeroEtu == 0: driver.find_element_by_class_name("rcp_moy").text
moyEtudiant1 = float(MOY_UE2) + float(moyenneBonusEtudiant1) ):
if moyEtudiant1 != float( moyenneBonne = False
driver.find_element_by_class_name("rcp_moy").text if "UE11" in ueListText:
): affichageMoyenne = False
moyenneBonne = False elif numeroEtu == 1:
if "UE11" in ueListText: moyEtudiant2 = (
affichageMoyenne = False float(MOY_UE1) * COEFF_UE1
elif numeroEtu == 1: + (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2
moyEtudiant2 = ( ) / (COEFF_UE1 + COEFF_UE2)
float(MOY_UE1) * COEFF_UE1 if moyEtudiant2 != float(
+ (float(MOY_UE2) - float(moyenneBonusEtudiant2)) * COEFF_UE2 driver.find_element_by_class_name("rcp_moy").text
) / (COEFF_UE1 + COEFF_UE2) ):
if moyEtudiant2 != float( moyenneBonne = False
driver.find_element_by_class_name("rcp_moy").text if "UE11" not in ueListText:
): affichageMoyenne = False
moyenneBonne = False numeroEtu = numeroEtu + 1
if "UE11" not in ueListText: self.assertTrue(moyenneBonne and affichageMoyenne)
affichageMoyenne = False
numeroEtu = numeroEtu + 1 # TOdo
self.assertTrue(moyenneBonne and affichageMoyenne) def test_090_note_bonus(self):
global listeEtudiant
# TOdo global COEFF_UE1
def test_090_note_bonus(self): global COEFF_UE2
global listeEtudiant global URL_SEMESTRE
global COEFF_UE1
global COEFF_UE2 def tearDown(self):
global URL_SEMESTRE self.driver.close()
def tearDown(self):
self.driver.close() if __name__ == "__main__":
deleteDepartement.main()
createDepartement.main()
if __name__ == "__main__": creationSiteDepartement.main()
deleteDepartement.main() cmdProcess = [
createDepartement.main() "./scriptExecution.sh",
creationSiteDepartement.main() LINK_SCODOC_SERVER,
cmdProcess = [ NOM_DPT,
"./scriptExecution.sh", "test_scenario3_formation.py",
LINK_SCODOC_SERVER, ]
NOM_DPT, process = subprocess.Popen(cmdProcess)
"test_scenario3_formation.py", process.wait()
] unittest.main(
process = subprocess.Popen(cmdProcess) testRunner=HtmlTestRunner.HTMLTestRunner(
process.wait() report_name="06_Moyenne_tests",
unittest.main( output="./ResultatTest",
testRunner=HtmlTestRunner.HTMLTestRunner( combine_reports=True,
report_name="06_Moyenne_tests", )
output="./ResultatTest", )
combine_reports=True,
)
)

View File

@ -1,245 +1,242 @@
import unittest import unittest
import time import time
import subprocess import subprocess
import urllib.parse as urlparse import urllib.parse as urlparse
import HtmlTestRunner import HtmlTestRunner
import createDepartement import createDepartement
import creationSiteDepartement import creationSiteDepartement
import deleteDepartement import deleteDepartement
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, BASE_NOT_SECURED_URL,
SCODOC_PORT, LINK_SCODOC_SERVER,
BASE_SSH_URL, NOM_DPT,
LINK_SCODOC_SERVER, SCODOC_ENS_ID,
NOM_DPT, SCODOC_ENS_PASS,
SCODOC_ENS_ID, SCODOC_CHEF_ID,
SCODOC_ENS_PASS, SCODOC_CHEF_PASS,
SCODOC_CHEF_ID, NAVIGATEUR,
SCODOC_CHEF_PASS, )
NAVIGATEUR, from urllib.parse import parse_qs
) from selenium import webdriver
from urllib.parse import parse_qs from selenium.webdriver.common.keys import Keys
from selenium import webdriver from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support.select import Select
URL_ETUDIANT = ""
URL_DECISION = ""
URL_ETUDIANT = ""
URL_DECISION = ""
class PythonOrgSearch(unittest.TestCase):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test
class PythonOrgSearch(unittest.TestCase): def setUp(self):
# Permet de se connecter et se remettre sur la page d'accueil avant chaque test if NAVIGATEUR == "firefox":
def setUp(self): self.driver = webdriver.Firefox()
if NAVIGATEUR == "firefox": elif NAVIGATEUR == "chrome":
self.driver = webdriver.Firefox() self.driver = webdriver.Chrome()
elif NAVIGATEUR == "chrome": self.url = BASE_URL + NOM_DPT + "/Scolarite"
self.driver = webdriver.Chrome() self.wait = WebDriverWait(self.driver, 10)
self.url = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" self.driver.get(
self.wait = WebDriverWait(self.driver, 10) "https://"
self.driver.get( + SCODOC_ADMIN_ID
SCHEMA + ":"
+ "://" + SCODOC_ADMIN_PASS
+ SCODOC_ADMIN_ID + "@"
+ ":" + BASE_NOT_SECURED_URL
+ SCODOC_ADMIN_PASS + "force_admin_authentication"
+ "@" )
+ BASE_SSH_URL
+ "force_admin_authentication" def test_010_etudiantS1_assidu_avec_moy_admis(self):
) driver = self.driver
url = self.url
def test_010_etudiantS1_assidu_avec_moy_admis(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID1")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID1") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath(
URL_ETUDIANT = driver.current_url "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-10").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url time.sleep(1)
driver.find_element_by_id("input-choice-10").click() driver.get(URL_ETUDIANT)
driver.find_element_by_id("subut").click() self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text)
time.sleep(1)
driver.get(URL_ETUDIANT) def test_020_etudiantS1_non_assidu_avec_moy_semestre_non_valide(self):
self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text) driver = self.driver
url = self.url
def test_020_etudiantS1_non_assidu_avec_moy_semestre_non_valide(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID1")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID1") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath(
URL_ETUDIANT = driver.current_url "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-40").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url driver.get(URL_ETUDIANT)
driver.find_element_by_id("input-choice-40").click() self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text)
driver.find_element_by_id("subut").click()
driver.get(URL_ETUDIANT) def test_030_etudiantS1_assidu_sous_la_moy_semestre_valide(self):
self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text) driver = self.driver
url = self.url
def test_030_etudiantS1_assidu_sous_la_moy_semestre_valide(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID4")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID4") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath(
URL_ETUDIANT = driver.current_url "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-30").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url driver.get(URL_ETUDIANT)
driver.find_element_by_id("input-choice-30").click() self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
driver.find_element_by_id("subut").click() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
driver.get(URL_ETUDIANT) driver.find_element_by_xpath(
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text) "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-580").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url driver.get(URL_ETUDIANT)
driver.find_element_by_id("input-choice-580").click() self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
driver.find_element_by_id("subut").click()
driver.get(URL_ETUDIANT) def test_040_etudiantS1_non_assidu_sous_la_moy_semestre_valide(self):
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text) driver = self.driver
url = self.url
def test_040_etudiantS1_non_assidu_sous_la_moy_semestre_valide(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID4")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID4") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath(
URL_ETUDIANT = driver.current_url "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-40").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url driver.get(URL_ETUDIANT)
driver.find_element_by_id("input-choice-40").click() self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text)
driver.find_element_by_id("subut").click() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
driver.get(URL_ETUDIANT) driver.find_element_by_xpath(
self.assertTrue("ATJ" in driver.find_element_by_class_name("rcp_dec").text) "//a[contains(@href,'formsemestre_validation_etud_form?')]"
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() ).click()
driver.find_element_by_xpath( self.wait.until(EC.url_changes(URL_ETUDIANT))
"//a[contains(@href,'formsemestre_validation_etud_form?')]" URL_DECISION = driver.current_url
).click() driver.find_element_by_id("input-choice-580").click()
self.wait.until(EC.url_changes(URL_ETUDIANT)) driver.find_element_by_id("subut").click()
URL_DECISION = driver.current_url driver.get(URL_ETUDIANT)
driver.find_element_by_id("input-choice-580").click() self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text)
driver.find_element_by_id("subut").click()
driver.get(URL_ETUDIANT) def test_050_calcul_automatiqueS2_jury(self):
self.assertTrue("ATB" in driver.find_element_by_class_name("rcp_dec").text) driver = self.driver
url = self.url
def test_050_calcul_automatiqueS2_jury(self): driver.get(url)
driver = self.driver driver.find_element_by_link_text("semestre 2").click()
url = self.url self.wait.until(EC.url_changes(url))
driver.get(url) urlTmp = driver.current_url
driver.find_element_by_link_text("semestre 2").click() driver.find_element_by_xpath("//a[contains(text(),'Jury')]").click()
self.wait.until(EC.url_changes(url)) driver.find_element_by_link_text("Saisie des décisions du jury").click()
urlTmp = driver.current_url self.wait.until(EC.url_changes(urlTmp))
driver.find_element_by_xpath("//a[contains(text(),'Jury')]").click() urlTmp = driver.current_url
driver.find_element_by_link_text("Saisie des décisions du jury").click() driver.find_element_by_partial_link_text("Calcul automatique").click()
self.wait.until(EC.url_changes(urlTmp)) self.wait.until(EC.url_changes(urlTmp))
urlTmp = driver.current_url urlTmp = driver.current_url
driver.find_element_by_partial_link_text("Calcul automatique").click() driver.find_element_by_xpath("//input[@type='submit']").click()
self.wait.until(EC.url_changes(urlTmp)) self.wait.until(EC.url_changes(urlTmp))
urlTmp = driver.current_url searchBar = driver.find_element_by_id("in-expnom")
driver.find_element_by_xpath("//input[@type='submit']").click() searchBar.send_keys("EID7")
self.wait.until(EC.url_changes(urlTmp)) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID7") self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text)
searchBar.submit() searchBar = driver.find_element_by_id("in-expnom")
time.sleep(5) searchBar.send_keys("EID10")
self.assertTrue("ADM" in driver.find_element_by_class_name("rcp_dec").text) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID10") self.assertTrue("en cours" in driver.page_source)
searchBar.submit()
time.sleep(5) def test_060_declarer_defaillance(self):
self.assertTrue("en cours" in driver.page_source) driver = self.driver
url = self.url
def test_060_declarer_defaillance(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID10")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID10") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath("//a[contains(@href,'formDef?')]").click()
URL_ETUDIANT = driver.current_url self.wait.until(EC.url_changes(URL_ETUDIANT))
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() input = driver.find_element_by_name("event_date")
driver.find_element_by_xpath("//a[contains(@href,'formDef?')]").click() input.clear()
self.wait.until(EC.url_changes(URL_ETUDIANT)) input.send_keys("11/06/2021")
input = driver.find_element_by_name("event_date") driver.find_element_by_xpath("//input[@type='submit']").click()
input.clear() driver.get(URL_ETUDIANT)
input.send_keys("11/06/2021") self.assertTrue("Défaillant" in driver.page_source)
driver.find_element_by_xpath("//input[@type='submit']").click()
driver.get(URL_ETUDIANT) def test_070_declarer_demission(self):
self.assertTrue("Défaillant" in driver.page_source) driver = self.driver
url = self.url
def test_070_declarer_demission(self): driver.get(url)
driver = self.driver searchBar = driver.find_element_by_id("in-expnom")
url = self.url searchBar.send_keys("EID10")
driver.get(url) searchBar.submit()
searchBar = driver.find_element_by_id("in-expnom") time.sleep(5)
searchBar.send_keys("EID10") URL_ETUDIANT = driver.current_url
searchBar.submit() driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click()
time.sleep(5) driver.find_element_by_xpath("//a[contains(@href,'formDem?')]").click()
URL_ETUDIANT = driver.current_url self.wait.until(EC.url_changes(URL_ETUDIANT))
driver.find_element_by_xpath("//a[contains(text(),'Scolarité')]").click() input = driver.find_element_by_name("event_date")
driver.find_element_by_xpath("//a[contains(@href,'formDem?')]").click() input.clear()
self.wait.until(EC.url_changes(URL_ETUDIANT)) input.send_keys("11/06/2021")
input = driver.find_element_by_name("event_date") driver.find_element_by_xpath("//input[@type='submit']").click()
input.clear() driver.get(URL_ETUDIANT)
input.send_keys("11/06/2021") self.assertTrue("Démission le " in driver.page_source)
driver.find_element_by_xpath("//input[@type='submit']").click()
driver.get(URL_ETUDIANT) def tearDown(self):
self.assertTrue("Démission le " in driver.page_source) self.driver.close()
def tearDown(self):
self.driver.close() if __name__ == "__main__":
deleteDepartement.main()
createDepartement.main()
if __name__ == "__main__": creationSiteDepartement.main()
deleteDepartement.main() cmdProcess = [
createDepartement.main() "./scriptExecution.sh",
creationSiteDepartement.main() LINK_SCODOC_SERVER,
cmdProcess = [ NOM_DPT,
"./scriptExecution.sh", "test_scenario4_formation.py",
LINK_SCODOC_SERVER, ]
NOM_DPT, process = subprocess.Popen(cmdProcess)
"test_scenario4_formation.py", process.wait()
] unittest.main(
process = subprocess.Popen(cmdProcess) testRunner=HtmlTestRunner.HTMLTestRunner(
process.wait() report_name="07_Admission_et_passages_tests",
unittest.main( output="./ResultatTest",
testRunner=HtmlTestRunner.HTMLTestRunner( combine_reports=True,
report_name="07_Admission_et_passages_tests", )
output="./ResultatTest", )
combine_reports=True,
)
)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,55 +1,53 @@
# coding: utf8 # coding: utf8
import unittest import unittest
import time import time
import subprocess import subprocess
import HtmlTestRunner import HtmlTestRunner
from setting import ( from setting import (
SCODOC_ADMIN_ID, SCODOC_ADMIN_ID,
SCODOC_ADMIN_PASS, SCODOC_ADMIN_PASS,
SCHEMA, BASE_URL,
SCODOC_SERVER, NOM_DPT,
SCODOC_PORT, LINK_SCODOC_SERVER,
NOM_DPT, BASE_NOT_SECURED_URL,
LINK_SCODOC_SERVER, NAVIGATEUR,
BASE_SSH_URL, )
NAVIGATEUR, from selenium import webdriver
) from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select URL = BASE_URL + NOM_DPT + "/Scolarite"
URL_ROOT = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT ACRONYME_FORMATION = "FormationTEST"
URL_AUTH = "/".join((URL_ROOT, "auth", "login"))
URL_SCODOC8 = "/".join((URL_ROOT, "index"))
URL_HOME = "/".join((URL_ROOT, "ScoDoc", "index")) def main():
URL_DEPT = "/".join((URL_ROOT, "ScoDoc", NOM_DPT, "Scolarite", "index_html")) if NAVIGATEUR == "firefox":
URL_ADMIN = "/".join((URL_ROOT, "ScoDoc", "admin")) driver = webdriver.Firefox()
else:
ACRONYME_FORMATION = "FormationTEST" driver = webdriver.Chrome()
driver.get(
def main(): "https://"
next_page = URL_HOME + SCODOC_ADMIN_ID
if NAVIGATEUR == "firefox": + ":"
driver = webdriver.Firefox() + SCODOC_ADMIN_PASS
else: + "@"
driver = webdriver.Chrome() + BASE_NOT_SECURED_URL
auth_page = URL_AUTH + ("?next=" + next_page).replace("/", "%2F") + "force_admin_authentication"
driver.get(auth_page) )
driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID) driver.get(BASE_URL + "scodoc_admin")
driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) time.sleep(2)
driver.find_element_by_id("submit").click() try:
time.sleep(2) select = Select(driver.find_element_by_id("create-dept"))
try: select.select_by_visible_text(NOM_DPT)
select = Select(driver.find_element_by_id("create-dept")) driver.find_element_by_id("create-dept").submit()
select.select_by_visible_text(NOM_DPT) time.sleep(1)
driver.find_element_by_id("create-dept").submit() driver.find_element_by_id("tf_submit").click()
time.sleep(1) time.sleep(1)
driver.find_element_by_id("tf_submit").click() driver.close()
time.sleep(1) except NoSuchElementException:
driver.close()
except NoSuchElementException:
driver.close() driver.close()

View File

@ -1,8 +0,0 @@
import subprocess
from setting import LINK_SCODOC_SERVER, NOM_DPT
def main():
cmdProcess = ["./scriptImportFormation.sh", LINK_SCODOC_SERVER, NOM_DPT]
process = subprocess.Popen(cmdProcess)
process.wait()

205
readme.md
View File

@ -1,112 +1,93 @@
#Tests E2E du logiciel Scodoc #Tests E2E du logiciel Scodoc
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. 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 ## I Configuration
Dans cette partie je vais détailler les prérequis pour l'environnement de développement Dans cette partie je vais détailler les prérequis pour l'environnement de développement
### Prérequis Module ### Prérequis Module
Ces prérequis peuvent être trouvés dans requirements.txt qui se trouvent à la base du projet. 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/) 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 : Les modules suivant sont nécessaire :
>selenium==3.141.0 >selenium==3.141.0
>python-dotenv==0.17.1 >python-dotenv==0.17.1
>HtmlTestRunner==0.8.0 >HtmlTestRunner==0.8.0
Vous pouvez les installer manuellement avec pip avec la commande suivante : Vous pouvez les installer manuellement avec pip avec la commande suivante :
>pip install selenium >pip install selenium
ou alternativement avec ou alternativement avec
>pip install -r requirements.txt >pip install -r requirements.txt
### Environnement de test ### 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 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 #### .env
SCHEMA="http" >BASE_URL = "https://scodoc-dev-iutinfo.univ-lille.fr/ScoDoc/"
BASE_URL = "scodoc_server:5000"
NOM_DPT = "TEST01" Ici sera le lien vers la page d'accueil de votre Scodoc
SCODOC_ADMIN_ID = "admin_id"
SCODOC_ADMIN_PASS = "admin_password" >NOM_DPT = "test01"
SCODOC_ENS_ID = "enseignant_id"
SCODOC_ENS_PASS = "enseignant_password@10" 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_CHEF_ID = "chef_id"
SCODOC_CHEF_PASS = "p@ssword42@" >SCODOC_ADMIN_ID = "admin_id"
LINK_SCODOC_SERVER = "scodoc_server"
BASE_SSH_URL = "scodoc_server:5000/" Le nom d'utilisateur d'un Admin Scodoc.
NAVIGATEUR = "firefox"
>SCODOC_ADMIN_PASS = "admin_password"
Ici sera le lien vers la page d'accueil de votre Scodoc
Le mot de passe d'un Admin Scodoc.
>NOM_DPT = "test01"
>SCODOC_ENS_ID = "enseignant_id"
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.
Le nom d'utilisateur d'un enseignant lambda qui servira pour rentrer des notes, soit qui existe, soit qui sera créé.
>SCODOC_ADMIN_ID = "admin_id"
>SCODOC_ENS_PASS = "enseignant_password@10"
Le nom d'utilisateur d'un Admin Scodoc.
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_ADMIN_PASS = "admin_password"
>SCODOC_CHEF_ID = "chef_id"
Le mot de passe d'un Admin Scodoc.
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_ENS_ID = "enseignant_id"
>SCODOC_CHEF_PASS = "p@ssword42@"
Le nom d'utilisateur d'un enseignant lambda qui servira pour rentrer des notes, soit qui existe, soit qui sera créé.
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
>SCODOC_ENS_PASS = "enseignant_password@10"
>LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
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.
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.
>SCODOC_CHEF_ID = "chef_id"
>BASE_NOT_SECURED_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
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éé.
Le lien vers la page de choix de département, avec le format précisé.
>SCODOC_CHEF_PASS = "p@ssword42@"
>NAVIGATEUR = "firefox"
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
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.
>LINK_SCODOC_SERVER = "root@ssh_server_scodoc"
#### Explications du fonctionnement des tests
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.
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.
>BASE_SSH_URL = "scodoc-dev-iutinfo.univ-lille.fr/"
##Lancement des tests
Le lien vers la page de choix de département, avec le format précisé.
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
>NAVIGATEUR = "firefox"
>python3 01_creation_departement_test.py
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.
Alternativement vous pouvez lancer l'ensemble des tests avec la commande
#### Explications du fonctionnement des tests
>./lancement_de_tout_les_tests.sh
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.
L'option --c ou --cleanup est disponible si vous souhaitez effacer tout les rapports précédents
##Lancement des tests
###Resultats 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
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
>python3 01_creation_departement_test.py
>./scriptGenerateReportPage.sh
Alternativement vous pouvez lancer l'ensemble des tests avec la commande
Celui ci est lancé automatiquement à la fin du script
>./lancement_de_tout_les_tests.sh
>./lancement_de_tout_les_tests.sh
L'option --c ou --cleanup est disponible si vous souhaitez effacer tout les rapports précédents
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
###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
##Correctifs
* Modifier le PATH pour que geckodriver soit executable `export PATH=".:$PATH"`
* pip install HtmlTestRunner-Python3
* Créer un utilisateur Nom:BACH Prenom:Test User:Bach TODO: utiliser enseignant_id à la place

View File

@ -6,6 +6,6 @@ then
exit 2 exit 2
fi fi
ssh $1 /bin/bash<< EOF ssh $1 /bin/bash<< EOF
cd /opt/scodoc/tools cd /opt/scodoc/Products/ScoDoc/config
./create_dept.sh -n ${2} ./create_dept.sh -n ${2}
EOF EOF

View File

@ -1,12 +0,0 @@
#!/bin/bash
#Ce script se charge de se connecter au serveur scodoc et créer les enseignants requis pour le département donné en paramètre
if [ "$#" -ne 2 ];
then
echo "Pas assez d'arguments"
exit 2
fi
ssh $1 /bin/bash<< EOF
cd /opt/scodoc
source venv/bin/activate
flask user-create -n BACH -p Jean-Sebastien Bach Ens $2
EOF

View File

@ -6,7 +6,7 @@ then
exit 2 exit 2
fi fi
ssh $1 /bin/bash<< EOF ssh $1 /bin/bash<< EOF
cd /opt/scodoc/tools cd /opt/scodoc/Products/ScoDoc/config
./delete_dept.sh -n ${2} ./delete_dept.sh -n ${2}
EOF EOF
# ssh $1 'systemctl restart scodoc' ssh $1 'systemctl restart ScoDoc.service'

View File

@ -6,7 +6,7 @@ then
exit 2 exit 2
fi fi
ssh $1 /bin/bash<< EOF ssh $1 /bin/bash<< EOF
cd /opt/scodoc/ cd /opt/scodoc/Products/ScoDoc/
scotests/scointeractive.sh -r ${2} scotests/${3} scotests/scointeractive.sh -r ${2} scotests/${3}
EOF EOF
# ssh $1 'systemctl restart scodoc' ssh $1 'systemctl restart ScoDoc.service'

View File

@ -1,12 +0,0 @@
#!/bin/bash
#Ce script se charge de se connecter au serveur scodoc et créer les enseignants requis pour le département donné en paramètre
if [ "$#" -ne 2 ];
then
echo "Pas assez d'arguments"
exit 2
fi
ssh scodoc@$1 /bin/bash<< EOF
cd /opt/scodoc
source venv/bin/activate
flask import-xml tests/scenario/export_formation1.xml $2
EOF

View File

@ -1,20 +1,18 @@
import os import os
from os.path import join, dirname from os.path import join, dirname
from dotenv import load_dotenv from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), ".env") dotenv_path = join(dirname(__file__), ".env")
load_dotenv(dotenv_path) load_dotenv(dotenv_path)
SCHEMA = os.environ.get("SCHEMA") BASE_URL = os.environ.get("BASE_URL")
SCODOC_SERVER = os.environ.get("SCODOC_SERVER") NOM_DPT = os.environ.get("NOM_DPT")
SCODOC_PORT = os.environ.get("SCODOC_PORT") SCODOC_ADMIN_ID = os.environ.get("SCODOC_ADMIN_ID")
NOM_DPT = os.environ.get("NOM_DPT") SCODOC_ADMIN_PASS = os.environ.get("SCODOC_ADMIN_PASS")
SCODOC_ADMIN_ID = os.environ.get("SCODOC_ADMIN_ID") SCODOC_ENS_ID = os.environ.get("SCODOC_ENS_ID")
SCODOC_ADMIN_PASS = os.environ.get("SCODOC_ADMIN_PASS") SCODOC_ENS_PASS = os.environ.get("SCODOC_ENS_PASS")
SCODOC_ENS_ID = os.environ.get("SCODOC_ENS_ID") SCODOC_CHEF_ID = os.environ.get("SCODOC_CHEF_ID")
SCODOC_ENS_PASS = os.environ.get("SCODOC_ENS_PASS") SCODOC_CHEF_PASS = os.environ.get("SCODOC_CHEF_PASS")
SCODOC_CHEF_ID = os.environ.get("SCODOC_CHEF_ID") LINK_SCODOC_SERVER = os.environ.get("LINK_SCODOC_SERVER")
SCODOC_CHEF_PASS = os.environ.get("SCODOC_CHEF_PASS") BASE_NOT_SECURED_URL = os.environ.get("BASE_NOT_SECURED_URL")
LINK_SCODOC_SERVER = os.environ.get("LINK_SCODOC_SERVER")
BASE_SSH_URL = os.environ.get("BASE_SSH_URL")
NAVIGATEUR = os.environ.get("NAVIGATEUR") NAVIGATEUR = os.environ.get("NAVIGATEUR")

View File

@ -1,38 +1,50 @@
# coding: utf8 # coding: utf8
from setting import ( import unittest
SCODOC_ADMIN_ID, import time
SCODOC_ADMIN_PASS, import subprocess
SCHEMA, import HtmlTestRunner
SCODOC_SERVER, from setting import (
SCODOC_PORT, SCODOC_ADMIN_ID,
NOM_DPT, SCODOC_ADMIN_PASS,
LINK_SCODOC_SERVER, BASE_URL,
BASE_SSH_URL, NOM_DPT,
NAVIGATEUR, LINK_SCODOC_SERVER,
) BASE_NOT_SECURED_URL,
from selenium import webdriver NAVIGATEUR,
)
URL = SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + NOM_DPT + "/Scolarite" from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
ACRONYME_FORMATION = "FormationTEST" from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
def main(): from selenium.webdriver.support.ui import Select
if NAVIGATEUR == "firefox": from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
else: URL = BASE_URL + NOM_DPT + "/Scolarite"
driver = webdriver.Chrome()
auth_page = URL_AUTH + ("?next=" + URL_HOME).replace("/", "%2F") ACRONYME_FORMATION = "FormationTEST"
driver.get(auth_page)
driver.find_element_by_id("user_name").send_keys(SCODOC_ADMIN_ID)
driver.find_element_by_id("password").send_keys(SCODOC_ADMIN_PASS) def main():
driver.find_element_by_id("submit").click() if NAVIGATEUR == "firefox":
# driver.get(SCHEMA + "://" + SCODOC_SERVER + ":" + SCODOC_PORT + "scodoc_admin") driver = webdriver.Firefox()
# time.sleep(2) else:
# try: driver = webdriver.Chrome()
# select = Select(driver.find_element_by_id("delete-dept")) driver.get(
# select.select_by_visible_text(NOM_DPT) "https://"
# driver.find_element_by_id("delete-dept").submit() + SCODOC_ADMIN_ID
# driver.close() + ":"
# except NoSuchElementException: + SCODOC_ADMIN_PASS
driver.close() + "@"
+ 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()