2017-01-26 30 views
0

我在考慮從我們目前的測試框架鼻子w/nose-testconfig切換到py.test。任何建議如何改寫以下使用pytest燈具硒從鼻子到pytest開關

class BaseTestCase(unittest.TestCase, Navigation): 
@classmethod 
def setUpClass(cls): 
    browser = Browser.getDriver((config['browser']).lower()) 

    cls.driver = EventFiringWebDriver(browser, MyListener()) 
    cls.driver.implicitly_wait(10) 
    cls.driver.maximize_window() 

    try: 
     cls.driver.get(config['url']) 
    except KeyError: 
     cls.driver.get(DEV_ENV_URL) 

def run(self, result=None): 
    super(BaseTestCase, self).run(MyTestResult(result, self)) 


@classmethod 
def tearDownClass(cls): 
    cls.driver.quit() 

專門安裝/拆卸下面的代碼我希望能夠通過命令行參數即URL,瀏覽器,調試等

回答

1

首先, ,請查看py.test文檔。

其次,假設您想使用燈具而不是setUp/tearDown: 創建一個新文件conftest.py您的測試用例就是您必須要做的事情。如果你把它放在其他地方py.test不會找到它。

def pytest_addoption(parser): 
    parser.addoption("--browser", action="store", default="chrome", help="Type in browser type") 
    parser.addoption("--url", action="store", default=DEV_ENV_URL, help="url") 

@pytest.fixture(scope='class', autouse=True) 
def driver(request): 
    browser_name = request.config.getoption("--browser") 
    url = request.config.getoption("--url")  
    driver = Browser(browser_name).getDriver() # 
    driver.get(url) 
    yield driver # Write your setUp before 'yield' 
    driver.quit() # Write tearDown after 'yield' 

這將使所有的測試使用這個夾具。但是還有一個問題,我可以看到你的測試繼承自BaseTestCase,所以如果你沒有遵循py.test支持的命名約定,它將不會找到你的測試(請閱讀文檔)。

儘管pytest還有很多。正如我在文檔中所說的一切。