Объекты в django setUp не существуют при запуске теста - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующий вид django:

@api_view(['GET'])
@csrf_exempt
def last_status_by_department_view(request, department_id=0):
    if request.META.get('HTTP_AUTHORIZATION') is None:
        return JsonResponse({'exception_message': 'No authorization provided.'}, status=401)

    try:
        return JsonResponse(last_status_by_department(department_id), safe=False)

    except Exception as e:
        return JsonResponse({'exception_message': str(e), 'full_traceback': traceback.format_exc()}, status=400)

, который использует эту функцию:

from tokitimer.models import Activity


def last_status_by_department(department_id):
    all_activities = Activity.objects.order_by('user__user_name', '-activity_datetime').distinct(
        'user__user_name').exclude(bucket__bucket_name='Offline').filter(
        bucket__category__department_id=department_id)

    rts = []
    for activity in all_activities:
        rts.append(
            {
                'user_id': activity.user.user_id,
                'user_name': activity.user.user_name,
                'activity_datetime': activity.activity_datetime,
                'bucket_id': activity.bucket.bucket_id,
                'bucket_name': activity.bucket.bucket_name,
                'category_id': activity.bucket.category.category_id,
                'category_name': activity.bucket.category.category_name
            }
        )

    return rts

И я сделал для нее следующий тест:

class RealTimeStatusTests(TestCase):

    def setUp(self):
        self.user, self.master_account, self.category, self.bucket, self.activity, self.department, \
            self.department_history = general_set_up2()

        self.tokens = json.loads(self.client.post(reverse('authenticate'),
                                                  data={'username': self.user.user_name, 'password': 'abcd'},
                                                  content_type='application/json').content)

    def test_get_real_time_status(self):
        response = self.client.get(reverse('real_time_status_department',
                                           kwargs={'department_id': self.department.department_id}),
                                   follow=True, **{'HTTP_AUTHORIZATION': self.tokens['access']})

        expected_response = [{
            'user_id': self.user.user_id,
            'user_name': self.user.user_name,
            'activity_datetime': self.activity.activity_datetime,
            'bucket_id': self.bucket.bucket_id,
            'bucket_name': self.bucket.bucket_name,
            'category_id': self.category.category_id,
            'category_name': self.category.category_name
        }]

        print(self.department.department_id)
        print(str(response.content, encoding='utf8'))
        print(expected_response)

        self.assertJSONEqual(str(response.content, encoding='utf8'), expected_response)

Представление в основном обеспечивает последние действия для всех пользователей.Когда я запускаю это локально, представление возвращает правильные результаты.При выполнении тестов объекты «создаются», потому что у меня есть тесты для всех из них, но для этого конкретного представления возвращается пустой список вместо активности, созданной в setUp.

Я делаючто-то здесь не так?почему представление не улавливает объекты, созданные setUp?

EDIT Ее общая функция настройки:

def general_set_up2():
    django_user = User.objects.create_user(username='generic_user_name',
                                           email='test@test.com',
                                           password='abcd')

    user = TokiUser(user_name='generic_user_name', email_address='test@test.com', created_datetime=now,
                    last_modified_datetime=now, is_admin=True, django_user=django_user)

    master_account = Account(account_name='Toki Admin', created_datetime=now, last_modified_datetime=now,
                             is_master_account=True)

    user.save()
    master_account.owner = user
    master_account.created_by = user
    master_account.last_modified_by = user
    master_account.save()

    user.created_by = user
    user.last_modified_by = user
    user.account = master_account
    user.save()

    department = Department.objects.create(department_name='Test Department', created_by=user, created_datetime=now,
                                           last_modified_by=user, last_modified_datetime=now, account=master_account)

    department_history = DepartmentHistory.objects.create(user=user, department=department, start_datetime=now,
                                                          created_by=user, created_datetime=now,
                                                          last_modified_by=user, last_modified_datetime=now,
                                                          account=master_account)

    category = Category.objects.create(category_name='Test Category', created_by=user, created_datetime=now,
                                       last_modified_by=user, last_modified_datetime=now, account=master_account)

    category.save()

    bucket = Bucket.objects.create(bucket_name='TestBucket', category=category, created_by=user, created_datetime=now,
                                   last_modified_by=user, last_modified_datetime=now, account=master_account)

    bucket.save()

    activity = Activity.objects.create(activity_datetime=now, user=user, bucket=bucket, created_datetime=now,
                                       created_by=user, last_modified_datetime=now, last_modified_by=user,
                                       account=master_account)

    activity.save()

    return user, master_account, category, bucket, activity, department, department_history
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...