4

我有一些 Python 代码抽象了数据库和上面的业务逻辑。单元测试已经涵盖了此代码,但现在我需要针对不同的数据库(MySQL、SQLite 等)测试此代码

通过不同配置的同一组测试的默认模式是什么?我的目标是确保抽象层独立于底层数据库按预期工作。如果这有帮助,我正在使用鼻子测试来运行测试,但它似乎缺乏套件测试概念

最好的祝福。

4

3 回答 3

1

我喜欢在有几个类似测试的情况下使用测试夹具。在 Python 中,在 Nose 下,我通常将其实现为由其他模块导入的通用测试模块。例如,我可能会使用以下文件结构:

db_fixtures.py:

import unittest

class BaseDB(unittest.TestCase):
  def testFirstOperation(self):
    self.db.query("Foo")
  def testSecondOperation(self):
    self.db.query("Blah")      

数据库测试.py:

import db_fixtures

class SQliteTest(db_fixtures.BaseDB):
  def setUp(self):
    self.db = createSqliteconnection()

class MySQLTest(db_fixtures.BaseDB):
  def setUp(self):
    self.db = createMySQLconnection()

This will run all tests defined in BaseDB on both MySQL and SQlite. Note that I named db_fixtures.py in such a way that it won't be run by Nose.

于 2013-03-06T01:14:17.977 回答
-1

Nose 支持仅导入和使用 unittest.TestSuite 的测试套件。事实上,nose 会很高兴地运行使用标准库的 unittest 模块编写的任何 tesys,因此 tesys 不需要以鼻子样式编写以被鼻子测试运行器发现。

但是,我怀疑您需要更多的测试套件支持来进行您正在谈论的那种测试,但是需要更多关于您的应用程序的详细信息才能真正解决这个问题。

于 2011-02-24T13:16:07.373 回答
-1

使用 --attrib 插件,并在命令行中

1.nosetests -s -a 'sqlite'
2.nosetests -s -a 'mysql'
于 2011-06-29T02:19:13.027 回答