Python+Selenium笔记(十八):持续集成jenkins

(一)安装xmlrunner

使用Jenkins执行测试时,测试代码中会用到这个模块。

pip install xmlrunner

(二)安装jenkins

(1)   下载jekins

https://jenkins.io/download/

下载适合自己的,我是下载长期稳定版的。

(2)   解压后运行jenkins.msi这个文件,然后一直下一步就是了。

(3)   http://localhost:8080 登录

(4)   根据提示输入密码后,下一步。

(6)   这里第一个应该是默认安装jenkins community的常用插件,第二个应该是选择需要安装的插件。不熟悉的时候选第一个就是了。

(7)   插件安装成功后如下图所示。(如果这步有部分插件安装失败的话,就重新下载,实在安装不了就重启Jenkins服务(Windows的服务里重启),然后重新登陆后跳过这步,安装失败的插件以后再在Jenkins的插件管理中去安装)

(8)   安装完成。

(三)新建任务

(1)      首页点击【新建】。

(2)      填写相关信息后,点击【确定】。

(3)      构建触发器设置自动构建的时间。下面的是工作日每晚10点自动执行,这样第二天早上上班就能看到测试结果了。

这里有5个参数:可以点击后面?查看说明文档,*代表任意时间

第一个:分钟(0-59)

第二个:小时(0-23)

第三个:日(1-31)

第四个:月份(1-12)

第五个:星期几(0-7,0和7都代表星期日)

(4)      构建部分增加构建步骤,这里选择Windows批处理命令。

copy F:\Python\firstselenium\smoketest\*.py

python smoketests.py

(5)      构建后操作,增加操作步骤,选择Publish JUnit test result report,然后在测试报告字段填写 测试报告/*.xml。(测试报告是测试套件中配置的output参数的值,看下面的smoketests.py的代码就知道了)这样Jenkins每次运行测试的时候都会从这个文件夹读取测试结果。

(6)      配置完成后点击【保存】。

(7)      点击下图的【立即构建】,蓝色就代表成功了。

(8)      点击上图的最新测试结果可以查看最新的测试结果。(也可以点击具体Build History下面的时间,查看具体哪一次构建的测试结果,点击蓝色的球形图标的话,可以查看控制台输出)

下面的代码部分,主要的就是测试套件中的这句,其他的自己随便写一个或几个测试用例就行了

xmlrunner.XMLTestRunner(verbosity=2,output=‘测试报告‘).run(smoke_tests)

(四)smoketests.py

 1 import unittest
 2 from searchtest import SearchTest
 3 from homepagetest import HomePageTest
 4 from xmlrunner import xmlrunner
 5 #获取SearchTest类 和 HomePageTest类中的所有测试方法
 6 search_test = unittest.TestLoader().loadTestsFromTestCase(SearchTest)
 7 home_page_test = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)
 8 #创建一个包括SearchTest和HomePageTest的测试套件
 9 smoke_tests = unittest.TestSuite([home_page_test,search_test])
10 #运行测试套件
11 # unittest.TextTestRunner(verbosity=2).run(smoke_tests)
12 xmlrunner.XMLTestRunner(verbosity=2,output=‘测试报告‘).run(smoke_tests)

(五)searchtest.py

 1 import  sys
 2 import unittest
 3 from selenium import webdriver
 4 from selenium.webdriver.common.action_chains import ActionChains
 5 from selenium.webdriver.support.ui import WebDriverWait
 6 class SearchTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         # cls.driver.implicitly_wait(20)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13
14     def test_search_by_category(self):
15         category_list = [‘Java‘, ‘C++‘, ‘PHP‘, ‘Delphi‘, ‘Python‘, ‘Ruby‘,16                          ‘C语言‘, ‘Erlang‘, ‘Go‘, ‘Swift‘, ‘Scala‘, ‘R语言‘, ‘Verilog‘, ‘其它语言‘]
17         #定位首页网站分类中的编程语言
18         search_class = self.driver.find_element_by_xpath(‘//li/a[@href="/cate/2/"]‘)
19         #光标悬停在“编程语言”上
20         ActionChains(self.driver).move_to_element(search_class).perform()
21         WebDriverWait(self.driver, 20).until(lambda l: len(l.find_elements_by_xpath( 22             ‘//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li‘)) == 14)
23         # 以列表形式返回编程语言下的所有小类
24         search_small = self.driver.find_elements_by_xpath(25             ‘//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li‘)
26         small_cate = []
27         for s in search_small:
28             #去掉小类最后面的(0),并添加到列表small_cate中
29             small = str(s.text).split(‘(‘)
30             small_cate.append(small[0])
31         #检查表达式是否为true(此处检查编程语言下的小类是否与预期结果一致)
32         self.assertTrue(small_cate == category_list)
33         self.assertEqual(small_cate,category_list)
34
35     def test_search_by_look(self):
36         seach_class = self.driver.find_element_by_xpath(‘//li/a[@href="/cate/2/"]‘)
37         #定位编程语言下的小类Python
38         seach_small = self.driver.find_element_by_xpath(‘//li/a[@href="/cate/python/"]‘)
39         ActionChains(self.driver).move_to_element(seach_class).click(seach_small).perform()
40         #检查打开的网页标题是不是 Python - 网站分类 - 博客园
41         self.assertEqual(self.driver.title,"Python - 网站分类 - 博客园" )
42
43     @classmethod
44     def tearDownClass(cls):
45         cls.driver.quit()
46 #加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
47 if __name__ == ‘__main__‘:51     #加verbosity=2参数,在命令行中显示具体的测试方法
52     unittest.main(verbosity=2)

(六)homepagetest.py

 1 import sys
 2 import  unittest
 3 from selenium import  webdriver
 4 from selenium.common.exceptions import NoSuchElementException
 5 from selenium.webdriver.common.by import By
 6 class HomePageTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         cls.driver.implicitly_wait(10)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13
14     def test_search_field(self):
15         #检查博客园首页有没有搜索框,is_element_present()是自定义的方法
16         self.assertTrue(self.is_element_present(By.ID,"zzk_q"))
17     def test_search_btn(self):
18         # 检查博客园首页有没有找找看按钮
19         self.assertTrue(self.is_element_present(By.CLASS_NAME,"search_btn"))
20
21     # 检查博客园首页菜单栏信息是否与预期一致
22     def test_menu(self):
23         menu_data =[‘园子https://home.cnblogs.com/‘, ‘新闻https://news.cnblogs.com/‘,
24                     ‘博问https://q.cnblogs.com/‘, ‘闪存https://ing.cnblogs.com/‘,
25                     ‘小组https://group.cnblogs.com/‘, ‘收藏https://wz.cnblogs.com/‘,
26                     ‘招聘https://job.cnblogs.com/‘, ‘班级https://edu.cnblogs.com/‘,
27                     ‘找找看http://zzk.cnblogs.com/‘]
28         #以列表形式返回博客园首页菜单栏信息
29         self.check_menu = self.driver.find_elements_by_xpath(‘//div[@id="nav_menu"]/a‘)
30         the_menu = []
31         for c in self.check_menu:
32             #将博客园首页的菜单名称和URL添加到列表the_menu
33             the_menu.append(c.text + c.get_attribute(‘href‘))
34         #检查2个列表是否一致(检查博客园首页的菜单名称及URL是否和预期一致)
35         self.assertListEqual(the_menu,menu_data)
36
37     # 找到元素,返回True,否则返回False
38     def is_element_present(self,how,what):
39         try:
40             self.driver.find_element(by=how,value = what)
41         except NoSuchElementException as e:
42             return False
43         return True
44
45     @classmethod
46     def tearDownClass(cls):
47         cls.driver.quit()
48
49 # 加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
50 if __name__ == ‘__main__‘:54     # 加verbosity=2参数,在命令行中显示具体的测试方法
55     unittest.main(verbosity=2)

原文地址:https://www.cnblogs.com/simple-free/p/8566557.html

时间: 2024-10-09 12:40:18

Python+Selenium笔记(十八):持续集成jenkins的相关文章

Python+Selenium笔记(八):操作下拉菜单

(一) Select类 Select类是selenium的一个特定的类,用来与下拉菜单和列表交互. 下拉菜单和列表是通过HTML的<select> 元素实现的.选择项是通过<select>中的<option>元素实现的.使用前使用下面的语句导入模块. from selenium.webdriver.support.ui import Select (二) Select类的功能及方法 功能/属性 简单说明 all_selected_options 获取下拉菜单和列表中被选

转载:持续集成Jenkins+sonarqube部署教程

转载: 持续集成Jenkins+sonarqube部署教程 持续集成 1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简易的集成,后续需要修改accio源码做深度集成) 1.2 预计读者 系统配置管理员:要懂得搭建持续集成环境,有问题可以排查:架构师:了解持续集成实现原理,协助项目接入持续集成.项目在持续集成环境运行中,进行维护.分析构建异常等:维

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句

这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##本文同一时候发表在http://www.cnblogs.com/wade-xu/p/4378224.html ##转载注明出处 部门用持续集成已经非常久了,但事实上使用起来还是非常麻烦的.每当要给一个新项目set up持续集成的环境,尽管是Copy一些现有的jobs, 可是很多參数,变量须要去改,然后还有调试,少说3,4天搞一下,非常不方便. 近期比較空,就把现有的持续集成系统升级改造下,job用一套模

python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http://pan.baidu.com/s/1qXAHwg0 密码:juy7 11.2 tomcat+jenkins *******************************************************************************相关安装包下载链接:http://p

Python+Selenium笔记(十四)鼠标与键盘事件

 (一) 前言 Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作.快捷键组合.长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的ActionChains类实现的. 调用ActionChains类方法时,不会立即执行,而是将所有操作都存放在一个队列里,当调用perform()方法时,队列里的操作会依次执行 (二) 与键盘和鼠标事件有关的一些重要的方法 方法 简单说明 click(on_element=None) 单击元素 on_e

python学习笔记(十四): unittest

Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信

一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP

什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误. 为什么使用持续集成 1.减少风险2.减少重复过程3.任何时间.任何地点生成可部署的软件4.增强项目的可见性 常用的持续集成工具 Jenkins CI Travis CI Hudson CI Circle CI 市面上的持续集成工具有很多,考虑到Jenkins的稳定性,

持续集成Jenkins + robot framework + git

Jenkins + robot framework + git持续集成 一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Git Client Plugin.GIT plugin.GitHub API Plugin.GitHub plugin.Robot Framework plugin. 安装完如下: 二.配置git Path 进入系统管理—系统设置下.找到下面的位置.Path to Git executable一定要下git客户端安装路径的git.exe,而不是默认w

持续集成Jenkins+sonarqube部署教程

1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简易的集成,后续需要修改accio源码做深度集成) 1.2 预计读者 系统配置管理员:要懂得搭建持续集成环境,有问题可以排查:架构师:了解持续集成实现原理,协助项目接入持续集成.项目在持续集成环境运行中,进行维护.分析构建异常等:维护人员:重启服务.排查环境问题.项目接入支持: 1.3 关于持续集成