Selenium WebDriver Java Framework Course Limited Time Offer for $20

Selenium WebDriver Java Framework Course Limited Time Offer for $20

 

Print

Send Email in Robot Framework Python Using Gmail

When using Robot Framework Python, some customized test result log files or report files need to be emailed to QA engineers. You can create custom Gmail Email Library to send email with attachment or no attachment.  

 

Step 1:  create a folder named "GmailEmailLibrary" under C:\Python27\Lib\site-packages (assuming that you have installed python at the root of C: drive)

C:\Python27\Lib\site-packages\GmailEmailLibrary

Step 2: write following codes in the file "gmailsendemail.py" and "__init__.py"

gmailsendemail.py

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os

class SendEmailUtility(object):


    ROBOT_LIBRARY_SCOPE = 'Global'
    
    def __init__(self):
        print 'send email utility'
        
    def send_mail_with_attachment(self,from_user,from_password,to, subject, text, attach):
       msg = MIMEMultipart()
    
       msg['From'] = from_user
       msg['To'] = to
       msg['Subject'] = subject

       msg.attach(MIMEText(text))

       part = MIMEBase('application', 'octet-stream')
       part.set_payload(open(attach, 'rb').read())
       Encoders.encode_base64(part)
       part.add_header('Content-Disposition',
               'attachment; filename="%s"' % os.path.basename(attach))
       msg.attach(part)

       mailServer = smtplib.SMTP("smtp.gmail.com", 587)
       mailServer.ehlo()
       mailServer.starttls()
       mailServer.ehlo()
       mailServer.login(from_user, from_password)
       mailServer.sendmail(from_user, to, msg.as_string())
       # Should be mailServer.quit(), but that crashes...
       mailServer.close()

    def send_mail_no_attachment(self,from_user,from_password,to, subject, text):
           msg = MIMEMultipart()

           msg['From'] = from_user
           msg['To'] = to
           msg['Subject'] = subject

           msg.attach(MIMEText(text))

           mailServer = smtplib.SMTP("smtp.gmail.com", 587)
           mailServer.ehlo()
           mailServer.starttls()
           mailServer.ehlo()
           mailServer.login(from_user, from_password)
           mailServer.sendmail(from_user, to, msg.as_string())
           # Should be mailServer.quit(), but that crashes...
           mailServer.close()


__init__.py

from gmailsendemail import SendEmailUtility
__version__ = '1.0'

class GmailEmailLibrary(SendEmailUtility):

       
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

Step 3: create a test project using RIDE in robot framework as shown below. Make sure that you import the library "GmailEmailLibrary". 

Step 4: create the test cases "Send Email Has Attachment Test" and "Send Email No Attachment Test".  See the text version below. 

*** Settings ***
Library           GmailEmailLibrary

*** Test Cases ***
Send Email Has Attachment Test
    Send Mail With Attachment    
 This email address is being protected from spambots. You need JavaScript enabled to view it.
     **********    
 This email address is being protected from spambots. You need JavaScript enabled to view it.
     Python Email Test    This is python test    test.txt

Send Email No Attachment Test
    Send Mail No Attachment    
 This email address is being protected from spambots. You need JavaScript enabled to view it.
     **********    
 This email address is being protected from spambots. You need JavaScript enabled to view it.
     This is a test, this is a test    Test is in progress

Run the tests. The two test cases will pass