我正在传递这4个字典,其中包含不同类型的测试用例。
1. Manual-Smoke ==> d1
2. Manual- Regression ==> d2
3. Automated-Smoke ==> d3
4. Automated-Regression ==> d4
现在我将4个词典列表传递给一个函数 给我数数。 我的问题是得到所有“手动”案件的数量& “自动化”案件
我有一个名单input_list =[d1,d2,d3,d4]
。现在,我必须执行6个场景:
1. d1 && d2
2. d3 && d4
3. d1
4. d2
5. d3
6. d4
因此,如果出现上述任何一种情况,那么我将做一些事情。所以,我使用的代码涵盖了4个场景,但从未涵盖前两个
for d in dict:
if d ==d1 and d==d2:
print 'Scenario:1 ==> d1 && d2'
elif d==d3 and d==d4:
print 'Scenario:2 ==> d3 && d4'
else:
if d==d1:
print 'Scnario 3: ==> d1'
elif d==d2:
print 'Scnario 4: ==> d2'
elif d==d3:
print 'Scnario 5: ==> d3'
elif d==d4:
print 'Scnario 6: ==> d4'
我知道我的循环永远不属于Scenario 1
& Scenario 2
条件,因为我的列表不包含(d1,d2) (d3,d4)
。
你们可以帮助我改进代码吗?
答案 0 :(得分:1)
我们正在迭代list
类型的数据结构。所以给变量赋予有意义的名称。我给了input_list =["d1", "d2", "d3", "d4"]
当我们迭代list
即input_list
变量时,列表中的一个项目将被迭代。所以我们不能做if d ==d1 and d==d2:
,因为我们将一个项目与两个不同的条件进行比较,这两个条件总是假的。
我从你的代码中理解的是,我们有一个列表,根据一些硬编码条件,我们必须执行一些场景。
<强>演示:强>
input_list =["d1", "d2", "d3", "d4"]
if "d1" in input_list and "d2" in input_list:
print 'Scenario:1 ==> d1 && d2'
elif "d3" in input_list and "d4" in input_list:
print 'Scenario:2 ==> d3 && d4'
elif "d1" in input_list:
print 'Scnario 3: ==> d1'
elif "d2" in input_list:
print 'Scnario 4: ==> d2'
elif "d3" in input_list:
print 'Scnario 5: ==> d3'
elif "d4" in input_list:
print 'Scnario 6: ==> d4'
假设列表包含字典项。
<强>演示强>
d1 = {}
d2 = {}
d3 = {}
d4 = {}
input_list =[d1, d2, d3, d4]
for item in input_list:
if "d1" in item and "d2" in item:
print 'Scenario:1 ==> d1 && d2'
elif "d3" in item and "d4" in item:
print 'Scenario:2 ==> d3 && d4'
elif "d1" in item:
print 'Scnario 3: ==> d1'
elif "d2" in item:
print 'Scnario 4: ==> d2'
elif "d3" in item:
print 'Scnario 5: ==> d3'
elif "d4" in item:
print 'Scnario 6: ==> d4'
备注:强>
dict
是Python中的关键字。答案 1 :(得分:1)
以下代码
for d in [1, 2, 3, 4]:
print d
打印
1
2
3
4
因此,每次循环变量d
只有一个值。它不能同时是1
和2
。
但这是你的一项测试的守卫。即你测试d==1 and d==2
被修改以适合我的例子,这将永远不会是这样。
话虽如此,您的代码怎么能改进?看一下下面的代码
1 in [2, 3]
这将打印
False
我们可以从中了解到in
可以确定元素是否包含在数组中。因此,不是循环遍历数组,而是尝试检查不同的情况。因此,您的复合测试可能看起来像1 in dict and 2 in dict
。
答案 2 :(得分:0)
scenario_map={}
for d in dict :
scenario_map[d] = 1
if scenario_map[d1] == 1 and scenario_map[d2] == 1:
#execute scenario 1
elif scenario_map[d3] == 1 and scenario_map[d4] == 1 :
#execute scenario 2
elif scenario_map[d1] == 1 :
#execute scenario 3
elif scenario_map[d2] == 1 :
#execute scenario 4
elif scenario_map[d3] == 1 :
#execute scenario 5
elif scenario_map[d4] == 1 :
#execute scenario 6
else :
#No scenario to execute