использование в автотестах авторизации для соц сетей.

python
Теги: #<Tag:0x00007f7b6905e330>

(Alexzoo) #1

Коллеги добрый день!

Поставлена задача написать автотесты для сервиса, который использует авторизации для различных соц сетей.
Например, нужно перейти на страницу facebook/twitter/instagram выполнить логин, выполнить какие то действия типа - оставить пост на стене, добавиться в группу и тд. и после будет редирект на страницу, которая проверяется в ассертах теста.
Проблема в том что многие соц сети запрещают использовать инструменты автоматической авторизации.
Поэтому эти аккаунты просто блокируются, и тесты естественно падают.
В какую сторону копать, какие идеи вообще есть?
Возможно кто то использовал в автотестах похожие сценарии и как с этим боролись? Любые советы, идеи приветствуются.
Спасибо.


(Maxim Andryushchenkov) #2

Не довелось еще на это писать автотесты, но чуть повангую. Думается мне что эту проблему можно решить настроенной автоматической авторизацией по профилю. То есть вы создаете профиль, логинитесь, соглашаетесь на все настройки автоматического ввода и тд. Затем при вызове драйвера из кода тестов вам нужно будет подсунуть ваш настроенный профиль в инит драйвера:

ch_opts = webdriver.ChromeOptions()
ch_opts.add_argument(f"--user-data-dir=path_to_profile")
driver = webdriver.Chrome(chrome_options=ch_opts)

И в итоге вы должны получить переход на страницу соцсети без авторизации в ней. А дальше уж что хотите там то и воротите


(Alexzoo) #3

интересный вариант.
а можете подсказать как эти профили создавать и что там нужно настроить?


(Михаил Братухин) #4

Для приложений обычно используют токены, например, как в гугле:
https://habr.com/post/325518/
Или в вконтакте:
https://habr.com/post/306022/

Upd. добавил ссылки на оригинальные dev-страницы гугла, фейсбука и вконтакта. Там всё есть:
https://developers.facebook.com/docs/facebook-login/
https://vk.com/dev/access_token
https://developers.google.com/api-client-library/python/guide/aaa_oauth
Ну, и далее по теме можно поискать.


(Gena) #5

Поддержу @Mihail_Bratuhin, Думаю фейсбук умный и в любом слуае будет ловить все автоматические штуки…в противном случае таких роботов было бы уже милионы для раскруток страниц.
Дев инваирмент должен быть хороший выход из ситуации. +я бы не тратил время на открывание каких либо сторонних сервисов в браузере. АПИ запросы стабильней и быстрей. Уверен у всех популярных социалок есть апи доки. Тестить стоит своий продукт.


(Alexzoo) #6

абсолютно согласен что тестировать нужно свой продукт. пытаюсь донести это до руководства. пока они стоят на своем - нам нужно проверять полностью все действия пользователя.
это выглядит так - наш сервис открывает страницу, далее проход по интерфейсу, нажимание кнопок/ссылок, далее идет авторизация в нужную соц сеть. далее снова идет нажатие нужных кнопок или написание например поста, потом наша система проверяет написан ли пост, и если да то переход на нужную страницу, например яндекс. эта авторизация похожа на процесс авторизации в метро, там похожая тема только на мобильнике.
я предложил проверять webdriver’ом часть до входа в соц сети. а далее сэмулировать два состояния - пост есть и поста нет. сделать это путем запросов ответов, каким то образом, софтом. пока еще не знаю как но думаю это возможно. такая идея.


(Gena) #7

Тут похоже больше организационный вопрос. Надо “гнуть свою” - test and dev для разработки\тестирования. Production для пользователей - никаких тестов, ну как минимум точно не автоматические тесты.

Еще конечно вариант сделать костылль на стороне апликейшина и по какому то ключу ходить не на реальные сервисы соц сетей, а на моки…Но это конечно тож трудозатратно и криво.


(Alexzoo) #8

Это как раз продакшен, это дев и тестирование))) у нас софт такой, что то типа предоставления услуг в сети, но нужно пройти авторизацию через разные соц сети. вот оно че)