Тест почты Django не работает в действиях GitHub
Я пытаюсь выяснить, почему мой почтовый тест не работает при запуске в GitHub Actions, но работает успешно, когда я запускаю его локально.
Согласно документации 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: {}\n\nMessage: {}.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 Actions)
.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 Действия 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: secret
run: |
python manage.py test