Size: a a a

testing_in_python

2020 October 01

VQ

Vladislav Q in testing_in_python
Всем привет.

Есть тесты, запускаются в хэдлессе в докере. Нужно поставить экстеншен в хроме для прогона. Погуглил, говорят, что для установки экстеншенов и хэдлесса надо ставить xvfb. В докерфайле прописал просто установку буфера (без указания каких-либо параметров), в коде использовал pyvirtualdisplay. Запускаю с pytest-xdist в 4 потока и происходит следующее: первые 4 теста проходят, остальные валятся, т.к. не могут добраться до localstorage в setup_method, и проходит самый последний. Правильно ли я понимаю, что для последующих тестов он просто не может стартануть браузер?

Так устанавливаю буфер

RUN apt-get update -y
RUN apt-get -y install xvfb
RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/*


Часть по display
  
display = Display(visible=0, size=(1920, 1280))
display.start()
источник

EB

Evgenii B in testing_in_python
источник

VQ

Vladislav Q in testing_in_python
я натыкался в процессе гугляжа на эту ссылку, нет вроде образа же или я в глаза долблюсь
источник

EB

Evgenii B in testing_in_python
источник

VQ

Vladislav Q in testing_in_python
я правильно понимаю, что надо через композ поднимать всё это дело? Два контейнера: один будет с его образом, а один уже непосредственно тот, что для моих тестов?
источник

EB

Evgenii B in testing_in_python
не вижу смысла отдельно держать тесты как образ, зачем
источник

EB

Evgenii B in testing_in_python
один образ, можешь описать в докер компоузе. над  ним смаунтить все файлы тестов в папку. в докерфайле соответсвенно будет запуск xvfb
источник

VQ

Vladislav Q in testing_in_python
Evgenii B
один образ, можешь описать в докер компоузе. над  ним смаунтить все файлы тестов в папку. в докерфайле соответсвенно будет запуск xvfb
а, понял. Т.е. я просто буду использовать образ не свой, а  с хаба.
источник

VQ

Vladislav Q in testing_in_python
Попробую, спасибо
источник

BK

Boris Krutskih in testing_in_python
Artur Mustafin
для начала - я бы сделал unit tests, потом behave, то есть acceptance_tests, и этого за глаза хватает для твоей задачи. Более того, я бы напряг менеджеров писать cucumber, свои, пусть пишут кейсы для ролей, и все такое. и вот как раз, в таком случае в behave, ты пишешь 3 функции, которые используются в 100500 тестах, которые, понятное дело, пишут манагеры

When admin is in role Administrators
Then make a call to endpoint DELETE /admins/{id}
And expecting successful request execution (HTTP 200)
...
В кукумбер я лезть не хочу) и просить менеджеров писать тест-кейсы тоже... видел много попыток такое внедрить) но нигде так и не увидел успеха) все в конечном счёте остаются недовольны
источник

S

Sergei in testing_in_python
источник

BK

Boris Krutskih in testing_in_python
Решил остановиться пока что на самых типичных и важных кейсах 😁
посмотрю как пойдёт
источник

ИС

Игорь Середа... in testing_in_python
Boris Krutskih
Решил остановиться пока что на самых типичных и важных кейсах 😁
посмотрю как пойдёт
Каких, например? Можешь рассказать?
источник

BK

Boris Krutskih in testing_in_python
Игорь Середа
Каких, например? Можешь рассказать?
Да просто, основные роли которые используются в системе
источник

BK

Boris Krutskih in testing_in_python
Игорь Середа
Каких, например? Можешь рассказать?
Но вот проблема всетаки остается, то что я могу создать новую роль, и кастомизировать как хочу, вот это сложнее покрыть
источник

BK

Boris Krutskih in testing_in_python
А так есть допустим стандартные 4 роли, и вот каждому юзеру присвается своя роль и проверяется просто к чему он не имеет доступа
источник

BK

Boris Krutskih in testing_in_python
Либо есть ещё вариант, с UI давать роль, и через API пробегать по эндпоинтам которые ему доступны\недоступны. Предварительно авторизовавшись юзером которому назначена роль
источник

ИС

Игорь Середа... in testing_in_python
Boris Krutskih
Но вот проблема всетаки остается, то что я могу создать новую роль, и кастомизировать как хочу, вот это сложнее покрыть
Роли — это табличные сущности? Добавление новой роли сопряжено с релизом (добавлением констант в код или выполнения миграций на базке)?

Или это, по сути, бизнесовые данные? То есть, можно любую роль создать через админку, и она сразу начнёт работать?
источник

BK

Boris Krutskih in testing_in_python
Игорь Середа
Роли — это табличные сущности? Добавление новой роли сопряжено с релизом (добавлением констант в код или выполнения миграций на базке)?

Или это, по сути, бизнесовые данные? То есть, можно любую роль создать через админку, и она сразу начнёт работать?
источник

ИС

Игорь Середа... in testing_in_python
Тогда для сборки новой роли тебе нужно описать её каким-то подобием иерархии разрешений и запретов, по аналогии с ACL. Таким образом, я лично я бы свёл тестирование такой логики к проверке корректной работы этого механизма на граничных кейсах, вне зависиомсти от того, какие реальные роли у вас в проекте используются.
источник