鸡肉或鸡蛋与pytest固定装置

时间:2017-07-05 20:46:44

标签: python pytest fixtures

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

//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)

我的测试不应该被认识 任何可能或可能不是我的包装函数的夹具

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

我被困了,因为为了让我的测试能够正常工作,似乎我必须将record_xml_property夹具作为参数传递给我,在没有安装此夹具的环境中我永远不会这样做。 我尝试过几件事 如果我将MyXMLWrapper作为一个夹具本身,那么我必须将record_xml_fixture传递给它,但如果我将MyXMLWrapper定义为函数(上图),那么我无法引用{{1}如果它存在的话。

我在这里不了解灯具如何工作? 感谢。

0 个答案:

没有答案