예제 #1
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    browser = None
    if browser_name == "chrome":
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome()
        browser.set_window_size(1366, 800)
    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox()
        browser.set_window_size(1366, 800)
    elif browser_name == "Ie":
        print("\nstart Ie browser for test..")
        browser = webdriver.Ie()
        browser.set_window_size(1366, 800)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    request.addfinalizer(browser.quit)
    print("\nquit browser..")
    return browser
def browser(request):
    browser_name = request.config.getoption('browser_name')
    user_language = request.config.getoption('language')
    browser = None
    if browser_name == 'chrome':
        print('\nstart chrome browser for test..')
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == 'firefox':
        print('\nstart firefox browser for test..')
        fp = webdriver.FirefoxProfile()
        fp.set_preference('intl.accept_languages', user_language)
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError('--browser_name should be chrome or firefox')
    yield browser
    print('\nquit browser..')
    browser.quit()
예제 #3
0
    def prepare(self, home, config):
        root = home / self.name
        root.mkdir(exist_ok=True)

        mock_info = self._parse_mock_info(
            self.mock_data_fn(self.info, root, config))

        available_file_names = {path.name for path in root.glob("*")}
        required_file_names = {
            resource.file_name
            for resource in self.dataset.resources(config)
        }
        missing_file_names = required_file_names - available_file_names
        if missing_file_names:
            raise pytest.UsageError(
                f"Dataset '{self.name}' requires the files {sequence_to_str(sorted(missing_file_names))} "
                f"for {config}, but they were not created by the mock data function."
            )

        return mock_info
def browser(request):
    browser_name = request.config.getoption("browser_name")
    user_language = request.config.getoption("language")
    if browser_name == "chrome":
        options = Options()
        options.add_experimental_option(
            "prefs", {"intl.accept_languages": user_language})
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", user_language)
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("Браузер <browser_name> пока не реализован")
    yield browser
    time.sleep(10)
    print("\nquit browser..")
    browser.quit()
예제 #5
0
def driver(request):
    user_language = request.config.getoption("language")
    browser_name = request.config.getoption("browser_name")
    if browser_name == "chrome":
        print("\nstart chrome browser for test..")
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        #driver = webdriver.Chrome('/usr/local/bin/chromedriver')
        driver = webdriver.Chrome(ChromeDriverManager().install())
    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        #driver = webdriver.Firefox()
        driver = webdriver.Firefox(
            executable_path=GeckoDriverManager().install())
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield driver
    print("\nquit browser..")
    driver.quit()
예제 #6
0
def browser(request):
    browser_name = request.config.getoption('browser_name')
    user_language = request.config.getoption('language')
    if browser_name == 'chrome':
        print("\nstart chrome browser")
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        print("\nstart firefox browser")
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", user_language)
        browser = webdriver.Firefox(executable_path="D:\\geckodriver.exe",
                                    firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #7
0
def browser(request):
    browser_name = request.config.getoption("browser")
    user_language = request.config.getoption("language")
    options = Options()
    options.add_experimental_option('prefs',
                                    {'intl.accept_languages': user_language})
    browser = None
    if browser_name == "Chrome":
        print("\nstart Chrome browser for test..")
        browser = webdriver.Chrome(options=options)
        browser.implicitly_wait(10)
    elif browser_name == "Firefox":
        print("\nstart Firefox browser for test..")
        browser = webdriver.Firefox(options=options)
        browser.implicitly_wait(10)
    else:
        raise pytest.UsageError("--browser should be Chrome or Firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #8
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    user_language = request.config.getoption("language")
    fp = webdriver.FirefoxProfile()
    fp.set_preference("intl.accept_languages", user_language)

    browser = None
    if browser_name == "chrome":
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome()

    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox(
            executable_path='C:/TEMP/DYAKOVA/Page-Object/geckodriver.exe')
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #9
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    language = request.config.getoption("language")

    if browser_name not in BROWSERS_LIST:
        raise pytest.UsageError("--browser_name should be chrome or firefox")

    if browser_name == "chrome":
        options = Options()
        options.add_experimental_option('prefs',
                                        {'intl.accept_languages': language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        profile = webdriver.FirefoxProfile()
        profile.set_preference("intl.accept_languages", language)
        browser = webdriver.Firefox(firefox_profile=profile)

    browser.implicitly_wait(10)
    yield browser
    browser.quit()
예제 #10
0
 def work(self) -> None:
     if self.project_id:
         val = {
             "project_id": self.project_id,
             "name": self._format_string(self.testrun_name),
             "description": self._format_string(self.testrun_description),
         }
         if self.suite_id:
             val["suite_id"] = self.suite_id
         if self.milestone_id:
             val["milestone_id"] = self.milestone_id
         if self.test_run:
             val["case_ids"] = self.get_case_ids(self.test_run)
             val["include_all"] = False
         else:
             val["include_all"] = True
         response = self.api.runs.add_run(**val)
         self.test_run = response["id"]
     elif not self.test_run:
         raise pytest.UsageError("No args project_id or test_run")
예제 #11
0
def browser(request):
    browser_name = request.config.getoption("browser_name").lower()
    user_language = request.config.getoption("language").lower()

    if browser_name == "chrome":
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        firefox_profile = webdriver.FirefoxProfile()
        firefox_profile.set_preference("intl.accept_languages", user_language)
        browser = webdriver.Firefox(firefox_profile=firefox_profile)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")

    print(f"\nStart {browser_name.capitalize()} browser for test...")
    yield browser
    print("\nQuit browser...")
    browser.quit()
예제 #12
0
    def pytest_runtestloop(self, session):
        yield

        compat_session = compat.SessionWrapper(session)

        self.failed = bool(compat_session.testsfailed)
        if self.cov_controller is not None:
            self.cov_controller.finish()

        if not self._is_slave(session) and self._should_report():
            try:
                self.cov_total = self.cov_controller.summary(self.cov_report)
            except CoverageException as exc:
                raise pytest.UsageError(
                    'Failed to generate report: %s\n' % exc
                )
            assert self.cov_total is not None, 'Test coverage should never be `None`'
            if self._failed_cov_total():
                # make sure we get the EXIT_TESTSFAILED exit code
                compat_session.testsfailed += 1
예제 #13
0
def browser(request):
    language = request.config.getoption("language")
    options = Options()
    options.add_experimental_option('prefs',
                                    {'intl.accept_languages': language})
    browser_name = request.config.getoption("browser")
    browser = None
    if browser_name == "Chrome":
        browser = webdriver.Chrome(options=options)
    elif browser_name == "Firefox":
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", language)
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser name should be Chrome or Firefox")
    browser.maximize_window()
    browser.implicitly_wait(5)
    yield browser
    # browser.save_screenshot(f'Screenshots/Screenshot-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.png')
    browser.quit()
예제 #14
0
def salt_factories(tempdir, event_listener, stats_processes,
                   salt_factories_config, _salt_factories_config):
    if not isinstance(salt_factories_config, dict):
        raise pytest.UsageError(
            "The 'salt_factories_config' fixture MUST return a dictionary")
    if salt_factories_config:
        log.debug("Salt Factories Manager Default Config:\n%s",
                  pprint.pformat(_salt_factories_config))
        log.debug("Salt Factories Manager User Config:\n%s",
                  pprint.pformat(salt_factories_config))
    factories_config = _salt_factories_config.copy()
    factories_config.update(salt_factories_config)
    log.debug(
        "Instantiating the Salt Factories Manager with the following keyword arguments:\n%s",
        pprint.pformat(factories_config),
    )
    return FactoriesManager(root_dir=tempdir,
                            stats_processes=stats_processes,
                            event_listener=event_listener,
                            **factories_config)
예제 #15
0
def browser(request):
    language = request.config.getoption("language")

    options = Options()
    options.add_experimental_option('prefs',
                                    {'intl.accept_languages': language})

    browser_name = request.config.getoption("browser_name")
    browser = None
    if browser_name == "chrome":
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox(options=options)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #16
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    user_language = request.config.getoption("language")
    browser = None
    if browser_name == "chrome":
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_language", user_language)
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #17
0
def browser(request):
    language = request.config.getoption('language')
    browser_name = request.config.getoption('browser_name')
    if browser_name == 'chrome':
        options = Options()
        print('\nStart CHROME browser for test..')
        options.add_experimental_option('prefs',
                                        {'intl.accept_languages': language})

        browser = webdriver.Chrome(options=options)
    elif browser_name == 'firefox':
        fp = webdriver.FirefoxProfile()
        fp.set_preference('intl.accept_languages', language)
        print("\nStart FIREFOX browser for test..")
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")

    yield browser
    print("\nQuit browser..")
예제 #18
0
def watch_dir(
    rel_path,
    root=PROJECT_ROOT,
    error_on_diff=False,
    remove_diff=None,
    honor_gitignore=True,
):
    abs_path = _rel_to_abs_path(rel_path, root)

    if remove_diff is None:
        remove_diff = not error_on_diff

    old_dirs, old_files = _find_dirs_and_files(abs_path,
                                               honor_gitignore=honor_gitignore)
    try:
        yield
    finally:
        new_dirs, new_files = _find_dirs_and_files(
            abs_path, honor_gitignore=honor_gitignore)

        diff_dirs = new_dirs - old_dirs
        diff_files = new_files - old_files

        if not (diff_dirs or diff_files):
            return

        if remove_diff:
            for dir in diff_dirs:
                dir_util.remove_tree(dir)

            for file in diff_files:
                try:
                    os.remove(file)
                except FileNotFoundError:
                    # file might have been already removed with dir removal
                    pass

        if error_on_diff:
            msg = "The following directories and files were added:\n\n" "\n".join(
                itertools.chain(diff_dirs, diff_files))
            raise pytest.UsageError(msg)
예제 #19
0
    def pytest_sessionstart(self, session):
        """initialization and sanity checking"""
        if session.config.pluginmanager.hasplugin('dsession'):
            msg = 'Plugin incremental is not compatible with plugin xdist.'
            raise pytest.UsageError(msg)

        opts = session.config.option
        self.list_outdated = opts.list_outdated
        self.list_dependencies = opts.list_dependencies
        self.graph_dependencies = opts.graph_dependencies
        self.run = not any((self.list_outdated, self.list_dependencies,
                            self.graph_dependencies))

        # pkg_folders to watch can never be empty, if not specified use CWD
        pkg_folders = [
            os.path.abspath(p) for p in session.config.option.watch_path
        ]
        if not pkg_folders:
            pkg_folders = [os.getcwd()]

        self.control = IncrementalControl(pkg_folders)
예제 #20
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    user_language = request.config.getoption("language")
    if browser_name == "chrome":
        options = Options()
        # скрывать браузер при запуске тестов - 2 след строки
        # options.add_argument('headless')
        # options.add_argument('window-size=1920x935')
        options.add_experimental_option('prefs', {'intl.accept_languages': user_language})
        print("\nstart chrome browser for test..")
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", user_language)
        print("\nstart firefox browser for test..")
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #21
0
def get_log_level_for_setting(config: Config,
                              *setting_names: str) -> Optional[int]:
    for setting_name in setting_names:
        log_level = config.getoption(setting_name)
        if log_level is None:
            log_level = config.getini(setting_name)
        if log_level:
            break
    else:
        return None

    if isinstance(log_level, str):
        log_level = log_level.upper()
    try:
        return int(getattr(logging, log_level, log_level))
    except ValueError:
        # Python logging does not recognise this as a logging level
        raise pytest.UsageError(
            "'{}' is not recognized as a logging level name for "
            "'{}'. Please consider passing the "
            "logging level num instead.".format(log_level, setting_name))
예제 #22
0
def browser(request):
    browser_name = request.config.getoption("browser_name")
    browser = None
    user_language = request.config.getoption("lang")

    if browser_name == 'chrome':
        options = Options()
        options.add_experimental_option('prefs', {'intl.accept_languages': user_language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == 'firefox':
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", user_language)
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("ожидается параметр --browser chrome или firefox")


    browser.implicitly_wait(3)  # ожидание 3 секунды, для случаев задержек в работе сайта
    yield browser
    time.sleep(3)
    browser.quit()
예제 #23
0
def browser(request):
    language = request.config.getoption("language")

    if language not in ["ru", "en-gb", "es", "fr"]:
        raise pytest.UsageError("test run should contain language for test")

    options = Options()
    options.add_experimental_option('prefs',
                                    {'intl.accept_languages': language})

    print("\nopen browser for test..")

    result = webdriver.Chrome(options=options)
    result.maximize_window()
    result.implicitly_wait(5)
    result.user_language = language

    yield result

    print("\nquit browser..")
    result.quit()
예제 #24
0
    def pytest_generate_tests(metafunc):
        tests_with_artifacts = metafunc.config.getoption('artifacts')
        if len(tests_with_artifacts) > 1:
            raise pytest.UsageError(
                '--export-artifacts-from must be used only once. It should contain a CSV string of test names that can manage artifacts.'
            )

        if len(tests_with_artifacts) == 1:
            tests_with_artifacts = tests_with_artifacts[0].split(',')
            test_function_name = metafunc.function.__name__
            if "artifact" in metafunc.fixturenames:
                if test_function_name in tests_with_artifacts:
                    metafunc.parametrize("artifact", [
                        '/tmp/{function}.artifact'.format(
                            function=test_function_name)
                    ])
                else:
                    metafunc.parametrize("artifact", [None])
        else:
            if "artifact" in metafunc.fixturenames:
                metafunc.parametrize("artifact", [None])
예제 #25
0
def browser(request):
    user_language = request.config.getoption("language")
    browser_name = request.config.getoption("browser_name")

    if browser_name == "chrome":
        options = Options()
        #options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': user_language})
        print(f"\nstart chrome browser with {user_language} language")
        browser = webdriver.Chrome(options=options)
        #browser = webdriver.Chrome(options=options, executable_path="C:/chromedriver/chromedriver.exe", )
    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", user_language)
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    browser.quit()
예제 #26
0
def browser(browser_name, language):
    browser = None
    if browser_name == "chrome":
        options = Options()
        options.add_experimental_option('prefs',
                                        {'intl.accept_languages': language})
        browser = webdriver.Chrome(options=options)
        browser.maximize_window()
    elif browser_name == "firefox":
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", language)
        browser = webdriver.Firefox(firefox_profile=fp)
        browser.maximize_window()
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    # получаем переменную с текущей датой и временем в формате ГГГГ-ММ-ДД_ЧЧ-ММ-СС
    now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    # делаем скриншот с помощью команды Selenium'а и сохраняем его с именем "screenshot-ГГГГ-ММ-ДД_ЧЧ-ММ-СС":
    # browser.save_screenshot('screenshot-%s.png' % now)
    browser.quit()
예제 #27
0
def browser(request):
    browser_name = request.config.getoption('browser_name')
    user_language = request.config.getoption('language')
    browser = None
    # прописываем возможность выбора языка для браузеров Chrome и Firefox
    # Chrome
    options = Options()
    options.add_experimental_option('prefs',
                                    {'intl.accept_languages': user_language})
    # Firefox
    fp = webdriver.FirefoxProfile()
    fp.set_preference("intl.accept_languages", user_language)
    # Указываем условия запуска браузеров
    if browser_name == "chrome":
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    browser.quit()
예제 #28
0
def browser(request):
    browser_name = request.config.getoption('browser_name')
    browser_language = request.config.getoption('language')

    if browser_name == 'chrome':
        options = Options()
        options.add_experimental_option(
            'prefs', {'intl.accept_languages': browser_language})
        browser = webdriver.Chrome(options=options)

    elif browser_name == 'firefox':
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", browser_language)
        browser = webdriver.Firefox(firefox_profile=fp)

    else:
        raise pytest.UsageError('--browser_name should be chrome or firefox')

    yield browser

    browser.quit()
예제 #29
0
def browser(request):
    # создаем функцию для передачи различных языков интерфейса через командную строку,
    # а также для возможности открывать тесты в разных браузерах
    # получаем из командной строки параметры для запуска browser_name и language
    browser_name = request.config.getoption("browser_name")
    language = request.config.getoption("language")
    if browser_name == "chrome" or None:
        print("\nstart chrome browser for test..")
        options = Options()
        options.add_experimental_option('prefs', {'intl.accept_languages': language})
        browser = webdriver.Chrome(options=options)
    elif browser_name == "firefox":
        print("\nstart firefox browser for test..")
        fp = webdriver.FirefoxProfile()
        fp.set_preference("intl.accept_languages", language)
        browser = webdriver.Firefox(firefox_profile=fp)
    else:
        raise pytest.UsageError("--browser_name should be chrome or firefox")
    yield browser
    print("\nquit browser..")
    browser.quit()
예제 #30
0
def selenium(request):
    """Returns a WebDriver instance based on options and capabilities"""
    driver_type = request.config.getoption('driver')
    if driver_type is None:
        raise pytest.UsageError('--driver must be specified')

    driver_fixture = '{0}_driver'.format(driver_type.lower())
    driver = request.getfuncargvalue(driver_fixture)

    event_listener = request.config.getoption('event_listener')
    if event_listener is not None:
        # Import the specified event listener and wrap the driver instance
        mod_name, class_name = event_listener.rsplit('.', 1)
        mod = __import__(mod_name, fromlist=[class_name])
        event_listener = getattr(mod, class_name)
        if not isinstance(driver, EventFiringWebDriver):
            driver = EventFiringWebDriver(driver, event_listener())

    request.node._driver = driver
    request.addfinalizer(driver.quit)
    return driver