2016-05-19 22 views
2

testdataオブジェクトは、さまざまな企業の資格情報を保持しています。私はpytestテスト関数にこのオブジェクトを渡したいと思います。この場合、2つのテストを実行する必要があります(1社と2社それぞれに1つずつ)。ここで pytestにdictsのdictを渡す方法

testdata = { 
    "Company1": { 
     "username": "user1", 
     "password": "pass!" 
    }, "Company2": { 
     "username": "user2", 
     "password": "pass!" 
    } 
} 

は私がpytest.mark.parametrize @ を試みたが、dictsを渡す方法を見つけ出すことができませんでしたテスト機能

def test_login(): 
    # call login function by passing username and password 
    # Returns True if Success else False 
    assert login() 

です。

これを解決する方法についてのあらゆる指針は本当に役に立ちます。

答えて

0

@ pytest.mark.parametrizeは、dictsと他の値の型を渡す方法です。

import pytest 


@pytest.mark.parametrize(
    "data, value", 
    [ 
     ({"Company1": {"username": "user1", "password": "pass!"}, 
     "Company2": {"username": "user2", "password": "pass!"}}, "some value") 
    ] 
) 
def test_example(data, value): 
    assert isinstance(data, dict) 
    assert value == "some value" 

あなたは別のテストとして実行するために、2つにこの辞書を分割したい場合は、あなたがこのような何かをしたいと思います:

import pytest 


@pytest.mark.parametrize(
    "data, value", 
    [ 
     ({"username": "user1", "password": "pass!"}, "some value"), 
     ({"username": "user2", "password": "pass!"}, "some value") 
    ] 
) 
def test_example(data, value): 
    assert isinstance(data, dict) 
    assert value == "some value" 
0

あなたが作成したときにそれが良いpraticeではありませんあなたはキー/値をアサーションするかもしれません。

fixtureも使用できます

+0

「assert dict1 == dict2」を実行するのは良い方法ではありませんか?何故なの? –

+0

インスタンス型をアサートしようとすると、うまくないです。 =) –

関連する問題