Выбор браузера с тестом автоматизации в Python - PullRequest
0 голосов
/ 07 июля 2019

Изначально у меня есть def setup () с опциями для вызова определенных веб-браузеров из другого файла, который содержит всю информацию о том, как настроить веб-браузер. Выделение браузера не используется.

    def setUp(self):
    # Choose the Web Browser to test with
    operabrowser(self)
    # chromebrowser(self)
   ...

def test_one()
    ...
def test_two()
    ...

Я пытаюсь отойти от редактирования тестового файла каждый раз, я ищу, чтобы настроить консольный вход, который будет вызывать браузер, и я добавил в def setup ().

    browser_choice = input ( """Choose your browser
    Opera, [Firefox], Chrome or Safari
    > """ ).lower ()
    if browser_choice == 'opera':
        operabrowser()
    else chromebrowser()

Это работает с одним модульным тестом, но если в файле более одного теста, он каждый раз запрашивает выбор браузера.

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

1 Ответ

0 голосов
/ 07 июля 2019

Тесты должны быть определены как методы класса, в вашем коде они кажутся автономными функциями, не связанными напрямую с классом, который содержит метод setUp(). Вам просто нужно изменить свой код следующим образом:

import unittest

class YouTests(unittest.TestCase):

    def setUp(self):
        q = 'Choose your browser Opera, [Firefox], Chrome or Safari >'
        browser_choice = input (q).lower ()
        if browser_choice == 'opera':
            operabrowser()
        else: 
            chromebrowser()

    def test_one(self):
        pass

    def test_two(self):
        pass

...

Если у вас есть несколько классов, унаследованных от unittest.TestCase, и все должны использовать один и тот же браузер, выбор браузера будет наилучшим образом вставлен в область действия global. Например:

browser_object = None
...

def operabrowser():
    global browser_object
    # Init opera object here

def chromebrowser():
    global browser_object
    # Init chrome object here

...
# Your tests using the browser_object
...

if __name__ == '__main__':
    q = 'Choose your browser Opera, [Firefox], Chrome or Safari >'
    browser_choice = input (q).lower ()
    if browser_choice == 'opera':
        operabrowser()
    elif browser_choice == 'firefox':
        ...
    else: 
        chromebrowser()

    unittest.main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...