我有一個適用於Selenium測試的工作pytest環境。我在conftest.py中使用了一個參數化的fixture,它允許我測試所有不同的瀏覽器,而不必重寫測試。我想將一個命令行參數傳遞給我的腳本,這樣我就可以只運行一個特定的瀏覽器,而不是所有的瀏覽器。爲此,我需要修改傳入我的燈具的變量。到目前爲止,我還沒有弄清楚如何做到這一點。我的下面的例子不起作用,可能是因爲pytest單獨從我的啓動腳本描述的變量中分析conftest.py。py.test conftest - 基於sys.argv修改燈具參數
#conftest.py
browsers = { "ff" : webdriver.Firefox, "ie" : webdriver.Ie }
@pytest.yield_fixture(params=browsers.keys())
def browser(request):
driver = browsers[request.param]()
yield driver
driver.quit()
#test_simple.py
def test_simple(browser):
browser.get("http://stackoverflow.com")
#main.py
browsers = {}
if __name__ == "__main__":
if len(sys.argv) > 1:
for arg in sys.argv[1:]:
if arg == "-ff":
browsers = { "ff" : webdriver.Firefox }
elif arg == "-ie":
browsers = { "ie" : webdriver.Ie }
elif arg == "-all":
browsers = { "ff" : webdriver.Firefox, "ie" : webdriver.Ie }
pytest.main()
我怎麼能值傳遞給在conftest.py參數化夾具?
我已經閱讀了文檔並實現了一些示例,但我一直無法使其正常工作。問題是我需要將瀏覽器的字典鍵傳遞給瀏覽器夾具,但是沒有一種明顯的方法來檢查命令行選項並更新瀏覽器字典,以便在瀏覽器夾具實際運行。 – user4794170
看起來不錯。謝謝! – user4794170