Почтовый тест Django Не прошел в действиях GitHub

#python #django #django-views #github-actions #django-testing

Вопрос:

Я пытаюсь понять, почему мой почтовый тест не проходит при запуске в действиях GitHub, но завершается успешно, когда я запускаю его локально.

Согласно документации Django, тестовый запуск использует серверную часть в памяти для электронной почты, поэтому он не должен полагаться на SMTP-соединение.

https://docs.djangoproject.com/en/3.2/topics/email/#in-memory-backend

views.py

 class ContactApiView(View):
    def post(self, request):
        name = request.POST.get('name')
        email = request.POST.get('email')
        message = request.POST.get('message')

        if not name or not email or not message:
            return HttpResponseBadRequest('ERROR: All fields are required')

        body = 'Name: {}nE-mail: {}nnMessage: {}.format(name, email, message)

        email = EmailMessage(
            'Contact Form Submission',
            body,
            settings.EMAIL_HOST_USER,
            [settings.EMAIL_HOST_USER],
            None,
            reply_to=[email]
        )

        email.send()

        return HttpResponse(status=200)
 

tests.py (Работает локально, не удается выполнить действия на GitHub)

 class ContactApiViewTestCase(TestCase):
    def setUp(self):
        self.client = Client()
        self.viewname = 'contact_api'

    def test_happy_path(self):
        request_body = {
            'name': 'John Doe',
            'email': 'test@example.com',
            'message': 'Hello world'
        }

        response = self.client.post(path=reverse(self.viewname), data=request_body)
        self.assertEquals(response.status_code, http.HTTPStatus.OK)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Contact Form Submission')
 

Ошибка действий на GitHub

 ======================================================================
FAIL: test_happy_path (app.tests.ContactApiViewTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/repo/project/app/tests.py", line 137, in test_happy_path
    self.assertEqual(len(mail.outbox), 1)
AssertionError: 0 != 1
 

GitHub Actions django.yml

 name: Django CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.9]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run Tests
      env: 
        DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
      run: |
        python manage.py test