MCPcopy Create free account
hub / github.com/MongoEngine/mongoengine / test_average

Method test_average

tests/queryset/test_queryset.py:3465–3503  ·  view source on GitHub ↗

Ensure that field can be averaged correctly.

(self)

Source from the content-addressed store, hash-verified

3463 assert freqs == {1: 50.0 / 70, 2: 20.0 / 70}
3464
3465 def test_average(self):
3466 """Ensure that field can be averaged correctly."""
3467 self.Person(name="person", age=0).save()
3468 assert int(self.Person.objects.average("age")) == 0
3469
3470 ages = [23, 54, 12, 94, 27]
3471 for i, age in enumerate(ages):
3472 self.Person(name="test%s" % i, age=age).save()
3473
3474 avg = float(sum(ages)) / (len(ages) + 1) # take into account the 0
3475 assert round(abs(int(self.Person.objects.average("age")) - avg), 7) == 0
3476
3477 self.Person(name="ageless person").save()
3478 assert int(self.Person.objects.average("age")) == avg
3479
3480 # dot notation
3481 self.Person(name="person meta", person_meta=self.PersonMeta(weight=0)).save()
3482 assert (
3483 round(abs(int(self.Person.objects.average("person_meta.weight")) - 0), 7)
3484 == 0
3485 )
3486
3487 for i, weight in enumerate(ages):
3488 self.Person(
3489 name=f"test meta{i}", person_meta=self.PersonMeta(weight=weight)
3490 ).save()
3491
3492 assert (
3493 round(abs(int(self.Person.objects.average("person_meta.weight")) - avg), 7)
3494 == 0
3495 )
3496
3497 self.Person(name="test meta none").save()
3498 assert int(self.Person.objects.average("person_meta.weight")) == avg
3499
3500 # test summing over a filtered queryset
3501 over_50 = [a for a in ages if a >= 50]
3502 avg = float(sum(over_50)) / len(over_50)
3503 assert self.Person.objects.filter(age__gte=50).average("age") == avg
3504
3505 def test_sum(self):
3506 """Ensure that field can be summed over correctly."""

Callers

nothing calls this directly

Calls 3

averageMethod · 0.80
saveMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected