Не работает вывод print в функции python

Рейтинг: -1Ответов: 1Опубликовано: 07.02.2023

Я занимаюсь автотестами и хочу в функции посмотреть что содержит переменная через принт, выглядит это так

def input(self, browser):
    search_input = self.find_element(Locators_main.LOCATOR_INPUT)
    search_button_search = self.find_element(Locators_main.LOCATOR_BUTTON_SEARCH)
    search_input.clear()
    search_input.send_keys("наушники")
    search_button_search.click()
    time.sleep(5)
    search_products = self.find_elements(Locators_search.LOCATOR_PRODUCTS)
    response = requests.head(browser.current_url)
    url = browser.current_url
    html = requests.get(url)
    stext = browser.execute_script( "return ( window.performance.timing.loadEventEnd - window.performance.timing.navigationStart )")
    print(f'-----------{stext}-------------')
    assert response.status_code == 200, f'The site returned the code - \
                                            {response.status_code, browser.save_screenshot("./screensots/screen1-1.png")} \
                                            Error in url - {url}'
    assert stext < 1, print(f'---------{stext}----------')
    assert len(search_products) == 60, f'Amount of elements - \
                                            {len(search_products, browser.save_screenshot("./screensots/screen2-2.png"))} \
                                            Error in url - {url}'
    assert (f'rel="canonical" href="{url}"' in html.text), f'Error with canonical. Print html ------------ {print (html.text)}'         #Find canonical link
    assert ('поиск по всем интернет-магазинам' in html.text), f'Error with title. Print html ------------ {print (html.text)}'          #Find text from title
    assert ('Ozon, Wildberries, Aliexpress, Яндекс Маркет' in html.text), \
                                            f'Error with description. Print html ------------ {print (html.text)}'                      #Find text from description

Но проблема заключается в том, что если тест проходит успешно, то ни один принт не выполняется(в assert понятно, но я не понимаю почему не выводится в коде) Удачный запуск

И выполняется только если тест провален Неудачный запуск

Функции

def test_open_main_page(browser_for_google_bot):
    main_page = BasePage(browser_for_google_bot)
    browser_for_google_bot.get(main_page.base_url)

def test_input_google(browser_for_google_bot):
    main_page = SearchHelper(browser_for_google_bot)
    main_page.input(browser_for_google_bot)

Заранее благодарю за решение, так же было бы круто, если подсказали более лучшие методы отладки кода!

Ответы

▲ 2Принят

pytest по умолчанию перехватывает вывод программы и отображает информацию, когда тест не проходит. Если вы хотите полностью отключит эту функцию и чтобы весь вывод программы был в консоле, можно добавить флаг -s (эквивалент --capture=no)

Аналогичный вопрос на английском StackOverflow.

Более подробно можно прочитать в документации.