我即将完成一个涉及Python的大学项目,我的团队有一个测试用例短缺。我们需要更多,具体而言,我们需要一些数据库测试用例。然而,这是嘲弄的地方。我们需要一个特定于Python的库来模拟数据库,因此测试用例不使用SQL或访问真实数据库。我们正在使用MySQL作为真正的数据库。我遇到一个易于使用的Python数据库模拟库有点困难。什么是最适合我们的测试用例?或者,有没有更好的方法在Python中测试数据库而不触及它?我非常感谢你的建议。谢谢: - )
答案 0 :(得分:6)
答案 1 :(得分:4)
如果您使用的是django,灯具可以解决您的问题。我真的不知道你是什么意思通过模拟库,但它们允许你用测试数据填充你的数据库。然后,您可以与TestCase进行交互。每个TestCase后销毁测试数据。 http://docs.djangoproject.com/en/dev/howto/initial-data/
答案 2 :(得分:2)
我个人倾向于编写单元测试以使用单独的测试数据库,因此我通常会有一个testing.conf
文件,其中包含与常规development.conf
和/或{{1不同的数据库信息文件。这使我的单元测试更加类似于生产中执行代码的实际条件。
例如,我最近开发了一个Python库,用户调用模块级production.conf
函数,传入配置文件的名称。然后initialize
函数使用ConfigParser模块来解析配置文件,启动它需要运行的任何线程,创建urllib处理程序,建立数据库连接等。
这种设置允许简单的单元测试,因为您可以在执行之前简单地将单元测试调用到initialize
函数中,并传入指向测试数据库的配置。
答案 3 :(得分:1)
基于一些评论,看来你正在使用Django。如果是这种情况,那么您将需要使用数据夹具将测试数据填充到测试数据库中。关于这个主题的一个很好的资源是Karen M. Tracey的书Django 1.1 Testing and Debugging。
以下是您想要做的事情的总结:
使用以下方法转储实时数据库中的数据:
python manage.py dumpdata {django-app} --indent 4 >test_data.json
将{django-app}
替换为您的Django应用程序的名称。
将test_data.json
放在目录{django-app}/fixtures
指定您的测试用例应使用以下方式加载灯具数据:
Class MyTest(TestCase):
fixtures = ['test_data.json']
def testThisCode(self):
# Test code
有关详细信息,除了Karen M. Tracey's book之外,您可以查看Django关于Fixture Loading的文档
答案 4 :(得分:0)
这里有一些关于使用Mock进行数据库测试的具体示例: