通过 Python 将动态验收标准插入 Customfield

问题描述

我现在很安静。

我想从我的 sqlite3 数据库中加载一些数据,然后根据这些数据创建一些验收标准并使用这些 acc 更新相应的问题。

我遇到的问题是我不明白我的问题出在哪里关于包含验收标准数据的列表元素的“构建”

我遍历从我的数据库加载的数据以创建一个字符串变量。

for entry in accDict:
    strAcc = (
        strAcc
        + '{"name":'
        + entry["NAME"]
        + ',"checked": False,"Mandatory":'
        + entry["MANDATORY"]
        + ',"option": False,"id":'
        + str(cnt_id)
        + ',"rank": '
        + str(cnt_rank)
        + ",} "
    )
    cnt_id += 1
    cnt_rank += 1

strAcc = "[{" + strAcc + "}]"

接下来我想插入这个字符串并更新相应问题的自定义字段

    new_issue.update(fields={"customfield_11100": [strAcc]})

strAcc 中的代码如下

[{
    {"name":Create Testcases,"Mandatory":True,"id":1,"rank": 0,},{"name":Request Testdata,"id":2,"rank": 1,{"name":Verify Testressources,"id":3,"rank": 2,}]

这意味着完整的插入看起来像这样

new_issue.update(fields={"customfield_11100":[{
    {"name":Create Testcases,}]})

我收到的错误

响应文本 = {"errorMessages":["内部服务器错误"],"errors":{}}

如果我手动创建字符串并将其放置在最后一个代码块中,它可以完美地工作...

解决方法

我认为您在“名称”属性中缺少引号...

此外,我建议您编写实际的 python dicts,而不是 json 字符串,因为它们可以轻松翻译,并提高可读性:

strAcc = []
for entry in accDict:
    strAcc.append({
        "name": entry["NAME"],"checked": False,"mandatory": entry["MANDATORY"],"option": False,"id": str(cnt_id),"rank": str(cnt_rank)
     })
    cnt_id += 1
    cnt_rank += 1

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...