我们编写了一个python测试脚本来自动化一些任务,包括添加服务帐户和资源组。2在执行时,我收到一条错误消息:
- '未绑定本地错误:赋值前引用了局部变量“sa_clientId”*
我读了一些stackoverflow线程,它们谈到了与全局变量相关的问题。但是sa_clientId不是一个全局变量。所以我不明白我做错了什么。
任何帮助将不胜感激。请找到下面的函数,触发崩溃的执行。
def create_service_account(bearer_token, parent_rg_id, rg_id, rg_name, roles):
global sa_db
print('>> Creating service account for rg %s with rg_id %s' % (rg_name, rg_id))
print(type(roles), len(roles))
print(roles)
print(parent_rg_id)
url = "https://<snipped>/api/controlplane/" + parent_rg_id + "/serviceaccounts"
payload = json.dumps({
"name": "Client %s - %s" % (rg_name, str(roles)),
"resourceGroups": [
{
"resourceGroupId": rg_id,
"roles": roles
}
]
})
headers = {
'api-version': '1.1',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + bearer_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if response.text != '':
sa_infos = json.loads(response.text)
sa_clientSecret = sa_infos['secret']['value']
sa_clientId = sa_infos['clientId']
sa_id = sa_infos['id']
sa_name = sa_infos['name']
sa_rg = sa_infos['resourceGroups']
sa_db[sa_clientId] = {
'secret': sa_clientSecret,
'id': sa_id,
'name': sa_name,
'resourceGroups': sa_rg
}
return sa_clientId
1条答案
按热度按时间31moq8wy1#
在上面的代码中,您只在“clientId”通过“if response.text!='':“时才分配“clientId”,通过这样做并返回“clientId”,它将在分配之前被引用,除非它通过if语句。尝试添加一个默认值状态。
前
如果它没有接收到任何音频,则它将通过异常,但仍被分配值"“。如果没有该值,它也将返回”UnboundLocalError:赋值前引用了局部变量'sa_clientId'