2017-03-13 74 views
1

單一功能的多個測試我現在有一個簡單的測試,實例化了一堆類似的對象和執行方法,以確保該方法不拋出任何異常:報告從pytest

class TestTemplates(object): 

    def test_generate_all(self): 
     '''Generate all the templates and ensure none of them throw validation errors''' 
     for entry_point in pkg_resources.iter_entry_points('cloudformation.template'): 
      object = entry_point.load() 
      object().build().to_json() 

這是在報道的pytest文本輸出爲單個測試:

test/test_templates.py::TestTemplates::test_generate_all PASSED 

另外在junit XML:

<testcase classname="test.test_templates.TestTemplates" file="test/test_templates.py" line="31" name="test_generate_all" time="0.0983951091766"></testcase> 

是否有可能將每個測試對象報告爲單獨測試,而無需爲每個對象手動定義測試功能?

+0

我會生成列表作爲夾具,那麼該燈具進入一個參數化測試。 –

回答

1

我定義對象作爲一個固定的列表,然後通過該列表一個參數化測試:

@pytest.fixture 
def entry_point_objects() 
    eps = pkg_resources.iter_entry_points('cloudformation.template') 
    return [ep.load() for ep in eps] 

@pytest.mark.parametrize('obj', entry_point_objects()) 
def test_generate_all(obj): 
    obj().build().to_json() 
+0

這給了我正確的結果,我正在尋找,謝謝。 – jordanm

+0

@jordanm感謝您修復它;) –