我正在使用Tox检查我正在开发的系统在安装在新环境中时是否运行良好(+ 完整性检查setup.py
文件)。但是,系统使用memcached
服务器,理想情况下,我希望每次Tox
运行都生成一个新服务器。
在运行测试之前启动程序(然后关闭它们)是否有首选方法,或者我需要编写自定义运行程序?
编辑:测试运行器是py.test
我正在使用Tox检查我正在开发的系统在安装在新环境中时是否运行良好(+ 完整性检查setup.py
文件)。但是,系统使用memcached
服务器,理想情况下,我希望每次Tox
运行都生成一个新服务器。
在运行测试之前启动程序(然后关闭它们)是否有首选方法,或者我需要编写自定义运行程序?
编辑:测试运行器是py.test
详细说明flub对使用py.test的最佳方法的评论,使用它的fixture机制。使用以下内容创建一个 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”标志意味着每次测试运行都会激活这个fixture,而不需要来自测试的任何引用。然而,在实践中,您可能希望将子进程的连接详细信息提供给您的测试,这样您就不必使用魔术端口号。你不会使用“autouse”,而是返回一个fixture对象来连接到memcache,很好地将测试配置封装在一个地方(fixture函数)。有关更多示例,请参阅文档。
这不是真正的任务tox
。我的建议是您在使用setup
的实际单元测试框架(、、、...)的功能/方法中py.test
执行nose
此unittests
操作tox
。
原海报评论:
pytest_configure
并且pytest_unconfigure
是conftest.py
产生/终止的好地方。
我建议您使用paver
- http://paver.github.com/paver/ - 来启动和关闭服务器或在执行bymemcached
期间需要执行的任何其他“杂项系统管理任务” 。setup.py
tox