[FIXED] Wie teste ich Modellbezeichnungen in Django?

Ausgabe

Ich habe die folgende model.py

from django.db import models

class Url(models.Model):
    short_url = models.CharField(max_length=255)
    original_url = models.CharField(max_length=255)
    clicks = models.IntegerField(default=0)
    created_at = models.DateTimeField('date created', auto_now_add=True)
    updated_at = models.DateTimeField('date updated', auto_now=True)

class Click(models.Model):
    url = models.ForeignKey(Url, on_delete=models.CASCADE, related_name='related_clicks')
    browser = models.CharField(max_length=255)
    platform = models.CharField(max_length=255)
    created_at = models.DateTimeField('date created', auto_now_add=True)
    updated_at = models.DateTimeField('date updated', auto_now=True)

und in der tests/test_models.py

from django.test import TestCase
from heyurl.models import Url, Click
from heyurl.views import short_url


class TestModels(TestCase):
    @classmethod
    def setupTestdata(cls):
        Url.objects.create(short_url='eOlKf', original_url='https://www.google.com', clicks= 2)
    
   #Figuring out how to test each label
    def test_short_url_label(self):
        field_label = Url.objects.get()
        self.assertEqual(field_label, 'short_url')

Also im Grunde würde ich gerne wissen, wie ich meine Modellbezeichnungen durch Komponententests in test_models.py validieren kann. Was sollte ich anstelle von field_labelverwenden, um verwenden zu können assertEqual()?

Lösung

Versuche dies:

expected_fields = [...]
model_field_names = [field.name for field in YourModel._meta.get_fields()]

for field_name in expected_fields:
    self.assertTrue(field_name in model_field_names)


Beantwortet von –
Karolis S.


Antwort geprüft von –
David Marino (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like