Skip to content

Commit ef9eea4

Browse files
committed
Новая структура селениум тестов
1 parent 373f8ea commit ef9eea4

File tree

3 files changed

+50
-48
lines changed

3 files changed

+50
-48
lines changed

tests/selenium/conftest.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import pytest
2+
3+
from selenium_session import SeleniumSession, ROOT_DIR, chrome_options
4+
from app.config import Config
5+
6+
CONFIG_PATH = f'{ROOT_DIR}/app_conf/testing.ini'
7+
AUDIO_FILE = f"{ROOT_DIR}/simple_phrases_russian.wav"
8+
9+
@pytest.fixture(scope="class")
10+
def selenium_session(request):
11+
Config.init_config(CONFIG_PATH)
12+
session = SeleniumSession(Config.c, chrome_options(AUDIO_FILE))
13+
14+
request.cls.selenium_session = session
15+
16+
yield session
17+
18+
session.end_session()
Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,29 @@
11
import pytest
22
from time import sleep
33

4-
from selenium_session import ROOT_DIR, chrome_options
4+
from selenium_session import ROOT_DIR
55
from training_session import Training
66

7-
from app.config import Config
8-
9-
CONFIG_PATH = f'{ROOT_DIR}/app_conf/testing.ini'
10-
AUDIO_FILE = f"{ROOT_DIR}/simple_phrases_russian.wav"
11-
127
PRESENTATION_FILE = f"{ROOT_DIR}/test_data/test_presentation_file_0.pdf"
138
ESTIMATED_PROCESSING_TIME_IN_SECONDS = 100
149

15-
@pytest.fixture(scope='module')
16-
def training_session():
17-
Config.init_config(CONFIG_PATH)
18-
19-
training_session = Training(Config.c, chrome_options(AUDIO_FILE))
20-
21-
yield training_session
22-
23-
training_session.end_session()
24-
25-
def test_presentation_upload(training_session):
26-
training_session.upload_presentation(PRESENTATION_FILE)
27-
28-
def test_record_preparation(training_session):
29-
training_session.prepare_record()
30-
31-
sleep(5)
32-
33-
def test_button_next(training_session):
34-
training_session.next_slide()
10+
@pytest.mark.usefixtures("selenium_session")
11+
class TestSimpleTraining:
12+
def test_presentation_upload(self):
13+
Training(self.selenium_session).upload_presentation(PRESENTATION_FILE)
3514

36-
sleep(5)
15+
def test_record_preparation(self):
16+
Training(self.selenium_session).prepare_record()
17+
sleep(5)
3718

38-
def test_training_session_end(training_session):
39-
training_session.end_training()
19+
def test_button_next(self):
20+
Training(self.selenium_session).next_slide()
21+
sleep(5)
4022

41-
sleep(5)
23+
def test_training_session_end(self):
24+
Training(self.selenium_session).end_training()
25+
sleep(5)
4226

43-
def test_training_feedback(training_session):
44-
got_feegback = training_session.wait_for_feedback(ESTIMATED_PROCESSING_TIME_IN_SECONDS)
45-
assert got_feegback, f"Проверка тренировки заняла более {ESTIMATED_PROCESSING_TIME_IN_SECONDS} секунд"
27+
def test_training_feedback(self):
28+
got_feedback = Training(self.selenium_session).wait_for_feedback(ESTIMATED_PROCESSING_TIME_IN_SECONDS)
29+
assert got_feedback, f"Проверка тренировки заняла более {ESTIMATED_PROCESSING_TIME_IN_SECONDS} секунд"

tests/selenium/training_session.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
11
from time import sleep
22

3-
from selenium_session import SeleniumSession, HOST
3+
from selenium_session import SeleniumSession
44

55
from selenium.webdriver.common.by import By
66
from selenium.webdriver.support import expected_conditions as EC
77
from selenium.webdriver.support.ui import WebDriverWait
88

99

10-
class Training(SeleniumSession):
11-
def __init__(self, config, chrome_options, requires_init=True):
12-
super().__init__(config, chrome_options, requires_init)
10+
class Training:
11+
def __init__(self, selenium: SeleniumSession):
12+
self.selenium = selenium
1313

1414
def upload_presentation(self, presentation_path):
15-
self.driver.get(f'{self.host}/upload_presentation/')
15+
self.selenium.driver.get(f'{self.selenium.host}/upload_presentation/')
1616

17-
file_input = WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[type=file]")))
17+
file_input = WebDriverWait(self.selenium.driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[type=file]")))
1818
file_input.send_keys(presentation_path)
1919

20-
WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.ID, "button-submit"))).click()
20+
WebDriverWait(self.selenium.driver, 5).until(EC.element_to_be_clickable((By.ID, "button-submit"))).click()
2121

2222
def prepare_record(self):
23-
WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.ID, "record"))).click()
23+
WebDriverWait(self.selenium.driver, 10).until(EC.element_to_be_clickable((By.ID, "record"))).click()
2424

25-
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "model-timer")))
25+
WebDriverWait(self.selenium.driver, 10).until(EC.presence_of_element_located((By.ID, "model-timer")))
2626

27-
WebDriverWait(self.driver, 10).until(EC.invisibility_of_element((By.ID, "model-timer")))
27+
WebDriverWait(self.selenium.driver, 10).until(EC.invisibility_of_element((By.ID, "model-timer")))
2828

2929
def next_slide(self):
30-
WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.ID, "next"))).click()
30+
WebDriverWait(self.selenium.driver, 10).until(EC.element_to_be_clickable((By.ID, "next"))).click()
3131

3232
def end_training(self):
33-
WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.ID, "done"))).click()
33+
WebDriverWait(self.selenium.driver, 5).until(EC.element_to_be_clickable((By.ID, "done"))).click()
3434

35-
WebDriverWait(self.driver, 5).until(lambda d : d.switch_to.alert).accept()
35+
WebDriverWait(self.selenium.driver, 5).until(lambda d : d.switch_to.alert).accept()
3636

3737
def wait_for_feedback(self, seconds):
3838
feedback_flag = False
3939
step_count = 10
4040
step = seconds / step_count
4141

4242
for _ in range(step_count):
43-
self.driver.refresh()
43+
self.selenium.driver.refresh()
4444

45-
feedback_elements = self.driver.find_elements(By.ID, 'feedback')
45+
feedback_elements = self.selenium.driver.find_elements(By.ID, 'feedback')
4646

4747
if feedback_elements and feedback_elements[0].text.startswith('Оценка за тренировку'):
4848
feedback_flag = True

0 commit comments

Comments
 (0)