RobotFramework在Mac平台安装小结、邮件发送功能及jenkins结果展示配置

    摘要

    (Homebrew是一款Mac OS平台下的软件包的管理工具,拥有安装… 我在这里已经踩过坑了.如何修改:命令行执行open –e .bash_…

    Mac平台下安装RobotFramework的步骤

    需要注意的是:Python最好下载2.7.15版本,pip最好安装使用9.0.1版本的,防止出现类似SSL版本不支持的问题。

    安装步骤:

    需要安装pip模块,可以到官网:https://pypi.org/project/pip/去安装。

    pip最好下载9.0.1版本的。

    sudo pip install robotframework.

    Sudo pip install –U robotframework-ride==2.0a1

    最麻烦的是安装wxPython。

    mac平台下安装homebrew。(Homebrew是一款Mac OS平台下的软件包的管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能)。

    安装homebrew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

     

    首先查看一下自己的python引用是哪个路径:which python

    如果你的路径是/usr/bin/python,一定要改成/usr/local/bin/python!我在这里已经踩过坑了。

    如何修改:命令行执行open –e .bash_profile

    将原来的python环境注释掉,修改成alias python="/usr/local/bin/python"。

    安装wxPython:

    我是参看这个链接完成的环境配置:https://blog.csdn.net/whackw/article/details/51879658

    下载wxPython:https://sourceforge.net/projects/wxpython/files/wxPython/

    或者下载它的最新版本:https://sourceforge.net/projects/wxpython/files/latest/download?source=files

    我下载的是wxPython3.0-osx-3.0.2.0-cocoa-py2.7.dmg。

    下载完成后双击打开。然后在pkg文件上右击选择显示包内容,打开Contents/Resources。

    解压缩

    解压缩之后找到usr/local/lib,将它下边的wxPython-3.0.2.0这个文件夹拷贝到系统的usr/local/lib文件夹下。

    将Contents/Resources下的postflight文件复制到一个位置,然后cd到这个文件所在的目录下,执行:

    sudo ./postflight。

    执行成功后它会进行安装:

    安装完成后再在cmd下

    执行ride.py就可以了。

    不会再出现:

    wxPython not found.

    You need to install wxPython 2.8.12.1 or 3.0.2 or newer with unicode support to run RIDE.wxPython can be downloaded from http://sourceforge.net/projects/wxpython/files/wxPython/ 

    安装必要的library库:

    pip install robotframework-requests

    注意:Mac平台下的RobotFramework的site-packages在/Library/Python/2.7/site-packages这个路径下。

    而使用pip安装的包全部保存在/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages这里。

    所以在命令行使用ride.py启动RIDE后,在导入Library时不能进行识别导入的包。

    所以,在使用pip安装包时,需要使用-t 选项来指定位置。

    例如:pip install –t /Library/Python/2.7/site-packages robotframework-requests。

    RobotFramework扩展发送结果邮件功能

    写一个发邮件的模块。保存成sendEmail.py,复制到$pythonpath/Lib/site-packages/robot目录下。

    注意,修改mail_user为自己的发件QQ邮箱,mail_pass设置为授权码,不会的请百度。有更复杂的需求自行扩展该文件。

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import smtplib

    from email.mime.text import MIMEText

    import email.MIMEMultipart

    from email.header import Header

    import os

    import mimetypes

     

    def send_email(receivers= ['********@qq.com'], file_names=[], test_result=0):

        # 第三方 SMTP 服务

        print receivers

        mail_host="smtp.qq.com"  #设置服务器

        mail_user="*******@qq.com"    #用户名

        mail_pass="************"   #口令,QQ邮箱是输入授权码,在qq邮箱设置 里用验证过的手机发送短信获得,不含空格

        sender = '********@qq.com'

     

        #设置邮件中的测试结果

        resultstr = '失败' if test_result else '通过'

     

        main_msg = email.MIMEMultipart.MIMEMultipart()

        message = MIMEText('''附件是本次自动化构建的报告,请注意查收 \n\n''', 'plain', 'utf-8')

        main_msg.attach(message)

        result = MIMEText('测试结果: '+resultstr, 'plain', 'utf-8')

        main_msg.attach(result)

        ## 读入文件内容并格式化

        for file_name in file_names:

            data = open(file_name, 'rb')

            ctype,encoding = mimetypes.guess_type(file_name)

            if ctype is None or encoding is not None:

                ctype = 'application/octet-stream'

            maintype,subtype = ctype.split('/',1)

            file_msg = email.MIMEBase.MIMEBase(maintype, subtype)

            file_msg.set_payload(data.read())

            data.close()

            email.Encoders.encode_base64(file_msg)#把附件编码

     

            basename = os.path.basename(file_name)

            file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改邮件头

            main_msg.attach(file_msg)

     

        main_msg['From'] = Header("robot自动发送", 'utf-8')

        reciverstr = ';'.join(receivers)

        main_msg['To'] = Header(reciverstr, 'utf-8')

        subject = 'robotframework测试结果'

        main_msg['Subject'] = Header(subject, 'utf-8')

        try:

            smtpObj = smtplib.SMTP_SSL()

            smtpObj.connect(mail_host, 465)

            smtpObj.login(mail_user,mail_pass)

            smtpObj.sendmail(sender, receivers, main_msg.as_string())

            print "邮件发送成功。"

        except smtplib.SMTPException, e:

            print "Error: 无法发送邮件。错误原因:", e

    if __name__ == '__main__':

        send_email(file_names=['E:\\pics\\1.png','E:\\pics\\2.jpg'])

    2 在/Lib/site-packages/robot/run.py修改两个地方

    2.1 修改run.py处理send_email动作:

            先导入邮件模块:

    from robot.sendEmail import send_email

    再找到类RobotFramework的main函数,增加*号中间的如下行:

    def main(self, datasources, **options):

            settings = RobotSettings(options)

            LOGGER.register_console_logger(**settings.console_output_config)

            LOGGER.info('Settings:\n%s' % unic(settings))

            suite = TestSuiteBuilder(settings['SuiteNames'],

                                     settings['WarnOnSkipped'],

                                     settings['Extension']).build(*datasources)

            suite.configure(**settings.suite_config)

            if settings.pre_run_modifiers:

                suite.visit(ModelModifier(settings.pre_run_modifiers,

                                          settings.run_empty_suite, LOGGER))

            with pyloggingconf.robot_handler_enabled(settings.log_level):

                result = suite.run(settings)

                LOGGER.info("Tests execution ended. Statistics:\n%s"

                            % result.suite.stat_message)

                if settings.log or settings.report or settings.xunit:

                    writer = ResultWriter(settings.output if settings.log

                                          else result)

                    writer.write_results(settings.get_rebot_settings())

            #*********************************#

            if len(settings['Email']):

                send_email(settings['Email'],[settings.report,settings.log],

                            test_result=result.return_code)

            #*********************************#

            return result.return_code

    2.2 还是run.py,修改USAGES里的options:

            增加如下行:

    Options

    =======

     -m --email email *       set email options #增加这行,不要把注释复制

     -F --extension value     Parse only files with this extension when executing

    主要是给pybot命令行使用

     

    3  找到robot/conf/settings.py文件修改settings

            找到 _cli_opts 设置,增加一条:

    'Email'            : ('email', []),

    4 修改robotide,找到$pythonpath/Lib/site-packages/robotide/contrib/testrunner/usages.py

    Options

    =======

     -m --email email *       set email options#增加这行,不要把注释复制进去

     -N --name name           Set the name of the top level test suite. Underscores

    主要给ride设置时使用。

     

    运行及结果

        1  pybot运行方式,如需传多个人时,需后面再跟--email XXXX

            pybot --email [email protected] --email [email protected] "C:\\Users\\Administrator\\Desktop\\test.robot"

        2  ride 运行方式

     

    RobotFramework测试报告结果在jenkins中展示

    在jenkins中添加jenkins插件。

    在系统管理->管理插件->可选插件->Robot Framework Plugin,然后安装。

    在构建时,这里我用的是我自己的本地RF工程,所以直接将该工程复制到了本地的jenkins工作的该job工程的目录下。

    然后在jenkins的Execute shell中增加构建步骤:

    /usr/local/bin/pybot –email [email protected] ${WORKSPACE}/Test/test.txt  ##这里的test.txt表示的是需要运行的RF脚本。

    因为已经安装了Robot Framework Plugin,所以在构建后操作中选择Publish Robot Framework test results该选项,在Directory of Robot output添加:${WORKSPACE}。

    每次在构建完成之后,就可以在该job工程中看到Robot Results结果,它实际上就是你${WORKSPACE}下的该RF结果报告。

    经常有开发对测试说,你来帮我点一点,你们总是点点点。好简单啊。经历过了种种羞辱,我看到行业很多测试还是不愿意崛起,总是抱怨别人,但是从来没想过提升自己,实际上提升自己的技能才是最重要的。


    课程内容分成如下几个部分

    切近企业实战需求

    帮助提高企业工作效率

    并且为自己升值加薪

    打造全新的技术栈

    ________________________________________

    第九期测试开发进阶实战班火热预定报名中。第十期测试平台开发班火热招生中,同时第八期测试平台开发班上课中,可以预约试听哦。



    三人行,一人半价,四人同行报名,一个免单,更多优惠,来找我问!!!

    本期我们特推出最新课程jmeter性能测试实战及接口自动化测试平台开发、App性能监控平台开发课程,其中接口自动化测试平台开发课程、App性能监控平台开发课程,全中国独家课程,全部由我们Tester+T老师们根据自身在企业中的实战经验,带大家一起开发接口自动化测试平台和App性能监控平台。


    通过平台更好的在项目中提高质量和效率,能够更加方便的监控每个版本接口的质量,能够更加灵活的对之前的接口进行监控分析,能够更加灵活的掌握app是否存在内存泄漏情况,是否内存在一个合理的值范围内,是否存在卡顿现在,具体在哪个类哪个方法中卡顿的,fps的具体值,如果低于某个阈值,进行自动报警等等。




    测试平台开发课程:





    我们四人目前都是在职员工,我们不同于其他测试培训机构的最大点是,我们都在企业上班,知道企业的痛点,知道怎么解决痛点,需要什么技术,我们不会和其他测试机构一样,纯粹做培训,没有任何企业实战经验,导致学院学到的技术在企业无法真正发挥出来,也是我们jack老师为什么从某大型培训机构出来的原因。



    整个课程体系如下:


    本次课程我们更加灵活,我们可以也支持进行以下课程选择方式:


    1、 1-5阶段的课程  

    2、 1-7阶段的课程  

    3、 java+第5阶段课程+第8阶段课程 

    4、 第8阶段的课程 

    5、 java+第9阶段的课程  

    6、 1-10阶段的课程  

    我们的师资力量:

     小编(Richard):十一年工作经验,先后工作于百度、网易,目前担任某上市互联网公司的测试经理,一直专注于测试技术、测试管理方向。曾受邀参加某互联网测试峰会分享公司的体系建设。


    Jack:十年测试经验,先后工作于去哪儿、京东、某测试培训机构担任高级讲师,目前担任某互联网的测试主管,主要负责测试流程、测试理论及测试开发团队,敏捷专家。


    Nike:八年测试经验,先后工作于京东,目前在某互联网测试公司担任测试架构师,拥有十分丰富的测试架构开发能力,及自动化测试能力。

    Joanna,八年工作测试经验,先后工作于用友,滴滴打车企业,目前担任公司测试经理,专注于测试整体流程把控,测试质量监管,对接企业产品质量,功能测试方法运用,善于钻研测试工具,输出高品质的产品及项目报告。测试实践专家。


    我们的宗旨:

    不让任何一个学员拉下,所有人必须学会。

    有兴趣的可以加我qq咨询:2171029637或jack:3292634297


    通过网络授课,远程辅导,模拟企业经理对员工的管理方式运作,达到让员工快速成长。

    总共200+学时、无限期答疑、如果本期有没学会的下一期免费听课、听到会为止。

    当然想要学习的,不想报名的,也可以加入我们的群,我也会解答问题。技术交流无国界。


    大家如果有感兴趣的方向文章,可以直接给我留言,我会去写你们感兴趣的文章。


    想要了解,获取更多和测试相关的知识请添加此群,本群提供App、Web等Ui自动化,App性能测试,接口功能,
    接口自动化测试,jmeter、loadrunner工具介绍,静态代码扫描实践;测试理论,
    测试流程。测试管理。

    如果有问题可以联系QQ:2171029637

    QQ邮箱:2171029637@qq.com

    App自动化及Web自动化全栈测试:群号544126564(想要更多资料立即加入此群)

    全国零基础测试转行群: 群号:321264545

    微信公众号:
















    avatar
    • 本文由 发表于 2018年12月8日
    Mac 软件推荐(续)之程序猿篇 mac软件下载

    Mac 软件推荐(续)之程序猿篇

    在前面一篇文章“Mac 软件推荐(续) -- !程序猿篇” (文章取名装X失败, 悲伤)中, 我已经介绍了一些大众化的软件, 当然作为程序猿的你也应该参考参考(没看过前文的必须补上啊).本篇文章将介绍...
    匿名

    发表评论

    匿名网友 填写信息