如何判断nosetest何时以编程方式运行

2024-06-16 13:57:46 发布

您现在位置:Python中文网/ 问答频道 /正文

nosetest是Turbogeras 2.0中的默认测试框架。应用程序具有网站设置.py初始化数据库的模块。我在开发和生产环境中使用mysql,websetup运行良好,但nosetest在内存上使用sqlite,当它试图初始化DB时,会发送一个错误:

TypeError: SQLite Date, Time, and DateTime types only accept Python datetime objects as input.

我已经检测到发生这种情况的时间,并且处于导入状态:

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)

我怎么知道鼻子测试什么时候开始?我试过:

^{pr2}$

以及

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

第一个没有结果,第二个有错误


Tags: csvtoiddatetimedatemodelsqlalchemy错误
2条回答

假设nose正在运行,“nose”顶层模块将被导入。你应该可以用

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

当然,这是一个没有其他证据的进口鼻子。

我不使用TurboGears,但是有没有一个设置或全局设置来指示测试正在运行吗?在大型系统中,运行测试时通常需要进行一些小的更改。在SQLite和MySQL之间切换只是一个例子。

相关问题 更多 >