我的情况是这样的:
- 我有一个基于 windows 的服务器程序和一个基于 linux 的客户端。
- 我对在本地 linux 机器上运行并且需要在本地 linux 机器上运行的 linux 客户端进行了许多测试
- 我需要从 windows 服务器机器运行一些代码,这将向 linux 客户端发送一些消息。然后,应在 linux 客户端机器上执行测试,以验证这些消息的效果
所以一个典型的测试用例看起来像这样,在 windows 主机上运行:
test_example_message(self):
# has to be executed locally on windows server
send_message(EXAMPLE, hosts)
# has to be executed locally on linux clients
for host in hosts:
verify_message_effect(EXAMPLE, host)
我发现 pytest-xdist 以某种方式能够做到这一点。
关于如何使用它有什么好的教程或代码示例吗?
最佳答案
我的最终设计使用 ssh 和多处理而不是 xdist(在 execute_tc() 函数中):
import multiprocessing
import test_functions
def test_example_message(self):
"""Example test case"""
# to get IPs, usernames, passwords, other required data
config = get_test_config('example_message')
# will take care of threading and executing parts
result_dict = execute_tc(config)
# to fail or not to fail. take care of proper reporting
process_results(result_dict)
def execute_tc(config):
"""Execute test code in parallel"""
# create shared results dictionary
manager = multiprocessing.Manager()
result_dict = manager.dict({})
# create processes
processes = []
for func, platform, args in config:
function = getattr(test_functions, func)
worker = multiprocessing.Process(target=function, args=[result_dict, platform, args])
worker.daemon = True
worker.start()
processes.append(worker)
for process in processes:
process.join()
return result_dict
关于python - 从 Windows 主机在远程 Linux 机器上运行部分 Python 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32089605/