mbti-pocketflow / utils /test_data.py
Fancellu's picture
Init
5d7e9a5
import random
# MBTI type response patterns for generating test data
MBTI_PATTERNS = {
"INTJ": {
"E": [1, 2], "I": [4, 5], "S": [1, 2], "N": [4, 5],
"T": [4, 5], "F": [1, 2], "J": [4, 5], "P": [1, 2]
},
"ENFP": {
"E": [4, 5], "I": [1, 2], "S": [1, 2], "N": [4, 5],
"T": [1, 2], "F": [4, 5], "J": [1, 2], "P": [4, 5]
},
"ISTJ": {
"E": [1, 2], "I": [4, 5], "S": [4, 5], "N": [1, 2],
"T": [4, 5], "F": [1, 2], "J": [4, 5], "P": [1, 2]
},
"ESTP": {
"E": [4, 5], "I": [1, 2], "S": [4, 5], "N": [1, 2],
"T": [4, 5], "F": [1, 2], "J": [1, 2], "P": [4, 5]
}
}
def generate_test_data(mbti_type=None, count=1):
"""Generate test questionnaire responses"""
# Import actual question dimensions
import sys
import os
sys.path.append(os.path.dirname(__file__))
from questionnaire import load_questionnaire
questions = load_questionnaire()
question_dimensions = {q['id']: q['dimension'] for q in questions}
results = []
for _ in range(count):
# Choose random type if not specified
if mbti_type is None:
target_type = random.choice(list(MBTI_PATTERNS.keys()))
else:
target_type = mbti_type
pattern = MBTI_PATTERNS.get(target_type, MBTI_PATTERNS["INTJ"])
responses = {}
for question_id, dimension in question_dimensions.items():
# Get response range for this dimension
response_range = pattern.get(dimension, [3])
# Add some randomness
if random.random() < 0.9: # 90% follow pattern for better accuracy
response = random.choice(response_range)
else: # 10% random noise
response = random.randint(1, 5)
responses[question_id] = response
results.append({
"target_type": target_type,
"responses": responses
})
return results if count > 1 else results[0]
if __name__ == "__main__":
# Test data generation
test_data = generate_test_data("INTJ")
print(f"Generated test data for INTJ:")
print(f"Responses: {test_data['responses']}")
# Generate multiple random types
multiple_data = generate_test_data(count=3)
for i, data in enumerate(multiple_data):
print(f"Sample {i+1}: {data['target_type']}")