Python测试-如何模拟MySQLdb

Python测试-如何模拟MySQLdb,python,mysql,tdd,nose,Python,Mysql,Tdd,Nose,我试图从我的项目中模拟MySQLdb库,但我真的不明白如何做到这一点: 以下是我的测试代码: import unittest from mock import MagicMock from core.distrib.main.CentralDistDraw import CentralDistDraw from connector.mysql import MySQL class CentralDistDraw(unittest.TestCase): def test_hello(s

我试图从我的项目中模拟MySQLdb库,但我真的不明白如何做到这一点:

以下是我的测试代码:

import unittest
from mock import MagicMock
from core.distrib.main.CentralDistDraw import CentralDistDraw
from connector.mysql  import MySQL

class CentralDistDraw(unittest.TestCase):
    def test_hello(self):
        draw = CentralDistDraw()
        msql = MySQL()
        msql.getConnection = MagicMock()
这是我的班级:

from datetime import datetime
import logging
from core.distrib.config.PromoConstants import PromoConstants
from dateutil.parser import parse
from google.appengine.api import memcache
from connector.mysql import MySQL
from core.distrib.ndb.userpromo import UserPromo
from core.distrib.ndb.drawinfo import DrawInfo
import traceback

class CentralDistDraw(object):
    def getNextNumber(self, idUser, amountDefault=1, amountSpecial=1):

        numbersDelivered = []
        # DB CONTROLL....
        db = MySQL().getConnection()
        db.autocommit(False)
        currentUser = None
抛出错误:

ERROR: Failure: ImportError (/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/lib/_mysql.so: invalid ELF header)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.7-py2.7.egg/nose/loader.py", line 418, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.7-py2.7.egg/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/local/lib/python2.7/dist-packages/nose-1.3.7-py2.7.egg/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/tests/core/test_central_dist_draw.py", line 4, in <module>
    from core.distrib.main.CentralDistDraw import CentralDistDraw
  File "/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/core/distrib/main/CentralDistDraw.py", line 11, in <module>
    from connector.mysql import MySQL
  File "/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/connector/mysql.py", line 8, in <module>
    import MySQLdb
  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: /home/dyego/Documents/code-stuff/mod/pdbcontest2/src/lib/_mysql.so: invalid ELF header

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)
错误:失败:导入错误(/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/lib/_-mysql.so:ELF头无效)
----------------------------------------------------------------------
回溯(最近一次呼叫最后一次):
loadTestsFromName中的文件“/usr/local/lib/python2.7/dist packages/nose-1.3.7-py2.7.egg/nose/loader.py”,第418行
addr.filename,addr.module)
文件“/usr/local/lib/python2.7/dist packages/nose-1.3.7-py2.7.egg/nose/importer.py”,第47行,在importFromPath中
返回self.importFromDir(目录路径,fqname)
importFromDir中的文件“/usr/local/lib/python2.7/dist packages/nose-1.3.7-py2.7.egg/nose/importer.py”,第94行
mod=加载模块(部件名称、fh、文件名、描述)
文件“/home/dyego/Documents/code stuff/mod/pdbcontest2/src/tests/core/test\u central\u dist\u draw.py”,第4行,在
从core.distrib.main.centralistdraw导入centralistdraw
文件“/home/dyego/Documents/code stuff/mod/pdbcontest2/src/core/distrib/main/centralistdraw.py”,第11行,在
从connector.mysql导入mysql
文件“/home/dyego/Documents/code-stuff/mod/pdbcontest2/src/connector/mysql.py”,第8行,在
导入MySQLdb
文件“/usr/lib/python2.7/dist-packages/MySQLdb/_-init__.py”,第19行,在
导入mysql
ImportError:/home/dyego/Documents/code stuff/mod/pdbcontest2/src/lib/_mysql.so:ELF头无效
----------------------------------------------------------------------
在0.001s内运行1次测试
失败(错误=1)
有人知道测试第三方库的正确方法吗


谢谢

实际上,您并没有将模拟注入到被测试的代码中(或者,就此而言,在您的测试中测试任何东西)。谢谢@jornsharpe!但是你能给我演示一下怎么做吗,或者给我链接一个教程?我发现了如何模拟常规方法,但我无法模拟mysql库(或任何其他第三个库),例如,或者您实际上没有将模拟注入测试中的代码(或者,就此而言,在您的测试中测试任何内容)。谢谢@jornsharpe!但是你能给我演示一下怎么做吗,或者给我链接一个教程?我发现了如何模拟常规方法,但我无法模拟mysql库(或任何其他第三个库),例如,或