Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python::如何返回模拟变量值?_Python_Mysql_Unit Testing_Mocking_Python Mock - Fatal编程技术网

python::如何返回模拟变量值?

python::如何返回模拟变量值?,python,mysql,unit-testing,mocking,python-mock,Python,Mysql,Unit Testing,Mocking,Python Mock,这是从数据库中查找值的基本代码。如果值存在,则恶意软件=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

这是从数据库中查找值的基本代码。如果值存在,则恶意软件=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语句可以相应地执行

您需要模拟cursor.fetchone以返回单个数字的元组。 然后调用
m()
,然后检查是否发生了预期的事情

  with patch ('mysql.connector.connect') as mock_db:
    connection = mock_db.return_value
    cursor = connection.cursor.return_value
以补丁('mysql.connector.connect')作为模拟数据库的
:
连接=mock\u db.return\u值
cursor=connection.cursor.return\u值
cursor.fetchone.return_值=(1,)#或(0,)#
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