Hey guys,
I would appreciate your help.
I’m using the book “Practical Django 2 and Channels 2 Building…” by Federico Marani.
I’m getting this error when I run my test:
“TypeError: send_mail() missing 1 required positional argument: ‘self’”
Here are the files:
“settings.py”
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
“forms.py”
from django import forms
from django.core.mail import send_mail
import logging
logger = logging.getLogger(__name__)
class ContactForm(forms.Form):
name = forms.CharField(label='Your Name', max_length=100)
message = forms.CharField(max_length=600, widget=forms.Textarea)
def send_mail(self):
logger.info("Sending mail to customer service")
message = "From: {0}\n{1}".format(
self.cleaned_data["name"],
self.cleaned_data["message"],
)
send_mail(
"Site message",
message,
"site@booktime.domain",
["customerservice@booktime.domain"],
fail_silently=False,
)
“test_forms.py”
from django.test import TestCase
from django.core import mail
from main import forms
class TestForm(TestCase):
def test_valid_contact_us_form_sends_email(self):
form = forms.ContactForm({
'name': "Luke Skywalker",
'message': "Hi there"})
self.assertTrue(form.is_valid())
*** I’m getting an error at line 14 ***
with self.assertLogs('main.forms', level='INFO') as cm:
form.send_mail()
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].subject, 'Site message')
self.assertGreaterEqual(len(cm.output), 1)
def test_invalid_contact_us_form(self):
form = forms.ContactForm({'message': "Hi there"})
self.assertFalse(form.is_valid())