首页 > 解决方案 > 表现 BDD 测试 - 在测试结束时结束线程/节点

问题描述

我使用 threading 模块创建了一个客户端和服务器,它们在构建时在单独的线程上运行。

我正在尝试运行行为 BDD 测试,但在测试结束时我很难正确结束线程。

我目前的解决方案是

@given(u'Client and server are ran concurrently')
def step_imp(context):
    client = cl.Client()
    server= srv.Server()
    server.start()
    client.start()
    
    # End client-server after some time
    time.sleep(5)
    server.terminate()
    client.terminate()

@when(Something happens')
def step_imp(context):
  #some code

@then(u'Something happens')
def step_imp(context):
  #some code

理想情况下,我可以将最终客户端-服务器代码移动到它自己的然后阻塞,如下所示:

@then(u'The client-server dies after some time.')
def step_imp(context):
    time.sleep(5)
    server.terminate()
    client.terminate()

但我发现这样做收效甚微。有什么建议吗?

标签: pythonmultithreadingbddpython-behave

解决方案


推荐阅读