从nose向单元测试传递设置信息

4 投票
1 回答
1788 浏览
提问于 2025-04-17 04:50

我正在使用nose来运行我的单元测试。

我有一些.ini文件,比如production.ini、development.ini和local.ini。最后,我还有一个test.ini文件,内容如下:

[app:main]
use = config:local.ini

# Add additional test specific configuration options as necessary.
sqlalchemy.url = sqlite:///%(here)s/tests.db

在我的测试类中,我想像在应用服务器代码中那样设置数据库。大概是这样的:

engine = engine_from_config(settings)
initialize_sql(engine)

dbfixture = SQLAlchemyFixture(
    env=model,
    engine=engine,
    style=NamedDataStyle()
)

nose是怎么把“设置”传递给我的测试代码的呢?

我一直在阅读以下链接以获取一些指导,但我还是没能把所有的内容串联起来。 http://farmdev.com/projects/fixture/using-fixture-with-pylons.html

非常感谢!

1 个回答

7

你需要自己从INI文件中解析设置。以前,Pylons会自动为你处理这件事,只需硬编码加载“test.ini”文件。你有两个选择:1)直接通过 settings = paste.deploy.appconfig('test.ini') 加载INI设置;或者 2)自己加载实际的WSGI应用程序,比如如果你想通过WebTest使用它,可以用 app = pyramid.paster.get_app('test.ini'),这样会解析INI文件并返回一个实际的WSGI应用。不过,遗憾的是,这种方法不能直接访问INI文件,它会自动将设置传递给你应用的启动函数 main(global_conf, **settings)

你可能还会觉得 Pyramid文档 关于功能测试的内容很有用。

撰写回答