使用Python进行自动化测试的浏览器选择

时间:2019-07-07 08:26:20

标签: python unit-testing selenium

最初,我具有def setup()以及用于从另一个文件调用特定Web浏览器的选项,这些文件包含有关如何设置Web浏览器的所有信息。标记出未使用的浏览器。

    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 :(得分:0)

测试应定义为类方法,在您的代码中,它们似乎是独立的函数,与包含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()