用Python来模拟MySQL数据库

我使用Anaconda发行版中的Python 3.4。 在这个发行版中,我发现pymysql库连接到位于另一台计算机上的现有MySQL数据库。

import pymysql
config = {
      'user': 'my_user',
      'passwd': 'my_passwd',
      'host': 'my_host',
      'port': my_port
    }

    try:
        cnx = pymysql.connect(**config)
    except pymysql.err.OperationalError : 
        sys.exit("Invalid Input: Wrong username/database or password")

我现在想为我的应用程序编写测试代码,其中我想在每个测试用例的setUp上创建一个非常小的数据库,最好在内存中创建。 但是,当我使用pymysql试试这个问题时,它无法建立连接。

def setUp(self):
    config = {
      'user': 'test_user',
      'passwd': 'test_passwd',
      'host': 'localhost'
    }
    cnx = pymysql.connect(**config)

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)")

我一直在搜索,发现了一些关于SQLiteMySQLdb东西。 我有以下问题:

  • sqlite3MySQLdb适合在内存中快速创建数据库吗?
  • 如何在Anaconda软件包中安装MySQLdb
  • 有没有一个测试数据库的例子,在setUp创建? 这是个好主意吗?
  • 我的电脑上没有本地运行的MySQL服务器。


    pymysql,MySQLdb和sqlite都需要一个真正的数据库来连接。 如果你只是想测试你的代码,你应该只是模拟你想测试的模块上的pymysql模块,并相应地使用它(在你的测试代码中:你可以设置模拟对象以将硬编码结果返回给预定义的SQL语句)

    查看原生Python模拟库的文档:https://docs.python.org/3/library/unittest.mock.html

    或者,对于Python 2:https://pypi.python.org/pypi/mock

    链接地址: http://www.djcxy.com/p/83621.html

    上一篇: Mock a MySQL database in Python

    下一篇: pure software implementation of ECC over GF(2^n)