Python + Selenium自动化测试 -- 第一次框架设计(上)
2018-01-24 11:33
621 查看
自动化测试框架:
1、基本组件:
1)配置文件管理
2)报告和日志文件输出
3)自定义库的封装(如:自定义搜索引擎类)
4)测试脚本文件(测试用例文件)
5)第三方插件
6)持续集成(git,svn,ant,maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键执行测试脚本。)
下面简单介绍一下unittest测试框架:
unittest是一个单元测试框架,是Python编程的单元测试框架。共享测试用例中的初始化和关闭退出代码,最小单元是test,即一个测试用例
1)测试固件
包含“测试代码之前的准备部分”setUp()和“测试结束之后的清扫代码”tearDown()
2)测试用例
以test开头的函数
下面开始项目:
代码参考链接:first_framework_demo
新建项目,创建文件目录如下:
1)配置文件config.ini:
2)logger.py文件:
3)brower_engine.py文件:
4) baidu_homepage.py暂时为空
5)testsuits/baidu_search.py
运行测试脚本baidu_search.py,会在根目录下的logs文件生成日志文件.
1、基本组件:
1)配置文件管理
2)报告和日志文件输出
3)自定义库的封装(如:自定义搜索引擎类)
4)测试脚本文件(测试用例文件)
5)第三方插件
6)持续集成(git,svn,ant,maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键执行测试脚本。)
下面简单介绍一下unittest测试框架:
unittest是一个单元测试框架,是Python编程的单元测试框架。共享测试用例中的初始化和关闭退出代码,最小单元是test,即一个测试用例
1)测试固件
包含“测试代码之前的准备部分”setUp()和“测试结束之后的清扫代码”tearDown()
2)测试用例
以test开头的函数
下面开始项目:
代码参考链接:first_framework_demo
新建项目,创建文件目录如下:
1)配置文件config.ini:
# -*- coding:utf-8 -*- ; 中文注释 [browserType] ;browserName = Firefox browserName = Chrome ;drowserName = IE [testServer] URL = https://www.baidu.com ;URl = www.goole.com
2)logger.py文件:
import logging import os.path import time class Logger(object): def __init__(self, logger): ''' 指定保存日志的文件路径,日志级别以及调用文件 将日志存入到指定的文件中 :param logger: ''' # 创建一个logger self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG) # 创建handler,写入日志文件 rq = time.strftime('%Y%m%d%H%M',time.localtime(time.time())) log_path = os.path.dirname(os.path.abspath('.')) + '/logs/' + rq + '.log' fh = logging.FileHandler(log_path) fh.level = logging.INFO # 创建handler, 用于输出控制台 ch = logging.StreamHandler() ch.level = logging.INFO # 定义handler的输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.formatter = formatter ch.formatter = formatter self.logger.addHandler(fh) self.logger.addHandler(ch) def getlog(self): return self.logger
3)brower_engine.py文件:
""" 浏览器引擎类 """ import configparser import os.path from selenium import webdriver from framework.logger import Logger logger = Logger(logger="BrowserEngine").getlog() class BrowserEngine(object): def __init__(self, driver): self.driver = driver def open_browser(self): config = configparser.ConfigParser() file_path = os.path.dirname(os.path.abspath('.')) + '\config\config.ini' print(file_path) # 但是对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用 utf-8-sig, 使用utf-8没办法。 # 【我没试过,http://blog.csdn.net/liujingqiu/article/details/77677256】 # 对于我写的代码 此处是utf-8-sig 或者 utf-8 都可以 config.read(file_path,encoding="utf-8") browser = config.get("browserType", "browserName") logger.info("You had select %s browser." % browser) url = config.get("testServer", "URL") logger.info("The test server url is: %s" % url) if browser == "Firefox": self.driver = webdriver.Firefox() logger.info("firefox.") elif browser == "Chrome": self.driver = webdriver.Chrome() logger.info("Chrome.") elif browser == "IE": self.driver = webdriver.Ie() logger.info("Ie.") self.driver.get(url) logger.info("Open url: %s" % url) self.driver.maximize_window() logger.info("Maximize the current window.") self.driver.implicitly_wait(10) logger.info("Set implicitly wait 10 seconds.") # self.driver = driver return self.driver def quit_browser(self): self.driver.quit() logger.info("Now, Close and quit the browser.")
4) baidu_homepage.py暂时为空
5)testsuits/baidu_search.py
""" 测试脚本 """ import time import unittest from framework.brower_engine import BrowserEngine """ unittest 一个单元测试框架 共享测试用例中的初始化和关闭退出代码 最小单元是test,即一个测试用例 1)测试固件 包含“测试代码之前的准备部分”setUp()和“测试结束之后的清扫代码”tearDown() 2)测试用例 以test开头的函数 """ class BaiduSearch(unittest.TestCase): def setUp(self): """ 前提准备工作 :return: """ self.engine = BrowserEngine.__new__(BrowserEngine) self.driver = self.engine.open_browser() def tearDown(self): """ 测试结束后的操作 :return: """ self.engine.quit_browser() # self.driver.quit() def test_baidu_search(self): self.driver.find_element_by_id('kw').send_keys("胡歌") time.sleep(1) try: assert '胡歌' in self.driver.title print('测试通过.') except Exception as e: print('测试失败.', format(e)) a1c4 if __name__ == '__main__': unittest.main()
运行测试脚本baidu_search.py,会在根目录下的logs文件生成日志文件.
相关文章推荐
- Python + Selenium自动化测试 -- 第一次框架设计(下)
- Python+Selenium框架设计篇之11-自动化测试报告的生成
- Python+Selenium从零开始到框架设计的结束总结篇
- Python+Selenium中级篇之0-设计自动化测试框架的前提技能介绍
- python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)
- python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)
- python3.5+selenium3.4自动化测试10_selenium框架2.0-unittest(下)
- Python+Selenium框架设计篇之3-什么是POM
- Python+Selenium框架设计篇之1-什么是自动化测试框架
- Python+Selenium框架设计篇之4-框架内封装日志类和浏览器引擎类
- Python+Selenium框架设计篇之10-unittest执行脚本方法之discover()方法
- Python+Selenium框架设计--- Page Object Model
- Selenium自动化测试Python五:WebDriver设计模式
- Python+Selenium框架设计篇之7-进一步实现POM和可能遇到问题解决办法
- Python+Selenium框架设计篇之9-unittest执行脚本方法之makeSuite()
- Python+Selenium框架设计篇之6-一个类文件多个测试方法情况下测试固件的写法
- Python+Selenium框架设计篇之8-unittest执行脚本方法之addTest
- python2.7基于selenium的web自动化测试项目--框架设计
- python3 + selenium3 web自动化测试环境搭建
- python+selenium自动化测试--try except测试断言