有没有办法从一个简单的函数引用(和调用)pytest fixture,它本身不是test_ *函数或者也不是fixture?
可以使用灯具的已知示例:
1)
def test_mytest( some_cool_pytest_fixture_name, the, rest of, my, args):
blah
blah
some_cool_pytest_fixture_name(args)
blah
2)
@pytest.fixture()
def my_new_fixture( some_cool_pytest_fixture_name, the, rest of, my, args):
blah
blah
some_cool_pytest_fixture_name(args)
blah
我希望能够这样做: 3)
def my_simple_function( the, rest of, my, args):
blah
blah
outright.reference.this.pytest.fixture.some_cool_pytest_fixture_name(args)
blah
注意:
from pytest import record_xml_property as property_handler
** E ImportError: cannot import name record_xml_property**
^^^这个在具有 record_xml_property
的系统上我的愿望是能够做到这样的事情:
try:
from pytest import record_xml_property as property_handler
except:
@pytest.fixture()
def property_handler(mykey, myval):
print('{0}={1}'.format(mykey,myval)
^^^如果上面的内容能够成功,那么我总是可以依赖 property_handler 作为一个夹具。
答案 0 :(得分:1)
当您使用pytest的内置夹具处理时,您不必担心如何管理它的可用性和内存。
因此,当您不使用pytest时,您可以将其作为普通函数导入。
from path.to.cool.pytest.fixture import some_cool_pytest_fixture_name
def my_simple_function(the, rest of, my, args):
some_cool_pytest_fixture_name(args)
<小时/> 修改
为了回应Ken的说明,我花了一些时间试图访问pytest中定义的可用灯具列表。我已经提出了两种方法来访问列表,但是还没有把它推得足够远以获得python列表格式的列表,只有控制台输出。
从命令行,您可以运行pytest --fixtures
列出所有可用的灯具。要从python脚本执行相同的操作,您可以运行此代码
import pytest
from _pytest import python
from _pytest import config
configs = config._prepareconfig()
python.showfixtures(configs)
如果您深入了解pytest Session对象并查看其_fixturemanager
属性,我认为您可以访问该列表,但我无法找到一种方法来创建它们,如上面的函数showfixtures
确实