我对AWS Stack中的各个组件进行了很多单元测试,但我想跨多个异步系统进行功能测试。
这些系统由于在其上操作的队列而异步。一个应用程序可能会发生一个事件,并在不同队列中生成多个队列项目,以供下游处理。最终,我想在系统的一端放置一个事件,并在系统的另一端查看结果。我已经手动执行此操作,但是我要测试很多变体,并且每个功能版本的全系统回归测试都变得难以管理。
一个工作单元通常需要几分钟的时间才能通过所有队列,流和流程,并在另一端解决。
我确实知道如何我可以测试类似的东西。但这不是很漂亮。
def test_event():
event = { 'user_id': 1, 'action': 'like_post', 'data': {} }
put_event_to_queue(event)
retry_count = 0
success = False
while retry_count < 3 and not success:
time.sleep(60)
if (is_action_in_rds()
and is_action_in_elasticsearch()
and is_action_in_athena()):
success = True
retry_count += 1
self.assertTrue(success)
我的方法是将某些内容放入队列中进行处理,并检查经过一定时间后结果是否存在。
这是标准方法吗?是否有一个最适合此类测试的测试框架?