Selenium 从 nose 切换到 pytest
Selenium swtiching from nose to pytest
我正在考虑从我们当前的测试框架 nose w/ nose-testconfig 切换到 py.test。关于如何使用 pytest fixtures
具体 setup/teardown 覆盖以下代码的任何建议
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、浏览器、调试等。
首先,查看 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 还有很多。正如我在文档中所说的一切。
我正在考虑从我们当前的测试框架 nose w/ nose-testconfig 切换到 py.test。关于如何使用 pytest fixtures
具体 setup/teardown 覆盖以下代码的任何建议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、浏览器、调试等。
首先,查看 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 还有很多。正如我在文档中所说的一切。