Второй вопрос, когда использую команду assert в классе, тест постоянно падает, потому что не находит элемент указанный в mistake_text = self.driver.find_element_by_xpath("//*[@id=‘react-select-3–value’]/div[1]").text
Падает только если использую его здесь в class, если без него то все находит и нормально.
Сори, за примитивные вопросы, но уже задолбался с этими мелкими проблемами которые постоянно выплывают и перебивают работу, когда кажеться что все ок и должно работать.
А насчет “все время падает” нужен лог с ошибкой (stacktrace), чтобы выяснить причину. Скорее всего, элемент не успевает отобразиться на экране.
Пришло время для знакомства с явными ожиданиями элементов на странице по разным условиям: http://selenium-python.readthedocs.io/waits.html
да, я уже прочитал здесь про implicit and explicit wait
Но тут я выставлял time.sleep(7) оно всеравно не находило, хотя без класса находит.
Знаю что time.sleep это низы ожидания, но чисто для сравнения результат же показал, что не там находит а там нет…
Удалил, при запуске он все равно появляеться там же. Так и в поп ап меню не пропадает. Буду перекидать pycharm и пайтон на компе, возможно эти все косяки первой установки которая делалась не последовательно…
Вот уже все переустановил, все классно работает, но отдельный тест из class не запускается, при запуске в конфигурациях в python создается файл под названием все теста и в логе просто появляется текст
PyCharm/Preferences/Tools/Python Integrated Tools
Тут нужно выставить Default test runner: py.test
Затем удалить автоматически созданные конфигурации (как было выше test_my_test).
Затем кликнуть ПКМ по названию тестового метода. В открывшемся меню выбираем: Run py.test in…
Default runner у меня pytest уже был выбран, осьальное сделал, даже создал новый файл. Все равно при запуске создается авто конфигурация в python, которая запускается (скриншот1)
Вот создал новый файл, обновил в найстройках pytest, setuptools, selenium до последней версии.
Все равно, когда кликаю ПКМ в RUN имя файла, который при запуске сам сгенерируется в конфигурациях.
ну что за бред?
By default, pytest will consider any file matching with test_*.py and *_test.py globs as a test module.
By default, pytest will consider any class prefixed with Test as a test collection.
By default, pytest will consider any function prefixed with test as a test.
Получается первое правило не проходит.
Нужно поправить название файла trial_file.py → test_trial_file.py
Попробуйте сделать новый проект с нуля с двумя простыми тестами (не селениум, просто assert 2+2 == 4) и посмотрите заработает ли запуск отдельного теста.
Странно только что сьютом всё работает… Может в conftest.py есть переопределение типа python_files = Test* ?
Тогда, наверное, пайчарм не детектит это переопределение, поэтому и не даёт запускать по одному тесту (это просто догадка, нужно проверить)
Сделал все так, как вы сказали, все ок, и класс запускается и функции по отдельности тоже, прекрасно. В конфигурациях создались pytest для все класса и для функции in, for
Скриншоты 1,2
Но, в этом же проекте создал новый файл с параметрами которые хочу вставить и на тебе, снова эта проблема, посмотрите пожалуйтса, может я просто что то не правильно написал/сделал (screen 3)
Но, в этом же проекте создал новый файл с параметрами которые хочу вставить и на тебе, снова эта проблема, посмотрите пожалуйтса, может я просто что то не правильно написал/сделал
Это уже здорово. Пробуйте постепенно добавлять функции (чтобы получить желаемое). И смотрите после добавления чего всё перестаёт работать.
Сделал у себя тестовый проект с вашим кодом из комментария выше. Закинул его на гитхаб: https://github.com/skalozubov/pytest-demo/tree/master Попробуйте скачать и открыть у себя. В readme необходимые степы. Сами тесты, конечно, не проходят, но детектятся pytest-ом.
У меня PyCharm CE 2016.2.3
Python 3.6
Если снова что-то не работает - давайте код. А то со скриншотами не очень удобно работать
Но только добавляю после строки класс вот эти функции(любую из них), например:
def setup_method(self, method):
def teardown_method(self, method):
def init(self):
Сразу после нажатия ПКМ в Run показано название файла заместь функции или класса по типу py.test for blabla bla
Что интересно, эта ситуация на робочем маке и на моем личном маке, странно, в соседа по столу тоже всякие приколы постоянно но такого небыло и он уже успешно вынес класс в отдельный файл и оптимизировал тесты как я хочу сделать
скачал, запустил
example test файл - все работает отлично
demo test файл - проблема все та же, правда тут еще pytest в файле requiremetns is not satisfied