python assert

def wait_operator_ready():
    csv = "kubernetes/{}/apis/operators.coreos.com/v1alpha1/namespaces/{}/clusterserviceversions".format(
        settings.REGION_NAME, cluster_info['namespace'])
    params = {"fieldSelector": "metadata.name={}".format(cluster_info['version'])}
    status = prepare.get_status(csv, 'items.0.status.phase', 'Succeeded', params=params)
    assert status, "devops tools operator 安装失败"

如果assert是一个方法的最后一步 此时assert完 就等于退出

如果assert 不在最后一个步骤 又希望assert成功后 退出 需要加上return

def wait_tool_integrated(tool_type, tool_name):
    # tool-type 工具链的工具类型
    # jenkins=jenkinses
    # sonarqube=codequalitytool
    # harbor=imageregistry
    # gitlab=codereposervice
    # 等待工具集成完成
    for i in range(100):
        tool_url = "devops/api/v1/{}/{}".format(tool_type, tool_name)
        tool = prepare.send(method='get', path=tool_url)
        if tool.status_code == 200:  # 说明已经集成
            installed = prepare.get_status(tool_url, 'status.phase', 'Ready', expect_cnt=100)
            assert installed, "{}没有自动集成到平台上".format(tool_name)
            return # 如果不加这个 会发现已经处于ready还在不停的循环
        else:
            sleep(10)
    # 如果超时仍然没有集成,就没有必要继续往下继续了
    assert False, "{}没有自动集成到平台上".format(tool_name)
上一篇:C/C++ assert()函数用法总结


下一篇:Mock 框架 Moq 的使用