我有一些 Python 代码抽象了数据库和上面的业务逻辑。单元测试已经涵盖了此代码,但现在我需要针对不同的数据库(MySQL、SQLite 等)测试此代码
通过不同配置的同一组测试的默认模式是什么?我的目标是确保抽象层独立于底层数据库按预期工作。如果这有帮助,我正在使用鼻子测试来运行测试,但它似乎缺乏套件测试概念
最好的祝福。
我有一些 Python 代码抽象了数据库和上面的业务逻辑。单元测试已经涵盖了此代码,但现在我需要针对不同的数据库(MySQL、SQLite 等)测试此代码
通过不同配置的同一组测试的默认模式是什么?我的目标是确保抽象层独立于底层数据库按预期工作。如果这有帮助,我正在使用鼻子测试来运行测试,但它似乎缺乏套件测试概念
最好的祝福。
我喜欢在有几个类似测试的情况下使用测试夹具。在 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.
Nose 支持仅导入和使用 unittest.TestSuite 的测试套件。事实上,nose 会很高兴地运行使用标准库的 unittest 模块编写的任何 tesys,因此 tesys 不需要以鼻子样式编写以被鼻子测试运行器发现。
但是,我怀疑您需要更多的测试套件支持来进行您正在谈论的那种测试,但是需要更多关于您的应用程序的详细信息才能真正解决这个问题。
使用 --attrib 插件,并在命令行中
1.nosetests -s -a 'sqlite' 2.nosetests -s -a 'mysql'