Meine Probe dict ist:generieren alle Kombinationen aus einem verschachtelten Python-Wörterbuch und entmischen sie
sample_dict = {
'company': {
'employee': {
'name': [
{'explore': ["noname"],
'valid': ["john","tom"],
'boundary': ["aaaaaaaaaa"],
'negative': ["$"]}],
'age': [
{'explore': [200],
'valid': [20,30],
'boundary': [1,99],
'negative': [-1,100]}],
'others':{
'grade':[
{'explore': ["star"],
'valid': ["A","B"],
'boundary': ["C"],
'negative': ["AB"]}]}
}
}}
Es ist ein „Follow-on“ Frage to->Split python dictionary to result in all combinations of values
Ich mag würde eine getrennte Liste von Kombinationen erhalten wie unten
gültige Kombinationen: [erzeugen nur aus gültigen Liste der Daten]
COMPLETE OUTPUT für VALID KATEGORIE:
{'company': {'employee': {'age': 20}, 'name': 'john', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 20}, 'name': 'john', 'others': {'grade': 'B'}}}
{'company': {'employee': {'age': 20}, 'name': 'tom', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 20}, 'name': 'tom', 'others': {'grade': 'B'}}}
{'company': {'employee': {'age': 30}, 'name': 'john', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 30}, 'name': 'john', 'others': {'grade': 'B'}}}
{'company': {'employee': {'age': 30}, 'name': 'tom', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 30}, 'name': 'tom', 'others': {'grade': 'B'}}}
Negative Kombinationen: für NEGATIVE Kategorie
Vollständige Ausgabe erwartet [Hier seine bisschen schwierig, da sollte negativen Kombinationen mit „gültig“ Pool mit atleast nur Wert negativ als auch kombiniert werden]:
=> [Grundsätzlich ausgenommen Kombinationen in dem alle Werten gelten - atleast einen Wert in der Kombination aus Gewährleistung negativer Gruppe ist]
{'company': {'employee': {'age': 20}, 'name': 'john', 'others': {'grade': 'AB'}}}
{'company': {'employee': {'age': -1}, 'name': 'tom', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 100}, 'name': 'john', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 30}, 'name': '$', 'others': {'grade': 'A'}}}
{'company': {'employee': {'age': 30}, 'name': '$', 'others': {'grade': 'AB'}}}
{'company': {'employee': {'age': -1}, 'name': '$', 'others': {'grade': 'AB'}}}
{'company': {'employee': {'age': 100}, 'name': '$', 'others': {'grade': 'AB'}}}
in der obigen Ausgabe, in der ersten Zeile, Grad wird für negativen Wert aB getestet, indem verbleibenden gesamte gültigen halten. Es ist also nicht notwendig, dasselbe mit einem Alter von 30 zu erzeugen, da die Absicht darin besteht, nur negative Mengen zu testen. Wir können die restlichen Parameter mit gültigen Daten versorgen.
Boundary Kombinationen ist ähnlich gültig -> Kombinationen für alle Werte innerhalb der Grenze Pool nur
erkunden: Ähnlich negativ - mit gültigem Pool mischen und immer atleast einen Wert in allen Kombinationen erkunden.
Beispiel dict - überarbeitete Version
sample_dict2 = {
'company': {
'employee_list': [
{'employee': {'age': [{'boundary': [1,99],
'explore': [200],
'negative': [-1,100],
'valid': [20, 30]}],
'name': [{'boundary': ['aaaaaaaaaa'],
'explore': ['noname'],
'negative': ['$'],
'valid': ['john','tom']}],
'others': {
'grade': [
{'boundary': ['C'],
'explore': ['star'],
'negative': ['AB'],
'valid': ['A','B']},
{'boundary': ['C'],
'explore': ['star'],
'negative': ['AB'],
'valid': ['A','B']}]}}},
{'employee': {'age': [{'boundary': [1, 99],
'explore': [200],
'negative': [],
'valid': [20, 30]}],
'name': [{'boundary': [],
'explore': [],
'negative': ['$'],
'valid': ['john', 'tom']}],
'others': {
'grade': [
{'boundary': ['C'],
'explore': ['star'],
'negative': [],
'valid': ['A', 'B']},
{'boundary': [],
'explore': ['star'],
'negative': ['AB'],
'valid': ['A', 'B']}]}}}
]
}
}
Die sample_dict2 enthält eine Liste von dicts. Hier "Mitarbeiter" ist die gesamte Hierarchie ein Listenelement und auch Blattknoten "Note" ist eine Liste
Auch, außer "gültig" und "Grenze" anderen Datensatz kann leer sein - [] und wir müssen sie auch behandeln .
VALID ZUSAMMEN wird wie sein
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','A']}},{'employee': {'age': 1}, 'name': 'john', 'others': {'grade': ['A','A']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','A']}},{'employee': {'age': 1}, 'name': 'john', 'others': {'grade': ['A','B']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','A']}},{'employee': {'age': 1}, 'name': 'tom', 'others': {'grade': ['A','A']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','A']}},{'employee': {'age': 1}, 'name': 'tom', 'others': {'grade': ['A','B']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','B']}},{'employee': {'age': 1}, 'name': 'john', 'others': {'grade': ['A','A']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','B']}},{'employee': {'age': 1}, 'name': 'john', 'others': {'grade': ['A','B']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','B']}},{'employee': {'age': 1}, 'name': 'tom', 'others': {'grade': ['A','A']}}]}}
{'company': {'employee_list':[{'employee': {'age': 20}, 'name': 'john', 'others': {'grade': ['A','B']}},{'employee': {'age': 1}, 'name': 'tom', 'others': {'grade': ['A','B']}}]}}
sowie Kombinationen von Alter = 30 und name = tom in Mitarbeiter Index 0
Ich verstehe Ihre Anforderungen nicht. Was bedeutet es, dass eine negative Kombination gültige Pools mit mindestens einem negativen Wert kombinieren sollte? Meinst du, dass Kombinationen, die einen Wert in der negativen Klasse enthalten, * genau zwei * Werte aus der negativen Klasse enthalten sollten? Oder dass sie in gerader Zahl sein müssen? Oder etwas anderes? Ich schlage vor, Sie beschreiben genauer Ihre genauen Anforderungen. Darüber hinaus kann es sinnvoll sein, ein * vollständiges * Beispiel für die Ausgabe anzugeben, damit es als Testfall verwendet werden kann. – Bakuriu
Es ist im Grunde für negative Tests. Das heißt, die für die negative Kategorie zu trennenden Kombinationen können auch Werte aus der gültigen Liste von Daten annehmen, aber nicht alle Eingaben können gültig sein, dh mindestens einer der Werte in der bestimmten generierten Kombination sollte negativ sein die vollständige Ausgabe. – Suren
@Bakuriu aktualisiert die Frage mit vollständiger Ausgabe und mehr Klarstellung. Bitte lassen Sie mich wissen, wenn mir noch etwas fehlt. Danke – Suren