тестируемое имя модели не определено ошибка в Django - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть приложение account_engine, где у меня есть модель CustomerAccount, которую нужно протестировать.

в models.py

class CustomerAccount(models.Model):

    username = models.EmailField("Email Address")
    date_first_registered = models.DateTimeField()
    last_update = models.DateTimeField(auto_now = True)
    #password = models.TextField()
    password = EncryptedField(max_length=500)

    source = models.CharField(max_length = 10, null = True, blank = True)

    password_reset_token = models.CharField(max_length = 30, null = True, blank = True)


    def __str__(self):
        return u'%s' % (self.id)

    def is_internal_email(self):
        # check if customer account is internal using email domain and set is_internal_email flag accordingly
        self.is_internal_email = False
        internal_emails = ['test.com', 'testing.com', 'testmail.com']
        customer_email = self.username.split('@')[1]
        for email in internal_emails:
            if email == customer_email:
                self.is_internal_email = True
        return self.is_internal_email

в моих тестах. P

import datetime
from django.test import TestCase
from account_engine import models


class CustomerAccountTestCase(TestCase):

    def setUp(self):
        CustomerAccount.objects.create(
            username = 'test@test.com',
            date_first_registered = '2018-05-15 12:32:35.817018',
            password = 'Test@12345'
        )

    def test_get_customeraccount(self):

        first_customer = CustomerAccount.objects.first()
        self.assertEqual(first_customer.username, 'test@test.com')

при выполнении теста python manage.py я получаю следующую ошибку

======================================================================
ERROR: test_get_customeraccount (account_engine.tests.tests_models.CustomerAccountTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\xxxxxxx\account_engine\tests\tests_models.py", line 9, in setUp
    CustomerAccount.objects.create(
NameError: name 'CustomerAccount' is not defined

----------------------------------------------------------------------

Я только начал учиться тестирование в django, так что это может быть очень простой ошибкой. пока я не в состоянии понять это. Кроме того, как я могу проверить свои методы, определенные в модели? Кроме того, что все должны тестировать в модели?

1 Ответ

2 голосов
/ 01 апреля 2020

Это на самом деле не имеет ничего общего с Django, это базовые c Python вещи. Механизм Python import не имеет ничего общего с C или PHP, как вы знаете, если бы вы сделали официальный Python учебник :

>>> import fibo

Это не вводит имена функций, определенных в fibo, непосредственно в текущей таблице символов; он вводит только имя модуля FIBO. Используя имя модуля, вы можете получить доступ к функциям:

>>> fibo.fib(1000)

Попытка использовать Django без обучения Python Сначала будет упражнение на боль и разочарование, поэтому на самом деле, потратьте один день на полное официальное руководство и просмотрите do c, чтобы понять, что там и где его найти, это действительно сэкономит вам много времени.

Кроме того, как я могу проверить свои методы, определенные в модели?

Ошибка ... вызвав их и проверив результат?

Кроме того, что все должно делать один тест в модели?

Все, что не является стандартным (ваши собственные добавленные методы и тот, который вы переопределяете). Вы можете с уверенностью предположить, что Django работает должным образом - не то, что он полностью свободен от ошибок (какой код?), Но это действительно проверенный на поле битвы код для большинства частей, так что шансы найти ошибку в базовых c функциях больше, чем тонкий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...