python ::如何返回Mock变量值?

时间:2016-11-19 07:31:16

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

file

这是从数据库中查找值的基本代码。如果存在值,则Malware = True,否则为False

我正在使用Mock库编写单元测试并模拟Mysql连接,但无法为恶意软件返回值True或False bool。

 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或False以便IF else语句可以相应地执行?

1 个答案:

答案 0 :(得分: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