2016-11-19 2 views
0
def m(): 
    cnx = mysql.connector.connect(**config) 
    cursor = cnx.cursor() 
    cnx.database = database_name 
    cursor.execute('''SELECT COUNT(1) FROM URLlookup where malicious = '{0}' '''.format(new_URL)) 
    Malware = cursor.fetchone()[0] 
    if Malware: 
    do something 
    else: 
     do something 

この私の基本的なコードは、マルウェア= trueの場合、そうでなければFalsepython ::モック変数の値を返すには? database.If値から値を見つけるため

が存在する私はモックライブラリを使用してユニットテストを書くとMySQLの接続を嘲笑が、真の値を返すことができないのですマルウェアの場合はFalse boolです。

with patch ('mysql.connector.connect') as mock_db: 
    connection = mock_db.return_value 
    cursor = connection.cursor.return_value 

「マルウェア」に対してTrueまたはFalseを返す方法は、IF else文をそれに応じて実行できるようにすることです。

答えて

0

cursor.fetchoneをモックして、単一の番号のタプルを返す必要があります。 次に、m()と呼び出して、予想されたことが起きたかどうかを確認します。

with patch ('mysql.connector.connect') as mock_db: 
    connection = mock_db.return_value 
    cursor = connection.cursor.return_value 
    cursor.fetchone.return_value = (1,) # or (0,) # <----- 
    # TODO call m() 
    # TODO assert that something is done or not 
関連する問題