如果值采用列表列表格式,如何访问字典中的各个值?

How to access the individual values form a dictionary, if the values are in list of lists format?

我已经在 json 中为我的测试功能编写了一个配置文件。配置文件如下所示:

{

    "Chrome_executable_path": "C:\Users\AIGHOSH\PycharmProjects\chromedriver.exe",
    "File_locations": [["C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupAge8277.csv"],
        ["C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupAge8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupArea8277.csv"],
        ["C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupAge8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupArea8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupEthnic8277.csv"],
        ["C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupAge8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupArea8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupEthnic8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupSex8277.csv"],
        ["C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupAge8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupArea8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupEthnic8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupSex8277.csv", "C:\Users\AIGHOSH\Desktop\DQ_DATA\DimenLookupYear8277.csv"]
    ],
    "Null_values": [["_"], ["@"], ["<>"], ["-"], ["#"]],
    "Operation": [["None"], ["Append"], ["Merge"], ["Append then Merge"]],
    "weights": [
        {
        "completeness": "0.2",
        "timeliness": "0.2",
        "uniqueness": "0.2",
        "validity": "0.2",
        "integrity": "0.2"
    },
        {
    "completeness": "0.1",
    "timeliness": "0.3",
    "uniqueness": "0.2",
    "validity": "0.2",
    "integrity": "0.2"
    },
        {
    "completeness": "0.2",
    "timeliness": "0.2",
    "uniqueness": "0.3",
    "validity": "0.1",
    "integrity": "0.2"
    },
        {
    "completeness": "0.2",
    "timeliness": "0.2",
    "uniqueness": "0.1",
    "validity": "0.4",
    "integrity": "0.1"
    },
        {
    "completeness": "0.1",
    "timeliness": "0.1",
    "uniqueness": "0.4",
    "validity": "0.2",
    "integrity": "0.2"
    }
    ]
}

现在我希望 value[0] 成为我的第一个测试用例参数,然后 v[1] 成为我的第二个测试用例参数。

我的测试用例函数:

   #for the fist element of the values(eg: v[0])
   def test_case(self): 
     self.dqopenPage = DqOpenPage(self.driver)    
     self.dqopenPage.drop(filess = config["File_locations"]) #should take the first list with only 1 file
     self.dqopenPage.df_operation(operation=config["Operations"]) #should take the "None"
     self.dqopenPage.define_null_value(null = config["Null_values"])#should take "_"

那么如何使用 for 循环和 运行 测试用例函数获取所有对应值(如 v[1]、v[2] 等)的值

您可以像这样访问这里的各个值,

print(config["File_locations"][0][0])
print(config["Null_values"][0][0])
print(config["Operation"][0][0])

如果你想通过循环访问单个值,你可以这样做

这是遍历文件位置的方法。

for file in config["File_locations"]:
    for index in range(len(file)):
        print(file[index])

这是循环 Null 值或操作的方法,

for value in config["Null_values"]:
    print(value[0])

我不是很明白你想遍历哪些列表,但我希望这对你有帮助。

解码json

#cfg = (your config file)
jcfg=json.loads(cfg)

测试所有 index-0 参数,然后所有 index-1,...

for testno in range(5):
    print(f'\t\t\tindex {testno}')
    for floc in jcfg['File_locations'][testno]:
        nv = jcfg['Null_values'][testno]
        op = jcfg['Operation'][testno]
        w = jcfg["weights"][testno]
        print(f'testing for {floc}, {nullv}, {op}, {w}')

你得到了 testno = 0 的 1 次测试(flocnv = "_"op = None),然后是 testno = 1 的 2 次测试,依此类推

使用每个参数排列进行测试

#jcfg['File_locations'] = (just one list with all your files)

for i_floc, i_nv, i_op, i_w in itertools.permutations(range(5), 4):
        floc = jcfg['File_locations'][i_floc]
        nv = jcfg['Null_values'][i_nv]
        op = jcfg['Operation'][i_op]
        w = jcfg['weights'][i_w]
        print(f'testing for {floc}, {nullv}, {op}, {w}')

你获得了全部 5 个!参数的可能排列

注意:为了测试这一点,我在您的“File_locations”中将 \ 替换为 / 以避免转义问题。