Size: a a a

2020 April 30

E

Eugene in atinfo chat
всем привет, вопрос к знатокам pytest.
использую для автоматизации UI тестов, использую PageObject.
Есть тесты где нужно прыгать между страницами. В сети есть куча примеров использования pytest/PageObject.
Но все они показывают как через фикстуру в тест передать драйвер, а в тесте уже вызывается page и с ней работают.
Либо, page вызывают в фикстуре и передают в тест. Но все это речь об одной page.
А если мне в одном тесте надо перейти между несколькими страницами, то этот вариант не подходит, так как будут доступны только методы одной page.
Вариант с инициализацией нужных pages в теле теста как то не очень смотрится.

может кто сталкивался, какие посоветуете best-practice?
источник

MA

Maksim Andryushchenk... in atinfo chat
> Вариант с инициализацией нужных pages в теле теста как то не очень смотрится.
Именно так учат делать практически все гайды по пейдж обжекту
Ничего странного или плохого в этом нет, верните фикстуру драйвера в тест и инициализируйте страницы с помощью нее
источник

MA

Maksim Andryushchenk... in atinfo chat
Eugene
всем привет, вопрос к знатокам pytest.
использую для автоматизации UI тестов, использую PageObject.
Есть тесты где нужно прыгать между страницами. В сети есть куча примеров использования pytest/PageObject.
Но все они показывают как через фикстуру в тест передать драйвер, а в тесте уже вызывается page и с ней работают.
Либо, page вызывают в фикстуре и передают в тест. Но все это речь об одной page.
А если мне в одном тесте надо перейти между несколькими страницами, то этот вариант не подходит, так как будут доступны только методы одной page.
Вариант с инициализацией нужных pages в теле теста как то не очень смотрится.

может кто сталкивался, какие посоветуете best-practice?
А не могли бы вы написать мета тест аля "как мне красиво"? Хоть посмотрим чего вы добиваетесь
источник

R(

Roman (rpwheeler) in atinfo chat
Если немножко извратиться, можно написать класс который будет "кладовщиком по пейджам".

Методу класса можно отправить список строк соответствующий пейджам.

Внутри класс проходится по словарю уже инициализированных пейджей. Если все пейджи из списка инициализированы, он пакует их в dictionary "page_id_string : page" и возвращает, а в тесте к этому dictionary можно обращаться как page_dict['key'] или разобрать его на объекты-пейджи.

Если какая-то не находится в словаре уже инициализированных, она инициализируется и добавляется в пул и результат.
_

Но по объему кода вряд ли получится особая экономия, "lazy" инициализация пейджей по месту это ок (как уже сказано),
плюс усложнение не особо согласуется с  
"Simple is better than complex.
Explicit is better than implicit."
источник

E

Eugene in atinfo chat
Maksim Andryushchenkov
> Вариант с инициализацией нужных pages в теле теста как то не очень смотрится.
Именно так учат делать практически все гайды по пейдж обжекту
Ничего странного или плохого в этом нет, верните фикстуру драйвера в тест и инициализируйте страницы с помощью нее
если это норм, то я ничего против не имею. хочется как лучше)
источник

E

Eugene in atinfo chat
Maksim Andryushchenkov
А не могли бы вы написать мета тест аля "как мне красиво"? Хоть посмотрим чего вы добиваетесь
я просто всегда приходил на проект все было готово. а тут так получилось, я что я один автоматизатор и ничего для этого нет)

до это несколько лет назад был на проекте где использовался unittest.TestCase.
и там было реализовано так, что в сетап классе ты инишь некую назовем её 'BestPage' педжу.
и уже в тестах вызываешь, что-типа:
self.best_page.login_page.do_login()
self.best_page.mail_box_page.click_new_email()
и так далее
источник

MA

Maksim Andryushchenk... in atinfo chat
Eugene
если это норм, то я ничего против не имею. хочется как лучше)
по крайней мере вас поймут 90% автоматизаторов, которые будут читать ваш код, это важно
источник

E

Eugene in atinfo chat
Roman (rpwheeler)
Если немножко извратиться, можно написать класс который будет "кладовщиком по пейджам".

Методу класса можно отправить список строк соответствующий пейджам.

Внутри класс проходится по словарю уже инициализированных пейджей. Если все пейджи из списка инициализированы, он пакует их в dictionary "page_id_string : page" и возвращает, а в тесте к этому dictionary можно обращаться как page_dict['key'] или разобрать его на объекты-пейджи.

Если какая-то не находится в словаре уже инициализированных, она инициализируется и добавляется в пул и результат.
_

Но по объему кода вряд ли получится особая экономия, "lazy" инициализация пейджей по месту это ок (как уже сказано),
плюс усложнение не особо согласуется с  
"Simple is better than complex.
Explicit is better than implicit."
вот это ближе всего. просто хотелось узнать мнение людей которые уже не первый год в этом варятся.
источник

EK

Elbrus K2 in atinfo chat
А кто с Jenkins разбирался, есть возможность запустить тесты по одному в рамках джобы или все вместе сразу скопом, но как запустить допустим 2,3,4,5 тестов выборочно одновременно?
источник

Э

Эдгар in atinfo chat
напиши скрипт на груви
источник

E

Eugene in atinfo chat
Maksim Andryushchenkov
по крайней мере вас поймут 90% автоматизаторов, которые будут читать ваш код, это важно
спасибо за советы!
источник

Э

Эдгар in atinfo chat
Elbrus K2
А кто с Jenkins разбирался, есть возможность запустить тесты по одному в рамках джобы или все вместе сразу скопом, но как запустить допустим 2,3,4,5 тестов выборочно одновременно?
active choices reactive parameter 2 создай
источник

Э

Эдгар in atinfo chat
источник

Э

Эдгар in atinfo chat
первый
источник

EK

Elbrus K2 in atinfo chat
Эдгар
первый
понял, спасибо! хоть буду знать куда копать
источник

Э

Эдгар in atinfo chat
источник

MA

Maksim Andryushchenk... in atinfo chat
Eugene
вот это ближе всего. просто хотелось узнать мнение людей которые уже не первый год в этом варятся.
вам по сути в тесте нужна страница, ее методы, и данные из методов. как ни оборачивай получится +- тоже самое. но если гайды говорят что инит страницы в тесте - это ок, то делайте как в гайдах
источник

E

Eugene in atinfo chat
Maksim Andryushchenkov
вам по сути в тесте нужна страница, ее методы, и данные из методов. как ни оборачивай получится +- тоже самое. но если гайды говорят что инит страницы в тесте - это ок, то делайте как в гайдах
понял. вы меня успокоили.
источник

A

AnrKvs in atinfo chat
А как можно запускать тесты в Дженкинс не через testng.xml.? Я этот файл вынес в корень на гит хабе. То есть как указать дженкинсу на тот или иной тест. И можно ли например запустить один тест, потом пауза, потом снова нажать билд и запустить второй тест?
источник

ŚW

Świętomierz Wisniews... in atinfo chat
AnrKvs
А как можно запускать тесты в Дженкинс не через testng.xml.? Я этот файл вынес в корень на гит хабе. То есть как указать дженкинсу на тот или иной тест. И можно ли например запустить один тест, потом пауза, потом снова нажать билд и запустить второй тест?
Jenkinsfile? Там можно указывать достаточно много условий. Или testing.xml принципиально?
источник