Я сравнительно новичок в python.
У меня есть текущий набор тестов, как показано ниже:
import logging
import ast
import unittest
import sys
import pytest
import traceback
import allure
import softest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from webdriver_manager.chrome import ChromeDriverManager
logging.basicConfig(level = logging.INFO)
@pytest.mark.abc_test()
class test_abc_Chrome(softest.TestCase):
@classmethod
def setUpClass(self):
self.driver=webdriver.Chrome(ChromeDriverManager().install())
self.driver.maximize_window()
self.driver.get('https://example.com')
sleep(7)
@allure.feature("Verify_Valid_Phone_Number")
@allure.description("enter valid phone number")
def test_001_Verify_Valid_Phone_Number(self):
logging.info("enter valid phone number")
with allure.step("enter valid phone number"):
#This is PreWait
sleep(1)
self.driver.find_element_by_id("locator").send_keys("1234567890")
#This is PostWait
sleep(1)
Каждый шаг используется в качестве теста, и каждый из них зависит от предыдущий шаг (ы).
Теперь мне нужно запустить его параллельно, используя pytest-xdist и сетку селена, основанную на Selenoid (сейчас это автономная настройка селеноида, позже перейдет к docker на основе selenoid setup).
Я искал в Интернете, как этого добиться, но не смог найти ни одного примера pytest-xdist с сеткой селена.
Также, когда я проверил, как его запустить параллельно с использованием pytest-xdist в большинстве примеров параллельно выполнялись test1 и test2; в то время как в моей ситуации мне приходится запускать его как «test 1 ... test n» в нескольких браузерах параллельно, поскольку они не являются независимыми.
Я понял, что было бы хорошо иметь независимые тесты, но прямо сейчас у меня нет времени на рефакторинг, и я должен достичь этого как можно скорее.
Пожалуйста, дайте мне знать, возможно ли это достичь или нет, и если это возможно, то как я могу это сделать ?