Запуск одних и тех же тестов с разными конфигурациями - PullRequest
3 голосов
/ 24 февраля 2011

У меня есть некоторый код Python, абстрагирующий базу данных и бизнес-логику. Этот код уже охвачен модульными тестами, но теперь мне нужно проверить этот код на разных БД (MySQL, SQLite и т. Д.)

Каков шаблон по умолчанию для прохождения одного и того же набора тестов с различными конфигурациями? Моя цель - убедиться, что этот уровень абстракции работает, как и ожидалось, независимо от базовой базы данных. Если это могло бы помочь, я использую тесты носа для запуска тестов, но кажется, что в нем отсутствует концепция Suite Test

С уважением.

Ответы [ 3 ]

1 голос
/ 06 марта 2013

Мне нравится использовать тестовые приборы для ситуаций, в которых у меня есть несколько подобных тестов.В 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()

Это запустит все тесты, определенные вBaseDB на MySQL и SQlite.Обратите внимание, что я назвал db_fixtures.py таким образом, чтобы он не запускался Nose.

0 голосов
/ 29 июня 2011

используйте плагин --attrib и в командной строке

1. nosetests -s -a 'sqlite'
2. nosetests -s -a 'mysql'
0 голосов
/ 24 февраля 2011

Nose поддерживает тестовые наборы, просто импортируйте и используйте unittest.TestSuite.Фактически, переносчик с радостью выполнит любые тесты, написанные с использованием стандартного модуля unittest lib, поэтому тесты не обязательно должны быть написаны в стиле носа, чтобы их обнаружил исполнитель тестов носа.

Тем не менее, я подозреваю, что вам нужно больше, чем поддержка набора тестов, для того типа тестирования, о котором вы говорите, но для его решения необходимо больше подробностей о вашем приложении.

...