gpt4 book ai didi

selenium - pytest.fixture 函数不能使用 `` Yield``。相反,编写并返回一个内部函数/生成器,并让消费者调用并迭代它。 :

转载 作者:行者123 更新时间:2023-12-02 19:34:42 26 4
gpt4 key购买 nike

我正在尝试使用 pytest 为我的 Django 项目运行 selenium 并执行固定装置设置/拆卸。

我试图遵循最好的practice使用 yield 但我收到错误:

--- ERROR at setup of test_browsing_check --- 
pytest.fixture functions cannot use ``yield``. Instead write and return an inner function/generator and let the consumer call and iterate over it.:

@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium .implicitly_wait(3)
yield selenium
selenium.quit()

你知道为什么它不起作用吗?

后来我使用了另一个运行良好的代码

@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium.implicitly_wait(3)
def teardown():
selenium.quit()
request.addfinalizer(teardown)
return selenium

但是不推荐这种方法:

This method is still fully supported, but yield is recommended from 2.10 onward because it is considered simpler and better describes the natural code flow.

有关版本的注意事项:

$ python -V
$ Python 3.5.2 :: Anaconda 4.2.0 (64-bit)

$ django-admin version
$ 1.10.3

$ pip show pytest
$ Name: pytest
$ Version: 2.9.2

最佳答案

根据文档:在版本2.10之前,为了使用yield语句执行拆卸代码必须使用yield_fixture标记来标记固定装置。从2.10开始,普通固定装置可以使用直接yield,因此不再需要yield_fixture装饰器并被视为已弃用。

关于selenium - pytest.fixture 函数不能使用 `` Yield``。相反,编写并返回一个内部函数/生成器,并让消费者调用并迭代它。 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com