Django/unittest で単体テストを学ぼうとしています。
これらは私のモデルの単純なバージョンです:
class Device(models.Model):
name = models.CharField(max_length=100)
def get_ips(self):
return DeviceIP.objects.filter(device=self.id)
class DeviceIP(models.Model):
ip = models.GenericIPAddressField()
device = models.ForeignKey(Device)
そして、これは私が思いついたテストコードです:
from django.test import TestCase
class DeviceTest(TestCase):
def test_get_ips(self):
device = Device()
device.name = 'My Device'
ip1 = DeviceIP()
ip1.ip = '127.0.0.1'
ip1.device = device
ip1.save()
ip2 = DeviceIP()
ip2.ip = '127.0.0.2'
ip2.device = device
ip2.save()
ip3 = DeviceIP()
ip3.ip = '127.0.0.3'
ip3.device = device
ip3.save()
self.assertEqual(device.get_ips(), [ip1, ip2, ip3])
との文字列表現が同一AssertionError
であるにもかかわらず、on のため、テスト結果は失敗します。device.get_ips()
[ip1, ip2, ip3]
使用しようとすると、リストではなく QuerySet であるself.assertListEqual
ため、エラーが発生します。device.get_ips()
試してみると " "self.assertQuerySetEqual
というエラーが表示されますが、 extendsの TestCase.DeviceTest object has no attribute assertQuerySetEqual
DeviceTest
django.test
このようなテストをどのように行う必要がありますか?
また、「実際の」プロジェクトでは、このような単純なテストを行うのは理にかなっていますか?