我想使用 record_xml_property 夹具 . 没问题 . 它现在可用时效果很好 . 但是,无论是否安装此夹具,我都希望我的测试能够顺利运行 . 当我创建一个'wrapper'夹具时,(类似这样)

//this one works nicely when record_xml_property is there
@pytest.fixture()   
def real_property_handler( record_xml_property, mykey, myval):
    record_xml_property( mykey, myval)

//this does a harmless print instead
@pytest.fixture()  
def fallback_property_handler( mykey, myval):
    print('{0}={1}].format( mykey, myval))

def MyXMLWrapper( mykey, myval):  
    try:      # I want to use the REAL one if I can
        real_property_handler( record_xml_property, mykey, myval)
    except:   # but still do something nice if it's not
        fallback_property_handler( mykey, myval)

My test should not have to be cognizant of any fixture(s) that may or may not underlie my wrapper function

def test_simple():  
    MyXMLWrapper( 'mykeyname', 'mykeyvalue')
    assert True

我被困了,因为为了让我的测试能够正常工作,似乎我必须将 record_xml_property 夹具作为一个参数传递给我,这个参数在我尝试过几件事情的环境中永远无法做到 .
如果我将 MyXMLWrapper 作为一个夹具本身,那么我必须将它传递给 record_xml_fixture ,但如果我将 MyXMLWrapper 定义为函数(上图),那么我无法在它存在的情况下引用 record_xml_property .

关于夹具如何工作,我在这里不了解什么?谢谢 .