繁体   English   中英

用鼻子/夹具/网络测试测试Cherrypy(amidoinitrite)

[英]Testing cherrypy with nose/fixture/webtest (amidoinitrite)

我正在开发CherryPy应用程序,我想为此编写一些自动化测试。 我选择使用鼻子测试。 该应用程序使用sqlalchemy作为数据库后端,因此我需要使用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中进行测试,这一切似乎都很复杂。 我想知道我是否按照作者的意图使用了提到的软件包,并且它是否过于复杂。

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

实际上,我建议在一个方面增加一些复杂性:我认为您会发现在每个子测试类中建立一个新的数据库确实很慢。 至少每次运行至少一次设置所有表,而不是每个类一次,这是更普遍的做法。 然后,您要么让每个测试方法为自己创建所需的所有数据,和/或您在事务中运行每个测试用例,然后将它们全部回滚到finally:块中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM