6

我正在使用Tox检查我正在开发的系统在安装在新环境中时是否运行良好(+ 完整性检查setup.py文件)。但是,系统使用memcached服务器,理想情况下,我希望每次Tox运行都生成一个新服务器。

在运行测试之前启动程序(然后关闭它们)是否有首选方法,或者我需要编写自定义运行程序?

编辑:测试运行器是py.test

4

3 回答 3

10

详细说明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函数)。有关更多示例,请参阅文档。

于 2012-11-14T08:35:52.690 回答
2

这不是真正的任务tox。我的建议是您在使用setup的实际单元测试框架(、、、...)的功能/方法中py.test执行noseunittests操作tox

原海报评论:

pytest_configure并且pytest_unconfigureconftest.py产生/终止的好地方。

于 2012-11-13T13:37:15.560 回答
1

我建议您使用paver- http://paver.github.com/paver/ - 来启动和关闭服务器或在执行bymemcached期间需要执行的任何其他“杂项系统管理任务” 。setup.pytox

于 2012-11-13T10:47:32.257 回答