10

オプションの引数を使用して関数呼び出しをテストしたい。

これが私のコードです:

list_get()
list_get(key, "city", 0)
list_get(key, 'contact_no', 2, {}, policy)
list_get(key, "contact_no", 0)
list_get(key, "contact_no", 1, {}, policy, "")
list_get(key, "contact_no", 0, 888)

オプションの引数が原因でパラメータ化できないため、pytest.
これをテストするより良い方法があるはずだと思います。

4

4 に答える 4

10

*演算子を使用できる場合があります:

@pytest.mark.parametrize('args,expected', [
    ([], expVal0),
    ([key, "city", 0], expVal1),
    ([key, 'contact_no', 2, {}, policy], expVal2)
    ([key, "contact_no", 0], expVal3)
    ([key, "contact_no", 1, {}, policy, ""], expVal4)
    ([key, "contact_no", 0, 888], expVal5)
])
def test_list_get(args, expected):
    assert list_get(*args) == expected
于 2016-03-07T13:28:47.967 に答える
0

あなたがしていることは良いと思いますが、引数の順序が混同されないように、キーと値の引数を渡すことをお勧めします。

関数ヘッダーは次のようになっていると思います。

def list_get(key=None, city=None, contact_no=None, policy=None):
    ...

テストでは、テストする引数の組み合わせのリストを定義します。

kwargs = {'key': '..', 'city': '..', 'contact_no': '..', 'policy': '..'} 
list_get(**kwargs) 

kwargs_all_default_values = {}
list_get(**kwargs_all_default_values)
于 2016-03-07T13:46:59.353 に答える