Refine some tests.

This commit is contained in:
h-alice 2025-01-22 16:55:09 +08:00
parent 6df7b7d8e9
commit b584d29ce3
No known key found for this signature in database
GPG Key ID: 5708F34144A70909

View File

@ -17,6 +17,7 @@ def test_standard_analyze():
demography_objs = DeepFace.analyze(img, silent=True) demography_objs = DeepFace.analyze(img, silent=True)
for demography in demography_objs: for demography in demography_objs:
logger.debug(demography) logger.debug(demography)
assert type(demography) == dict
assert demography["age"] > 20 and demography["age"] < 40 assert demography["age"] > 20 and demography["age"] < 40
assert demography["dominant_gender"] == "Woman" assert demography["dominant_gender"] == "Woman"
logger.info("✅ test standard analyze done") logger.info("✅ test standard analyze done")
@ -30,6 +31,7 @@ def test_analyze_with_all_actions_as_tuple():
for demography in demography_objs: for demography in demography_objs:
logger.debug(f"Demography: {demography}") logger.debug(f"Demography: {demography}")
assert type(demography) == dict
age = demography["age"] age = demography["age"]
gender = demography["dominant_gender"] gender = demography["dominant_gender"]
race = demography["dominant_race"] race = demography["dominant_race"]
@ -54,6 +56,7 @@ def test_analyze_with_all_actions_as_list():
for demography in demography_objs: for demography in demography_objs:
logger.debug(f"Demography: {demography}") logger.debug(f"Demography: {demography}")
assert type(demography) == dict
age = demography["age"] age = demography["age"]
gender = demography["dominant_gender"] gender = demography["dominant_gender"]
race = demography["dominant_race"] race = demography["dominant_race"]
@ -75,6 +78,7 @@ def test_analyze_for_some_actions():
demography_objs = DeepFace.analyze(img, ["age", "gender"], silent=True) demography_objs = DeepFace.analyze(img, ["age", "gender"], silent=True)
for demography in demography_objs: for demography in demography_objs:
assert type(demography) == dict
age = demography["age"] age = demography["age"]
gender = demography["dominant_gender"] gender = demography["dominant_gender"]
@ -96,6 +100,7 @@ def test_analyze_for_preloaded_image():
resp_objs = DeepFace.analyze(img, silent=True) resp_objs = DeepFace.analyze(img, silent=True)
for resp_obj in resp_objs: for resp_obj in resp_objs:
logger.debug(resp_obj) logger.debug(resp_obj)
assert type(resp_obj) == dict
assert resp_obj["age"] > 20 and resp_obj["age"] < 40 assert resp_obj["age"] > 20 and resp_obj["age"] < 40
assert resp_obj["dominant_gender"] == "Woman" assert resp_obj["dominant_gender"] == "Woman"
@ -132,23 +137,31 @@ def test_analyze_for_different_detectors():
] ]
# validate probabilities # validate probabilities
assert type(result) == dict
if result["dominant_gender"] == "Man": if result["dominant_gender"] == "Man":
assert result["gender"]["Man"] > result["gender"]["Woman"] assert result["gender"]["Man"] > result["gender"]["Woman"]
else: else:
assert result["gender"]["Man"] < result["gender"]["Woman"] assert result["gender"]["Man"] < result["gender"]["Woman"]
def test_analyze_for_multiple_faces_in_one_image(): def test_analyze_for_batched_image():
img = "dataset/img4.jpg" img = "dataset/img4.jpg"
# Copy and combine the same image to create multiple faces # Copy and combine the same image to create multiple faces
img = cv2.imread(img) img = cv2.imread(img)
img = cv2.hconcat([img, img]) img = np.stack([img, img])
demography_objs = DeepFace.analyze(img, silent=True) assert len(img.shape) == 4 # Check dimension.
assert len(demography_objs) == 2 assert img.shape[0] == 2 # Check batch size.
for demography in demography_objs:
logger.debug(demography) demography_batch = DeepFace.analyze(img, silent=True)
assert demography["age"] > 20 and demography["age"] < 40 # 2 image in batch, so 2 demography objects.
assert demography["dominant_gender"] == "Woman" assert len(demography_batch) == 2
logger.info("✅ test analyze for multiple faces in one image done")
for demography_objs in demography_batch:
assert len(demography_objs) == 1 # 1 face in each image
for demography in demography_objs: # Iterate over faces
assert type(demography) == dict # Check type
assert demography["age"] > 20 and demography["age"] < 40
assert demography["dominant_gender"] == "Woman"
logger.info("✅ test analyze for multiple faces done")
def test_batch_detect_emotion_for_multiple_faces(): def test_batch_detect_emotion_for_multiple_faces():
img = "dataset/img4.jpg" img = "dataset/img4.jpg"