代码之家  ›  专栏  ›  技术社区  ›  Juparave

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

  •  0
  • Juparave  · 技术社区  · 16 年前

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

    类型错误:SQLite日期、时间和 DateTime类型只接受Python datetime对象作为输入。

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

    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 回复  |  直到 16 年前
        1
  •  0
  •   Ned Batchelder    16 年前

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

        2
  •  0
  •   Vinay Sajip    16 年前

    假设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
    

    当然,这不是一个万无一失的测试,它假设没有其他理由可以解释为什么鼻子会被进口。