Как определить, когда тестирование носа выполняется программно - PullRequest
0 голосов
/ 30 сентября 2009

nosetest является тестовой средой по умолчанию в Turbogeras 2.0. В приложении есть модуль websetup.py, который инициализирует базу данных. Я использую mysql для своей среды разработки и производства, и websetup работает нормально, но nosetest использует sqlite в памяти и при попытке инициализации БД выдает ошибку:

TypeError: SQLite Date, Time и Типы DateTime принимают только Python объекты даты и времени в качестве входных данных.

Я обнаружил, когда это происходит, и находится в базе данных импорта:

csvreader = csv.reader(open('res/products.csv'), delimiter=",", quotechar="'")
for row in csvreader:
    p = model.Product(row[1], row[2], row[3], row[4] + ".jpg")
    # Even tried to convert the date to a sqlalchemy type
    # need to put a conditional here, when testing I don't care this date
    import sqlalchemy
    dateadded = sqlalchemy.types.DateTime(row[5])
    p.dateAdded = dateadded
    p.brand_id = row[6]
    p.code = row[3]

    ccat = model.DBSession.query(model.Category)\
        .filter(model.Category.id==int(row[8]) + 3).one()

    p.categories.append(ccat)

    p.normalPrice = row[9]
    p.specialPrice = row[10]
    p.discountPrice = row[11]

    model.DBSession.add(p)

Как узнать, когда проходит тест на нос? Я попробовал:

if globals().has_key('ModelTest'):

и

if vars().has_key('ModelTest'):

Первый без результатов, второй с ошибкой

Ответы [ 2 ]

0 голосов
/ 02 октября 2009

Предположительно, если работает нос, модуль верхнего уровня 'нос' будет импортирован. Вы должны быть в состоянии проверить это с

if 'nose' in sys.modules:
    print "Nose is running, or at least has been imported!"
    #or whatever you need to do if nose is running

Конечно, это не надежный тест, который предполагает, что нет другой причины, по которой нос был бы импортирован.

0 голосов
/ 30 сентября 2009

Я не использую TurboGears, но нет ли где-нибудь параметра или глобального параметра, указывающего, что тесты запущены? В больших системах часто происходят небольшие изменения, которые необходимо внести при выполнении тестов. Переключение между SQLite и MySQL является лишь одним примером.

...