更改主机名以进行持续集成测试

Mic*_* WS 2 python nose

我有一些功能仅在特定的物理位置运行,并且通过主机名来识别。这是在调用 socket.gethostname() 的 cython 模块中生成的。

无论如何,使用 socket.gethostname() 进行测试是否有与运行测试的主机不同的数据?

Lou*_*uis 5

您可以使用该mock模块

import mock
import socket

with mock.patch("socket.gethostname", return_value="completely fake"):
    print socket.gethostname()
Run Code Online (Sandbox Code Playgroud)

这打印completely fakestdout.

mock与 Python 3.3 及更高版本捆绑在一起(如unittest.mock),并可作为 Python 2.6.x 及更高版本的向后移植。上面的代码在 Python 2.7.x 中按原样运行。