我在conftest.py文件中有以下代码
@pytest.fixture(scope="session", autouse=True)
def app(request):
global fixture
browser = request.config.getoption("--browser")
base_url=target['baseUrl'])
fixture = Application(browser=browser,base_url=web_config['baseUrl'])
print("\n BEFORE SESSION")
fixture.session.login()
return fixture
@pytest.fixture(scope="session", autouse=True)
def stop(request):
def fin():
print("\n AFTER SESSION")
fixture.session.ensure_logout()
fixture.destroy()
request.addfinalizer(fin)
return fixture测试文件如下所示。Ie灯具,我显然不会打电话。
import pytest
@pytest.yield_fixture()
def setup_method():
print("\n BEFORE METHOD")
yield
print("\n AFTER METHOD")
@pytest.mark.usefixtures("setup_method")
def test_add_text_element(app):
print("\n RUN TEST")
app.element.add_blank_page()
app.element.add_element(element_name='Header')但是如果我需要设置一些其他的类设置呢?如果我得到了另一个fixture,我如何在测试文件中使用它,而不是现在使用的那个?
发布于 2018-10-03 19:44:19
您可以在this文档中找到所有关于py.test中的装置的信息。下面你可以找到一个如何使用灯具的例子。首先,不要使用global。然后要注意灯具的autouse参数。对于安装和拆卸,yield_fixture将是您的选择。使用usefixtures作为类的装饰器。类可以很好地组织您的测试代码。您可以在此article (RUS)中找到有关用法的详细信息
conftest.py
@pytest.yield_fixture()
def destroy_method():
yield
print("\n DESTROY")
@pytest.yield_fixture(scope="session", autouse=True)
def app(request):
browser = request.config.getoption("--browser")
fixture = Application(browser=browser, base_url=web_config['baseUrl'])
print("\n BEFORE SESSION")
fixture.session.login()
yield fixture
print("\n AFTER SESSION")
fixture.session.ensure_logout()
fixture.destroy()测试文件将如下所示:
@pytest.yield_fixture()
def setup_method():
print("\n BEFORE METHOD")
yield
print("\n AFTER METHOD")
@pytest.fixture()
def fix1():
return 1
@pytest.fixture()
def fix2():
return 2
@pytest.mark.usefixtures("setup_method", "destroy_method")
class TestSuiteA:
def test_add_text_element(self, fix1, fix2):
print("\n RUN TEST")
assert fix1 + 1 == fix2发布于 2019-05-09 05:51:41
来自pytest文档:
"yield_fixture“函数:
从
-3.0开始,使用普通fixture装饰器的fixture可以使用Yeld语句来提供fixture值并执行teardown代码,这与以前版本中的yield_fixture完全一样。
仍支持将函数标记为yield_fixture,但已弃用,不应在新代码中使用。
https://stackoverflow.com/questions/52623555
复制相似问题