一次编写,到处测试 - Selenium 和 Python 在桌面和移动设备上的单元测试

Write Once, Test Everywhere - Selenium and Python's unittest on desktop and mobile

我正在使用 Selenium 和 Python 的单元测试,我正在为台式机、平板电脑和移动网站创建测试用例。但是,拥有三个测试相同事物的测试用例并不理想。

目前,我把self.driver.set_window_size(1366, 768)放在桌面的测试方法中,self.driver.set_window_size(414, 736)放在移动的测试方法中。所以我有两种测试方法,它们主要做同样的工作。

我正在寻找一些方法来封装 set_window_size() 并拥有一种测试方法,也许使用 if 循环来测试某些可能只出现在移动或桌面网站上的元素。

重构以将通用代码放入单独的方法中。

class Mytest(unittest.TestCase):

    def do_test(self):
        # your actual test code

    def test_something_mobile(self):
        self.driver.set_window_size(1366, 768)
        self.do_test()

    def test_something_mobile(self):
        self.driver.set_window_size(414, 768)
        self.do_test()

以上代码假定驱动程序在别处初始化,通常在 __init__

中完成

借助 e4c5 的解决方案,我能够 运行 在桌面和移动设备上进行一个测试。

我需要一个 if 循环来测试可能在移动设备上但不在桌面设备上的元素,反之亦然。

所以我的解决方案是:

if self.driver.get_window_size() == {'height': 736, 'width': 414}: