python - 使用不同的配置运行相同的测试

标签 python database unit-testing nosetests

我有一些 Python 代码抽象了数据库及其上的业务逻辑。此代码已包含在单元测试中,但现在我需要针对不同的数据库(MySQL、SQLite 等...)测试此代码

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

最好的问候。

最佳答案

我喜欢使用 test fixtures 对于我有几个类似测试的情况。在 Python 中,在 Nose 下,我通常将其实现为其他模块导入的公共(public)测试模块。例如,我可能会使用以下文件结构:

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()

这将在 MySQL 和 SQlite 上运行 BaseDB 中定义的所有测试。请注意,我以 Nose 不会运行的方式命名 db_fixtures.py。

关于python - 使用不同的配置运行相同的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104276/

相关文章:

python - ssl.SSLZeroReturnError : TLS/SSL connection has been closed (EOF) (_ssl. c:661)

python - 如何展平 Pandas DataFrameGroupBy

mysql - 多登录区

sql-server - 多位数据库字段

database - 在 PL/SQL 中使用 "select *"作为游标是否被认为是糟糕的编程?

Python 正则表达式替换反斜杠或前斜杠

带有表格的 Python 打印列表

java - JUnit - assertFalse 不排除 == 运算符?

android - bundle 放置和获取单元测试

angular - fakeAsync 的 tick() 和 done() 在 angular2 测试中有什么区别?