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

问题描述 投票:0回答:2

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

这适用于单个单元测试,但如果文件中有多个测试,它每次都会询问浏览器选择。

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

python unit-testing selenium
2个回答
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()

0
投票

我遵循您的建议,我可以使用所选的浏览器完全运行我的测试用例。 但我想知道如何通过子进程在测试套件中运行多个测试用例。我想我不能在每个TC中输入浏览器名称。你能给我建议吗?

-- MyTC.py:

<code>
class TC_01_Check_Get_OPOS_Version(unittest.TestCase):

    def setUp(self):
        vr_Input_Browser    = 'Please choose Browser that you want to run'
        vr_Selected_Browser = input(vr_Input_Browser)
        #-- Run with Selected Browser:
        if vr_Selected_Browser == "Chrome":
           self.Driver = webdriver.Chrome()        
        elif vr_Selected_Browser == "Firefox":
           self.Driver = webdriver.Firefox(service=FirefoxService(executable_path=GeckoDriverManager().install()))
        #-- Open WebPage/ URL:
            self.Driver.get(vr_TC_01_WebPage)
            time.sleep(3)
            self.Driver.maximize_window()

    def test_1(self):
        ...

    def tearDown(self):
        time.sleep(10)
        self.Driver.quit()
</code>

-- MyTestSuite.py:

<code>
import subprocess
subprocess.run  ("MyTC1.py",    shell=True)
subprocess.run  ("MyTC2.py",    shell=True)
subprocess.run  ("MyTC3.py",    shell=True)
subprocess.run  ("MyTC4.py",    shell=True)
</code>
© www.soinside.com 2019 - 2024. All rights reserved.