用鼻子/夹具/ webtest测试cherrypy(amidoinitrite)

时间:2011-01-26 15:25:25

标签: python cherrypy nose webtest fixture

我正在开发一个CherryPy应用程序,我想为它编写一些自动化测试。我选择使用nosetests。该应用程序使用sqlalchemy作为db后端,因此我需要使用fixture包来提供固定数据集。我也想做网络测试。以下是我将它们放在一起的方式:

我在文件中有一个辅助函数init_model(test = False),其中创建了所有模型。它连接到生产或测试(如果test == True或cherrypy.request.app.test == True)数据库并调用create_all

然后我为这样的测试创建了一个基类:

class BaseTest(DataTestCase):
def __init__(self):
    init_model(True)
    application.test = True
    self.app = TestApp(application)
    self.fixture = SQLAlchemyFixture(env = models, engine = meta.engine, style = NamedDataStyle())
    self.datasets = (
        # all the datasets go here
        )

现在我通过创建BaseTest的子类并调用self.app.some_method()

来进行测试

这是我第一次在python中进行测试,所有这些看起来都非常复杂。我想知道我是否正在使用提到的包作为他们的作者的意图,如果它不是过于复杂。

1 个答案:

答案 0 :(得分:1)

对于任何规模的系统来说,这看起来都像普通的测试胶。换句话说,它并不过分复杂。

事实上,我建议在一个方面稍微复杂一些:我认为你会发现在每个子测试类中设置一个新的数据库非常慢。更常见的是,每次运行至少设置一次所有表,而不是每个类一次。然后,您可以让每个测试方法创建它所需的所有数据,和/或在事务中运行每个测试用例并将其全部回滚到finally:块中。