DebanjanB有一个很棒的答案。我认为没有一个通用的答案。
有一些有趣的平衡点。根据你使用的框架,你可以变得很复杂。我喜欢pytest因为它独特的固定装置用法。
为此,您可以根据需要进行测试或测试集。您可以平衡浏览器加载时间和执行时间,以确定哪种方式更为合理。
例如,在pytest中:
conftest.py:
import pytest
from selenium import webdriver
@pytest.fixture(scope='module')
def module_browser(request):
"""Fixture lasts for an entire file of tests."""
driver = webdriver.Chrome()
def fin():
driver.quit()
request.addfinalizer(fin())
return driver
@pytest.fixture(scope='function')
def function_browser(request):
"""Fixture lasts for just a test function."""
driver = webdriver.Chrome()
def fin():
driver.quit()
request.addfinalizer(fin())
return driver
现在
module_browser()
让你可以获取整个测试模块的浏览器。
funtion_browser()
为每个测试功能提供一个新的浏览器。
让我们变得更加高级...你有一堆需要登录的测试,并且它们正在使用标准账户进行美化检查:
conftest.py 继续...
@pytest.fixture(scope='module')
def logged_in_browser(request):
"""Provide a logged in browser for simple tests."""
driver = webdriver.Opera()
log_in_browser(username='RedMage', password='masmune')
def fin():
driver.quit()
request.addfinalizer(fin())
return driver
这段内容介绍了一种关于it技术的方法。该方法可以在测试期间保持浏览器开启,并且已经登录。如果登录需要5秒钟,而你又有30个测试需要检查外观方面的事情,那么你可以节省几分钟的时间。
这种灵活性允许您更快地运行某些测试,并以更干净的状态运行其他测试。我们可能需要在整套测试中运行一些测试,同时仍能提高效率。因此,没有一个通用的答案。
使用 pytest 中的 fixture 可以为每个测试选择所需的选项,例如是一个清洁的浏览器还是需要更快的速度。
接下来,在测试中,我们会看到如下代码:
test_things.py
def test_logged_out_assets(function_browser):
driver = function_browser
driver.get('http://example.com/')
check_some_stuff(driver)
language_subdomain_list = ['www', 'es', 'de', 'ru', 'cz']
@pytest.parametrize(language_subdomain, language_subdomain_list)
def test_logged_out_assets_multlingual(module_browser, language_subdomain):
"""
Check the assets come up on each language subdomain.
This test will run for each of the subdomains as separate tests.
5 in all.
"""
driver = module_browser
url = "http://{}.example.com".format(language_subdomain)
driver.get(url)
check_some_stuff(driver)
def test_logged_in_assets(logged_in_browser):
"""
Check specific assets while logged in.
Remember, our web browser already is logged in when we get it!
"""
driver = logged_in_browser
check_some_assets(driver)
Py.test配件:https://docs.pytest.org/en/latest/fixture.html