[英]Python unittest data provider
我試圖在python中創建一個具有數據提供程序的單元測試。 由於unittest庫不支持這個誕生,我使用的是unittest_data_provider包 。 我收到一個錯誤,我不知道它來自哪里(我是python的新手)。
我的代碼
import unittest
from wikibase.dataModel.item_id import ItemId
from unittest_data_provider import data_provider
class TestItemId(unittest.TestCase):
itemIds = lambda: (
( 'q42' ),
( 'Q42' ),
( 'Q1' ),
( 'Q1000' ),
( 'Q31337' ),
)
@data_provider(itemIds)
def test_constructor(self, itemString):
itemId = ItemId(itemString)
self.assertEqual(itemId.getSerialization(), itemString)
我得到的錯誤:
文件“/usr/local/lib/python3.3/dist-packages/unittest_data_provider/ INIT py”為7行,在REPL FN(個體,* I)類型錯誤:test_constructor()采用2的位置參數,但被給予4
這是使用python 3.3。
你的itemIds
函數應該返回一個元組元組,但是你編碼它的方式,它返回一個字符串元組。 您需要添加一個,
括號內返回單個項目的元組,嘗試用以下替換您的代碼:
itemIds = lambda: (('q42',), ('Q42',), ('Q1', ), ('Q1000',), ('Q31337',),)
Jeroen De Dauw裝飾器DataProvider只能迭代可調用的對象,即元組,列表,集合,整數等,但不是2D,你傳遞的元組元組和裝飾器數據提供程序沒有實現來處理它。
因此你可以去找ddt的idata裝飾器。 它提供了您的要求
快樂的編碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.