【问题标题】:python::how to return Mock variable value?python::如何返回 Mock 变量值?
【发布时间】:2017-04-03 02:06:58
【问题描述】:
 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语句?

【问题讨论】:

    标签: python mysql unit-testing mocking python-mock


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 2014-09-08
      • 2015-10-13
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多