12

データ プロバイダーを持つ 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(self, *i) TypeError: test_constructor() は 2 つの位置引数を取りますが、4 つが指定されました

これはpython 3.3を使用しています。

4

2 に答える 2

0

Jeroen De Dauw Decorator DataProvider は呼び出し可能なオブジェクト、つまり Tuples、lists、set、int などに対してのみ Iterate できますが、 2D ではなく、Tuple の Tuple を渡しており、Decorator データ プロバイダーはそれを処理するために実装されていません。

したがって、ddt の idata デコレータを使用できます。それはあなたの要件に答えを提供します

ハッピーコーディング

于 2018-11-20T12:08:58.550 に答える