python :: как вернуть значение переменной Mock?

 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

Это базовый код для поиска значений из базы данных. Если значение существует, то Malware = True, в противном случае False.

Я пишу модульный тест, используя библиотеку Mock, и издевался над соединением Mysql, но не могу вернуть значение True или False bool для вредоносных программ.

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

После того, как вернуть True или False для «Вредоносного ПО», чтобы оператор IF else мог выполняться соответствующим образом?


person guri    schedule 19.11.2016    source источник


Ответы (1)


Вам нужно смоделировать 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
person falsetru    schedule 19.11.2016