我正在使用Tox检查我正在开发的系统在新环境中安装时表现良好(+健全性检查setup.py
文件)。但是,系统使用memcached
服务器,理想情况下我想为每个Tox
运行生成一个新服务器。
在测试运行之前是否有首选方法启动程序(之后关闭它们)或者我是否需要编写自定义运行程序?
修改:测试运动员为py.test
答案 0 :(得分:8)
使用fixture mechanism详细说明flub对使用py.test执行此操作的最佳方法的评论。使用以下内容创建conftest.py文件:
# content of conftest.py
import pytest, subprocess
@pytest.fixture(scope="session", autouse=True)
def startmemcache(request):
proc = subprocess.Popen(...)
request.addfinalizer(proc.kill)
“autouse”标志意味着将为每次测试运行激活此灯具,而无需任何测试参考。但是,实际上,您可能希望将测试的子进程的连接详细信息用于测试,这样您就不必使用魔术端口号。你不会使用“autouse”,而是返回一个夹具对象来连接到memcache,很好地将测试配置封装在一个地方(夹具功能)。有关更多示例,请参阅文档。
答案 1 :(得分:2)
tox
这不是一项真正的任务。我的建议是你在实际的单元测试框架setup
函数/方法中执行此操作(py.test
,nose
,unittests
,...) tox
。
原创海报的评论:
pytest_configure
中的{p>pytest_unconfigure
和conftest.py
是一个 产卵/终止的好地方。
答案 2 :(得分:1)
我建议您使用paver
- http://paver.github.com/paver/ - 用于生成和关闭memcached
服务器或您需要执行的任何其他“其他系统管理任务” setup.py
执行tox
。