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

change hostname for continuous integration testing

我有一些功能只在特定的物理位置运行并且通过主机名识别。这是在调用 socket.gethostname().

的 cython 模块中生成的

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

您可以使用 mock module:

import mock
import socket

with mock.patch("socket.gethostname", return_value="completely fake"):
    print socket.gethostname()

Thsi 在 stdout 上打印 completely fake

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