Python单元测试数据提供程序

Python单元测试数据提供程序,python,unit-testing,python-3.x,python-3.3,dataprovider,Python,Unit Testing,Python 3.x,Python 3.3,Dataprovider,我正在尝试用python创建一个具有数据提供程序的单元测试。由于unittest库不支持此诞生,因此我使用。我得到了一个错误,不确定它是从哪里来的(我是python新手) 我的代码 import unittest from wikibase.dataModel.item_id import ItemId from unittest_data_provider import data_provider class TestItemId(unittest.TestCase): itemI

我正在尝试用python创建一个具有数据提供程序的单元测试。由于unittest库不支持此诞生,因此我使用。我得到了一个错误,不确定它是从哪里来的(我是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\u data\u provider/init.py”, 第7行,回复 fn(self,*i)TypeError:test_构造函数()接受2个位置参数,但给出了4个


这是在使用Python3.3。

您的
itemIds
函数应该返回一个元组,但按照您的编码方式,它返回的是一个字符串元组。您需要在括号内添加一个
,以返回单个项元组,请尝试将代码替换为以下内容:

itemIds = lambda: (('q42',), ('Q42',), ('Q1', ), ('Q1000',), ('Q31337',),)
杰伦·德道乌 Decorator数据提供程序只能在可调用对象(即元组、列表、集合、int等)上迭代,但不能在2D上迭代,因为您正在传递元组的元组,而Decorator数据提供程序没有实现来处理它

因此,你可以选择滴滴涕的idata装饰剂。 它提供符合您要求的ans

快乐编码

github状态页面:!!!不要用这个,试试鼻子测试生成器吧!!!看到这个了吗