Skip to content

Commit

Permalink
Merge pull request #632 from moevm/DIS#620
Browse files Browse the repository at this point in the history
Created a billet for integrating parser into tests
  • Loading branch information
xistorm authored Feb 26, 2025
2 parents 4585f73 + 3a621d0 commit e104a52
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 111 deletions.
98 changes: 49 additions & 49 deletions tests/main.py
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
import os
import unittest
import sys
import argparse
from basic_selenium_test import BasicSeleniumTest
from test_statistic import StatisticTestSelenium
from test_authorization import AuthTestSelenium
from test_single_card_check import SingleCheckTestSelenium
from test_version import VersionTestSelenium
from test_file_load import FileLoadTestSelenium
from test_criterion_packs_page import CriterionPacksTestSelenium
from test_admin_criterions_page import AdminCriterionsTestSelenium

def parse_arguments():
parser = argparse.ArgumentParser(description='Run Selenium tests with specified data')
parser.add_argument('--host', type=str, default='http://127.0.0.1:8080', help='Host address for testing')
parser.add_argument('--login', type=str, required=True, help='insert Username')
parser.add_argument('--password', type=str, required=True, help='insert Password')
script_dir = os.path.dirname(os.path.abspath(__file__))
parser.add_argument('--pres', type=str, default=os.path.join(script_dir, 'tests_data/example_of_pres.pptx'), help='your path to press for testing')
parser.add_argument('--report', type=str, default=os.path.join(script_dir, 'tests_data/example_of_report.docx'), help='your path to report in .docx')
parser.add_argument('--report_doc', type=str, default=os.path.join(script_dir, 'tests_data/example_of_report.doc'), help='your path to report in .doc')


return parser.parse_args()

def main():
args = parse_arguments()

suite = unittest.TestSuite()
tests = (AuthTestSelenium,
StatisticTestSelenium,
FileLoadTestSelenium,
SingleCheckTestSelenium,
VersionTestSelenium,
CriterionPacksTestSelenium,
AdminCriterionsTestSelenium)

param = (args.host, args.login, args.password, args.report, args.report_doc, args.pres)
for test in tests:
suite.addTest(BasicSeleniumTest.parametrize(test, param=param))

returncode = not unittest.TextTestRunner(verbosity=2).run(suite).wasSuccessful()

BasicSeleniumTest.close_driver()
sys.exit(returncode)

if __name__ == '__main__':
main()
import os
import unittest
import sys
import argparse
from basic_selenium_test import BasicSeleniumTest
from test_statistic import StatisticTestSelenium
from test_authorization import AuthTestSelenium
from test_single_card_check import SingleCheckTestSelenium
from test_version import VersionTestSelenium
from test_file_load import FileLoadTestSelenium
from test_criterion_packs_page import CriterionPacksTestSelenium
from test_admin_criterions_page import AdminCriterionsTestSelenium

def parse_arguments():
parser = argparse.ArgumentParser(description='Run Selenium tests with specified data')
parser.add_argument('--host', type=str, default='http://127.0.0.1:8080', help='Host address for testing')
parser.add_argument('--login', type=str, required=True, help='insert Username')
parser.add_argument('--password', type=str, required=True, help='insert Password')
script_dir = os.path.dirname(os.path.abspath(__file__))
parser.add_argument('--pres', type=str, default=os.path.join(script_dir, 'tests_data/example_of_pres.pptx'), help='your path to press for testing')
parser.add_argument('--report', type=str, default=os.path.join(script_dir, 'tests_data/example_of_report.docx'), help='your path to report in .docx')
parser.add_argument('--report_doc', type=str, default=os.path.join(script_dir, 'tests_data/example_of_report.doc'), help='your path to report in .doc')
# A call to the Latex document parser will be added here

return parser.parse_args()

def main():
args = parse_arguments()

suite = unittest.TestSuite()
tests = (AuthTestSelenium,
StatisticTestSelenium,
FileLoadTestSelenium,
SingleCheckTestSelenium,
VersionTestSelenium,
CriterionPacksTestSelenium,
AdminCriterionsTestSelenium)

param = (args.host, args.login, args.password, args.report, args.report_doc, args.pres) # Here is the tex argument of the file
for test in tests:
suite.addTest(BasicSeleniumTest.parametrize(test, param=param))

returncode = not unittest.TextTestRunner(verbosity=2).run(suite).wasSuccessful()

BasicSeleniumTest.close_driver()
sys.exit(returncode)

if __name__ == '__main__':
main()
128 changes: 66 additions & 62 deletions tests/test_file_load.py
Original file line number Diff line number Diff line change
@@ -1,62 +1,66 @@
import time
from basic_selenium_test import BasicSeleniumTest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class FileLoadTestSelenium(BasicSeleniumTest):

def upload_file(self, report_ext):
report = report_ext
form_for_load = self.get_driver().find_element(By.CSS_SELECTOR, 'input[type=file]')
form_for_load.send_keys(report)
load_button = self.get_driver().find_element(By.XPATH, '//*[@id="upload_upload_button"]')
load_button.click()
obj = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, '/html/body/div/div[2]/h4/i')))
if obj.text.startswith('Производится проверка файла'):
start_time = time.time()
max_time = 240
while (time.time() - start_time) < max_time:
time.sleep(10)
self.get_driver().refresh()
try:
obj = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'results_table')))
if obj is not None:
self.assertNotEquals(obj, None)
return
except:
continue
self.fail('element is not found')
else:
self.fail("file didn't upload")


def check_pack(self):
self.authorization()
URL = self.get_url('/upload/')
self.get_driver().get(URL)
self.get_driver().implicitly_wait(30)
# obj = self.get_driver().find_element(By.XPATH, "/html/body/div/div[2]/div/p/b")
obj = self.get_driver().find_element(By.ID, "criteria_pack_name")
return obj.text

def test_report_load_docx(self):
obj = self.check_pack()
if obj == 'BaseReportCriterionPack':
self.upload_file(self.param[3])
else:
self.skipTest("Current criteria pack is not for report")

def test_report_load_doc(self):
obj = self.check_pack()
if obj == 'BaseReportCriterionPack':
self.upload_file(self.param[4])
else:
self.skipTest("Current criteria pack is not for report")

def test_report_load_pres(self):
obj = self.check_pack()
if obj == 'BasePresentationCriterionPack':
self.upload_file(self.param[5])
else:
self.skipTest("Current criteria pack is not for pres")
import time
from basic_selenium_test import BasicSeleniumTest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class FileLoadTestSelenium(BasicSeleniumTest):

def upload_file(self, report_ext):
report = report_ext
form_for_load = self.get_driver().find_element(By.CSS_SELECTOR, 'input[type=file]')
form_for_load.send_keys(report)
load_button = self.get_driver().find_element(By.XPATH, '//*[@id="upload_upload_button"]')
load_button.click()
obj = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, '/html/body/div/div[2]/h4/i')))
if obj.text.startswith('Производится проверка файла'):
start_time = time.time()
max_time = 240
while (time.time() - start_time) < max_time:
time.sleep(10)
self.get_driver().refresh()
try:
obj = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'results_table')))
if obj is not None:
self.assertNotEquals(obj, None)
return
except:
continue
self.fail('element is not found')
else:
self.fail("file didn't upload")


def check_pack(self):
self.authorization()
URL = self.get_url('/upload/')
self.get_driver().get(URL)
self.get_driver().implicitly_wait(30)
# obj = self.get_driver().find_element(By.XPATH, "/html/body/div/div[2]/div/p/b")
obj = self.get_driver().find_element(By.ID, "criteria_pack_name")
return obj.text

def test_report_load_docx(self):
obj = self.check_pack()
if obj == 'BaseReportCriterionPack':
self.upload_file(self.param[3])
else:
self.skipTest("Current criteria pack is not for report")

def test_report_load_doc(self):
obj = self.check_pack()
if obj == 'BaseReportCriterionPack':
self.upload_file(self.param[4])
else:
self.skipTest("Current criteria pack is not for report")

def test_report_load_pres(self):
obj = self.check_pack()
if obj == 'BasePresentationCriterionPack':
self.upload_file(self.param[5])
else:
self.skipTest("Current criteria pack is not for pres")

def test_report_load_tex(self):
'''Function to check if tex files are uploaded correctly'''
pass

0 comments on commit e104a52

Please sign in to comment.