Python自动化测试中的浏览器选择

2024-09-30 01:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

最初,我使用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()

这适用于单个单元测试,但如果文件中有多个测试,则每次都会要求选择浏览器

如何使此选项对于将在测试文件中运行的所有测试只被询问一次?我试过其他一些方法来解决这个问题,但都没有成功


Tags: 文件标记testselfbrowserweb信息def
1条回答
网友
1楼 · 发布于 2024-09-30 01:21:19

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

相关问题 更多 >

    热门问题