簡體   English   中英

Python unittest數據提供者

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM