Я пытаюсь создать сценарий тестирования, который будет генерировать каждую возможную перестановку значений в соответствии с несколькими списками.Однако существуют некоторые ограничения на то, какие значения могут быть сопоставлены с другими.До сих пор я придумал следующее:
fieldTypes = ['Text', 'Float', 'Double', 'Short', 'Long', 'Date']
domainTypes = ['Coded', 'Range']
rangeSplitPolicies = ['Default', 'Duplicate', 'Geometry_Ratio']
rangeMergePolicies = ['Default', 'Area_Weighted', 'Sum_Values']
codedSplitPolicies = ['Default', 'Duplicate']
codedMergePolicies = ['Default']
for fieldType in fieldTypes:
for domainType in domainTypes:
# Skip incompatible domainType-fieldType permutations
if domainType == 'Coded' and fieldType == 'Date' \
or domainType == 'Range' and fieldType == 'Text':
break
# Range domain-type handling
if domainType == 'Range':
for splitPolicy in rangeSplitPolicies:
# Date fields require special handling and only support the
# the default keyword for their split and merge policies
if fieldType == 'Date':
permutation = '{0}-{1}'.format(
fieldType,
domainType,
'Default',
'Default')
else:
for mergePolicy in rangeMergePolicies:
permutation = '{0}-{1}-{2}-{3}'.format(
fieldType,
domainType,
splitPolicy,
mergePolicy)
# Coded-value domain-type handling
else:
for splitPolicy in codedSplitPolicies:
for mergePolicy in codedMergePolicies:
permutation = '{0}-{1}-{2}-{3}'.format(
fieldType,
domainType,
splitPolicy,
mergePolicy)
# Do more stuff...
Очевидно, это не очень элегантно.Если возможно, я бы хотел использовать Генератор, так как мне нужно будет получать каждую перестановку только один раз, но я действительно не уверен, как лучше организовать это и получить все возможные перестановки field и domainType, а такжесоответствующие политики разделения и слияния для каждого domainType с одновременным применением нюансовых ограничений:
- Домены на основе кодированных значений не поддерживаются в полях даты
- Домены на основе диапазонов не поддерживаются в текстовых полях
- Поля даты поддерживают только ключевое слово «По умолчанию» для своей политики разделения и слияния.
Сейчас я просто получаю перестановку в виде строки, но она может быть возвращена как кортеж, список или все, что легко разбирается.
Заранее благодарим вас за понимание.