使用不同配置运行相同测试
我有一些Python代码,用来抽象数据库和它上的业务逻辑。这段代码已经通过单元测试进行了测试,但现在我需要在不同的数据库(比如MySQL、SQLite等)上测试这段代码。
请问,使用不同配置来运行相同测试的默认方法是什么?我的目标是确保这个抽象层在不同的数据库上都能正常工作。如果有帮助的话,我正在使用nosetests来运行测试,但似乎它缺少“测试套件”的概念。
祝好。
3 个回答
-1
使用 --attrib 插件,然后在命令行中输入
1. nosetests -s -a 'sqlite' 2. nosetests -s -a 'mysql'
-1
Nose支持测试套件,只需要导入并使用unittest.TestSuite。实际上,nose可以很高兴地运行任何使用标准库中的unittest模块编写的测试,所以测试不需要按照nose的风格来写,nose测试运行器也能找到它们。
不过,我觉得你可能需要的不仅仅是测试套件的支持,想要进行你所说的那种测试,还需要更多关于你应用的细节才能真正解决这个问题。
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")
database_tests.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()
这样做会在MySQL和SQLite上运行BaseDB中定义的所有测试。需要注意的是,我把db_fixtures.py命名成这样,以确保它不会被Nose运行。