python+selenium+Jenkins+Firefox集成

目的

利用Jenkins来跑python+selenium编写的脚本,火狐浏览器来展示

本地需要安装的软件

python

下载地址:https://www.python.org/getit/

我下载的版本为:

可根据情况自行选择

1.特别要注意选上pip和Add python.exe to Path,然后一路点“Next”即可完成安装。

2.默认会安装到C:\Python3.6.1目录下,然后打开命令提示符窗口,敲入python后,会出现两种情况:

情况一,安装成功:

情况二,安装失败:

‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。

这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选Add python.exe to Path,那就要手动把python.exe所在的路径C:\Python3.6.1添加到Path中。

环境配置:计算机右键属性-高级系统管理-环境变量-path

selenium

一、在C:\python3.6.1\Scripts打开cmd窗口输入:pip3(有一大串内容出现)

二、cmd输入指令安装selenium:pip3 install selenium==2.53.6

如果不录入版本,默认安装最高级版本

三、验证selenium

在程序中能正确引用,不报错

Jenkins

请参照上一篇文章

脚本

一、访问百度

import unittest

from selenium import webdriver

from time import sleep

class BaiduTest(unittest.TestCase):

"""百度首页搜索测试用例"""

def setUp(self):

#logger.info('=======Yest case:init========')

#驱动目录

options = webdriver.ChromeOptions()

options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])

path = "C:\Users\lad\AppData\Local\Google\Chrome\Application\chromedriver.exe"

self.driver = webdriver.Firefox()

self.driver.implicitly_wait(30)

self.base_url = u"http://www.baidu.com"

def test_baidu_search(self):

#logger.info('=======Yest case:search baidu========')

driver = self.driver

print(u"开始[case_0001]百度搜索")

driver.get(self.base_url)

# 验证标题

self.assertEqual(driver.title, u"百度一下,你就知道")

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys(u"开源测试你懂的")

driver.find_element_by_id("su").click()

sleep(3)

# 验证搜索结果标题

self.assertEqual(driver.title, u"开源测试你懂的_百度搜索")

def tearDown(self):

#logger.info('=======Yest case:quit========')

self.driver.quit()

二、运行脚本

htmlPath =u"C:\\base\\demo\\testReport.html"

fp = open(htmlPath,"wb")

runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"百度测试", description=u"测试用例结果")

runner.run(suite)

fp.close()

#发送邮件

senfemail_fujian.sendmail(htmlPath)

三、生成报告的脚本

此文档官网可以下载到,python3可能需要更改一下

四、发送邮件的脚本

import smtplib

from email.mime.text import MIMEText

from email.header import Header

from email.mime.multipart import MIMEMultipart

def sendmail(mailtile):

print("发送HTML邮件示例")

# 邮件发送者

sender = "XXXX"

# 邮件接收地址列表,中间逗号隔开

receivers = "XXXXX"

#抄送者

acc = "XXXXX"

# 发送内容构建

# html标识发送内容为文本格式

msg = MIMEMultipart()

#发送者

msg["From"] = sender

#接受者

msg["To"] = receivers

#抄送者

msg['Cc'] = acc

# 构建邮件标题

msg["Subject"] = Header("搜索百度的测试报告", "utf-8")

# 构建邮件正文内容

msg.attach(MIMEText("附件为报告的内容,望多多指教!", "plain", "utf-8"))

# 构造附件,多个附件同理

#读取xlsx文件作为附件,open()要带参数'rb',使文件变成二进制格式,从而使'base64'编码产生作用,否则附件打开乱码

attach1 = MIMEText(open(mailtile, 'rb').read(), "base64", "utf-8")

attach1["Content-Type"] = "application/octet-stream"

# 这里filename随意写,将会在邮件中显示

attach1["Content-Disposition"] = "attrachment;filename="+mailtile+""

# 关联附件到邮件中

msg.attach(attach1)

# smtp服务

smtpserver = "smtp.163.com"

smtpport = 25

# 发送人邮件用户名或专用于smtp账户用户名

username = "XXXXX"

# 发送人邮件密码或专用于smtp账户的密码

password = "*****"

# 构建smtp对象

smtp = smtplib.SMTP()

# 连接到smtp服务

con = smtp.connect(smtpserver, smtpport)

print("连接结果: ", con)

# 登录smtp服务

log = smtp.login(username, password)

print("登录结果:", log)

# 发送邮件

print(receivers)

res = smtp.sendmail(sender, receivers.split(','), msg.as_string())

print("邮件发送结果: ", res)

# 退出

smtp.quit()

print("send email finish")

Jenkins中的配置

写上项目名称,剩下主要的就是构建

发送邮件也可以在Jenkins中配置

运行的结果

蓝色的标识成功,红色的标识失败且成功的可以收到邮件

作者:测试的旅途中

链接:https://www.jianshu.com/p/a9787d4aafcc

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625A07S2R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券