Python / tox,在测试之前启动一个进程,完成后关闭它

时间:2012-11-13 10:27:47

标签: python integration-testing pytest tox

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

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

修改:测试运动员为py.test

3 个答案:

答案 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.testnoseunittests,...) tox

原创海报的评论:

  pytest_configure中的{p> pytest_unconfigureconftest.py是一个   产卵/终止的好地方。

答案 2 :(得分:1)

我建议您使用paver - http://paver.github.com/paver/ - 用于生成和关闭memcached服务器或您需要执行的任何其他“其他系统管理任务” setup.py执行tox