我想为我的bbd场景创建“actor”,有没有简单的方法在使用behave用Python编写的测试中使用“actors”?我发现Pykka是一个演员模型的Python实现,但我如何连接Pykka?
答案 0 :(得分:0)
我建议使用Python的Thespian actor而不是Pykka,以获得更完整和功能更全面的实现(http://thespianpy.com,免责声明:我是该软件包的作者)。
使用Thespian,您可以进行如下测试:
Scenario something
Given a running actor system
...
Then it completes successfully
在您的实施中
@given('a running actor system')
def step_impl(context):
ActorSystem('simpleSystemBase')
@then('it completes successfully')
def step_impl(context):
asys = ActorSystem()
asys.createActor(TestActor)
response = asys.ask(testActor, 'test data', 5)
assert response == 'data is valid'
class TestActor(Actor):
def receieveMessage(self, msg, sender):
if msg == 'test data':
self.send(sender, 'data is valid')
def after_all(context):
ActorSystem().shutdown()
这将允许单个测试访问actor,您还可以使用其他actor系统库增加并行性:
@given('a running multi-process actor system')
def step_impl(context):
ActorSystem('multiprocTCPBase')
不幸的是,基于对行为的快速回顾,核心运行器不可扩展,因此行为本身可能会连续运行您的测试;如果有一种方法可以在一个单独的actor中运行每个测试,这将进一步增加并发性,超出当前支持的行为。