下面这段 json 为用例数据,譬如 我要执行用例 1,我要先执行用例 2,执行用例 2 前提下,要先执行用例 3 4 5,执行用例 5 就先执行 6 ,总体顺序就是 先执行依赖用例列表 [3,4,6,5,2 ],最后在执行用例 1。

问题:如何实现输出依赖用例列表?如上面例子

[
    {
        "api_id": 1,
        "name": "用例1",
        "step": [
            2
        ]
    },
{
        "api_id": 2,
        "name": "用例2",
        "step": [
            3,
            4,
            5
        ]
    },
{
        "api_id": 3,
        "name": "用例3",
        "step": null
    },
{
        "api_id": 4,
        "name": "用例4",
        "step": null
    },{
        "api_id": 5,
        "name": "用例5",
        "step":[6]
    },
{
        "api_id": 6,
        "name": "用例6",
        "step": null
    }
]

目前代码实现,不确定是否有隐藏 bug

class Cases(object):

    @classmethod
    def get_steps(cls, case_data, steps, steps_list):
        steps = list(reversed(steps))
        for i in steps:
            for index, case in enumerate(case_data):
                if case['api_id'] == i:
                    steps_list.insert(0, case_data[index])
                    if case['step'] is not None:
                        cls.get_steps(case_data, case['step'], steps_list)
        return steps_list

steps = [2]
steps_data = Cases.get_steps(data,steps,[])
print(json.dumps(steps_data,ensure_ascii=False))      


↙↙↙阅读原文可查看相关链接,并与作者交流