精华内容
下载资源
问答
  • web自动化测试流程

    千次阅读 2020-04-30 17:47:18
    1.什么是web自动化测试? 让程序代替人为自动验证web项目功能的过程 2.什么web项目适合做自动化测试 需求变动不频繁 项目周期长 需要回归测试 3.测试工具: web自动化测试:selenium app端自动化测试:Appium 接口自动化...

    一.web自动化入门

    1.什么是web自动化测试?
    让程序代替人为自动验证web项目功能的过程
    2.什么web项目适合做自动化测试
    需求变动不频繁
    项目周期长
    需要回归测试
    3.测试工具:
    web自动化测试:selenium
    app端自动化测试:Appium
    接口自动化测试;jemeter,postman
    性能测试:jemeter.loadrunner
    4.selenium webdriver工作原理
    在这里插入图片描述

    二.WebDriver基础

    1.搭建webdriver环境
    在这里插入图片描述
    2.webdriver元素定位
    2.1 8大元素定位方式
    1.id
    2.name
    3.class_name
    4.tag_name
    5.link_text
    6.partial_link_text
    7.xpath
    8.css
    2.2 定位方式分类-汇总
    1.id,name,class_name:为元素属性定位
    2.tag_name:为元素标签定位
    3.link_text,partial_link_text:为超链接定位(a标签)
    4.xpath:为元素路径定位
    5.css:为css选择器定位
    2.3 id定位方法
    find_element_by_id()
    ** id定位实现步骤分析**
    1.导入selenium包 from selenium import webdriver
    2.导入time包 import time
    3.实例化火狐浏览器 driver=webdriver.Firefox()
    4.打开页面 driver.get(‘url’) url使用r转义
    5.调用id定位方法 driver.find_element_by_id(’’)
    6.使用send_keys()发送数据 .send_keys("abc’)
    7.暂停三秒 time.sleep(3)
    8.关闭浏览器 driver.quit()
    2.4 name定位
    find_element_by_name()
    说明:html规定name属性指定元素名称,因此作用更像人名,name属性值并不唯一
    name定位方式与id一致
    2.5 class_name定位
    find_element_by_class_name()
    说明:html规定了class来指定元素类名,用法和id,name类似
    2.6 tag_name定位
    find_element_by_tag_name()
    说明:html本质就是由不同的tag(标签)组成,而每个tag都是同一类,所以tag定位效类低,tag_name定位就是通过标签名来定位
    说明:使用tag_name获取第二个元素
    代码:driver.find_element_by_tag_name(‘input’)[1].send_keys(‘123’)
    2.7 link_text定位
    说明:link_text,专门用来定位超链接文本标签
    link-text定位方法
    1.方法:find_element_by_link_text(’’)
    2.说明:需要传入a标签全部文本
    2.8 partail_link_text定位
    说明:partail_link_text是对link_text的补充,partial_link_text为模糊匹配,link_text为全部匹配
    pritail_link_text定位方法
    1.方法:find_element_by_partail_link_text()
    2.说明:需要传入a标签局部文本,能表达唯一性
    2.9 find_elements_by_xxx
    作用:查找所有符合条件的元素
    返回的定位元素格式为列表
    说明:列表数据格式的读取需要指定下标(下标从0开始)

    3.Xpath.CSS定位
    什么时候使用xpath,css
    id,class,name属性值为动态获取,随着刷新或加载而变化
    3.1 Xpath定位策略
    xpath定位方法
    driver.find_element_by_xpath()
    1.路径定位
    绝对路径
    相对路径
    2.利用元素属性
    3.层级与属性结合
    4.属性与逻辑结合
    路径(绝对路径,相对路径)
    绝对路径:从最外层元素到指定元素之间所有经过元素层级路径
    例如:/html/body/div/p[2]
    提示:绝对路径从/开始
    使用firebug可以快速生成,元素xpath绝对路径
    相对路径:从第一个符合条件的元素开始(一般配合属性区分)
    例如://input[@id=‘kw’]
    提示:相对路径以//开始
    使用firebug拓展可以快速生成,元素相对路径
    利用元素属性
    说明:快速定位元素,利用元素唯一属性
    实例://[@id=‘userA’]
    层级与属性结合
    说明:要找的元素没有属性,但他的父级有
    实例://
    [@id=‘p1’]/input
    属性与逻辑结合
    说明:解决元素间相同属性重名问题
    实例://[@id=‘telA’ and @class=‘telA’]
    Xpath延伸
    //
    [text()=‘xxx’] 文本内容是xxx的元素
    //[starts-with(@attribute,‘xxx’)] 属性以xxx开头的元素
    //
    [contains(@attribute,‘sxxx’)] 属性中含有xxx的元素

    3.2 CSS定位
    1.在selenium中极力推荐css定位,因为它比xpath定位速度要快
    css定位方法
    driver.find_element_by_css_selector()
    css定位常用策略
    1.id选择器
    2.class选择器
    3.元素选择器
    4.属性选择器
    5.层级选择器
    使用css的案例
    通过类名,id,和标签名定位
    在这里插入图片描述
    层级选择器
    说明:根据元素的父子关系来选择
    格式:元素>元素,例如:P>input 返回所有p元素下的input元素
    提示:> 可以用空格代替 例如 p input
    元素之间的嵌套关系
    在这里插入图片描述
    通过属性
    在这里插入图片描述
    通过父子关系
    在这里插入图片描述
    元素状态
    在这里插入图片描述
    css总结
    在这里插入图片描述
    4.xpath和css类试功能对比
    在这里插入图片描述
    5.元素操作方法
    1.clear() 清除文本
    2.send_keys() 模拟输入
    3.click() 单击元素
    5.1webdriver操作浏览器常用方法
    1.maxmize_window() 最大化
    2.set_window_size(100,100) 浏览器大小,设置浏览器宽高(像素点)
    3.set_window_position(300,200) 浏览器位置,设置浏览器位置
    4.back() 后退
    5.forward() 前进
    6.refresh() 刷新
    7.close() 关闭单个窗口
    8.quit() 关闭所有webdriver启动窗口
    5.2webdriver操作浏览器总结
    最大化浏览器
    driver.maxmize_window()
    刷新
    driver.refresh()
    后退
    driver.back()
    前进
    driver.forward()
    设置浏览器大小
    driver.set_window_size(300,200)
    设置浏览器位置
    driver.set_window_position(300,200)
    关闭单个浏览器窗口
    driver.close()
    关闭所有浏览器
    driver.quit()

    6.webdriver的其他用法
    1.size 返回元素大小
    2.text 返回元素文本
    3.title 获取页面title
    4.current_url 获取当前页面url
    5.is_display() 判断元素是否可见
    6.is_enabled() 判断元素是否可用
    7.get_attribute(’'xx") 获取属性值
    提示:
    1.size,text.title,current_url:为属性,调用时无括号
    2.title,current_url:使用浏览器实例化对象直接调用,例如:driver.title
    6.1webdriver其他常用方法总结:
    获取文本框大小
    size=driver.find_element_by_id(‘userA’).size
    print(‘size’:size)
    获取a标签内容
    text=driver.find_element_by_id(‘fwa’).text
    print(‘a标签text’:text)
    获取title
    title=driver.title
    获取当前页面url
    url=driver.current_url
    获取a标签href属性值
    href=driver.find_element_by_id(‘fwa’).get_attribute(‘href’)
    判断span是否显示
    display=driver.find_element_by_id_css_selector(‘span’).is_displayed()
    判断取消按钮是否可用
    enabled=driver.find_element_by_id(‘cancelA’).is_enabled()

    三.中级API

    包括:元素等等,警告框操作,下拉选择框,滚动条,切换frame表单,窗口截图,键盘鼠标操作
    1.webdriver鼠标操作
    说明:webdriver中将操作鼠标的方法封装在ActionChains类中
    1.double_click() 双击
    2.drag_and_drop() 拖动
    3.move_to_element() 悬停
    4.perform() 执行,用次方法执行以上所有鼠标方法
    例如:注册页面A,在用户名文本框上点击鼠标双击
    1.导包:from selenium.webdriver.common.action_chains import ActionChains
    2.实例化ActionChains对象:action=ActionChains(driver)
    3.调用双击方法:element=action.double_click(username)
    4.执行:element.perform()

    2.webdriver键盘操作
    说明:webdriver中将操作键盘的方法封装在keys类中
    导包:from selenium.webdriver.commom.keys import keys
    2.1常用的键盘操作

    1. send_keys(Keys.BACK_SPACE)删除键(BackSpace)
    2. send_keys(Keys.SPACE)空格键(Space)
    3. send_keys(Keys.TAB)制表键(Tab)
    4. send_keys(Keys.ESCAPE)回退键(Esc)
    5. send_keys(Keys.ENTER)回车键(Enter)
    6. send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
    7. send_keys(Keys.CONTROL,‘c’)复制(Ctrl+C)

    3.元素等待
    隐式等待调用方法
    方法:implicitly_wait(秒),最大等待时长
    调用:driver.implicitly_wait(10)
    说明:如果定位某一元素失败,就会触发隐式等待有效时长,如果在指定时长内加载完毕则继续执行,否则抛出NosuchelementExcption异常,如果元素定位到了不会触发隐式等待

    4.下拉选择框
    说明:下拉框就是HTML中的select元素
    4.1select类
    select方法:
    1.select_by_index() 根据option索引来定位,从0开始
    2.select_by_value() 根据option属性 value值来定位
    3.select_by_visible_text() 根据option显示文本来定位
    4.2 select类实现方法
    1.导包select类 from selenium.webdriver.support.select import Select
    2.实例化select类 select=Select(driver)
    3.调用方法:select.select_by_index(0)
    select.select_by_visible_text(‘上海’)
    select.select_by_value(‘cq’)select_by_value(‘cq’)

    5.警告框处理
    说明:webdriver对警告框的操作,有专门的处理方法
    提示:html中常用对话框有三种,处理方法都一样
    1.alert
    2.confirm
    3.prompt
    5.1 警告框处理方法
    1.text 返回文字信息
    2.accept() 接受对话框选项
    3.dismiss() 取消对话框选项
    5.2 调用方法
    1.获取警告框
    alert=driver.switch_to.alert
    2.调用
    alert.text
    alert.accept()
    alert.dismiss()
    5.3处理警告框总结
    定位alert按钮
    alert=driver.find_element_by_id(‘alert’).click()
    获取警告框
    alert=driver.switch_to.alert
    打印警告文本
    print(alert.text)
    接受警告栏
    alert.accept()
    取消警告栏
    alert.dismiss()

    6.滚动条操作
    说明:调用JavaScript方法操作滚动条
    为什么要学习滚动条:
    在html页面中,由于前端技术框架原因,页面元素为动态显示,元素根据滚动条下拉而被加载
    6.1需求分析实现
    1.设置JavaScript脚本控制滚动条 js=‘windos.scrollTo(0,100)’
    2.webdriver调用js脚本方法 driver.execute_script(js)

    7.frame表单切换
    说明:webdriver类库中封装了html页面中使用frame表单框架技术的方法
    方法:driver.switch_to.frame(’’) 切换表单方法
    driver.switch_to.default_content() 恢复默认页面方法
    7.1操作原理
    1.html中iframe标签提供了内联结构,使用内联结构可以在一个浏览器中显示多个页面
    2.iframe标签是外层页面的标签,若想操作iframe框架内嵌的页面,需要先定位到iframe页面
    3.通过switch_to.frame()切换到内层页面,在进行内层页面的操作
    4.内层页面的操作和普通页面一致,元素定位,元素操作
    7.2 frame表单切换
    说明:在webdriver类库中封装了HTML页面中使用frame表单框架技术定位的方法
    操作步骤:
    1.定位到iframe标签
    2.完成切换
    若iframe具有id属性,直接使用id属性值切换进内层页面
    driver.switch_to,.frame()
    定位到iframe元素,再切换进入
    element=driver.find_element_by_id(’’)
    driver.switch_to.frame(element)
    在这里插入图片描述
    8.多窗口
    多窗口切换
    说明:再webdriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法
    句柄(handle,窗口的唯一标识码)
    方法:
    driver.current_window_handle 获取当前窗口句柄
    driver.window_handles 获取所有窗口句柄
    driver.switch_to.window() 切换到指定句柄

    9.窗口截图
    方法:在同级目录下创建image文件夹
    get_screenshot_as_file(’./image/01.png’) 截取当前窗口

    10.验证码
    说明:在web应用中,需要输入验证码
    10.1 验证码处理方式:
    去掉验证码 测试环境下
    设置万能验证码 生产环境
    记录cookie
    10.2 记录cookie
    方法:
    get_cookies() 获取本网站所有本地cookie
    get_cookie(name) 获取指定cookie
    add_cookie(str) 添加cookie str:为字典格式 {’ ’ : ’ '}
    10.3实现步骤分析
    1.登录百度,抓取(BAIDUID,BDUSS)
    2.使用add_cookie()方法,添加(BAIDUID,BDUSS)键和值
    3.调用刷新方法 driver.refresh()
    10.4代码示例
    from selenium import webdriver
    import time
    driver=webdriver.Firefox()
    driver.get(r"https://www.baidu.com")
    driver.add_cookie({‘name’:‘BAIDUID’,‘value’:‘根据实际填写’})
    driver.add_cookie({‘name’:‘BDUSS’,‘value’:‘根据实际填写’})
    time.sleep(3)
    driver.refresh()
    time.sleep(3)

    四.自动化测试框架

    1.unitTest框架
    专门用来执行代码测试的框架
    为什么使用unittest框架
    1.能够组织多个用例执行
    2.提供丰富断言方式
    3.提供丰富日志结果和测试结果
    1.2 unittest 核心要素
    1.TestCase
    2.TestSuite
    3.TextTestRunner
    4.Fixture
    1.3 TestCase
    说明:一个testcase就是一条测试用例
    使用:
    1.导包 import unittest 导入unittest框架
    2.继承 unittest.TestCase 新建测试类继承unittest.TestCase
    提示:
    1.测试用例:在自动化测试用,一条用例就是一个完整的测试流程
    2.测试方法名称必须以test开头
    1.4 TestSuite
    说明:测试套件,多条测试用例集合在一起就是一个TestSuite
    使用:
    1.实例化:suite=unittest.TestSuite()
    suite为TestSuite得实例化名称
    2.添加用例:suite.addTest(类名(‘方法名’))
    3.添加整个类:suite.addTest(unittest.makeSuite(类名)) 搜索指定类中以test开头的方法
    提示:一条测试用例内,多个方法也可以被执行
    testsuite要配合TextTestRunner才能被执行
    1.5 TextTestRunner
    说明:测试执行,用来执行测试用例套件的
    使用:
    1.实例化 runner=unittest.TextTestRunner()
    runner是texttestrunner的实例化名称
    2.执行 runner.run(suite)
    suite为测试套件名字
    1.6 Fixture
    说明:是一个概述,测试环境的搭建和销毁
    使用:
    1.初始化(搭建) def setup( ) 首先执行 此方法继承于unittest.TestCase
    2.结束 def teardown() 最后执行 此方法继承于unittest.TestCase
    提示:
    1.必须继承于unittest.TestCase类,setup和teardown才是一个Fixture
    2.setup一般做初始化工作,比如:实例化浏览器,浏览器最大化,设置隐式等待
    2.teardown一般做结束工作,比如:退出登录,关闭浏览器
    4.如果一个测试类有多个test开头方法,每个方法执行前都运行setup,结束时运行teardown

    2.uniTest断言
    断言分类:
    1.布尔类型断言
    2.比较断言
    3.复杂断言
    2.1 布尔类型断言 结果只有True和False
    在这里插入图片描述
    2.2 断言主要代码:
    获取登录信息
    text=self.driver.find_element_by_css_selector(’.loginfo’).text
    print(‘登录成功信息为’,text)
    try:
    使用断言判断text是否包含admin字符
    self.assertIn(‘admin’,text)
    excpt AssertionError as e:
    driver.get_screenshot_as_file(’./image/01.png’)
    抛出异常
    print(e)

    展开全文
  • 该文件详细实践了Python+selenium自动化测试的整体流程,包括编写用例、执行用例、生成HTML格式的测试报告、识别图片验证码功能、在测试过程中的截图功能。用例执行结束邮件推送给相关人员 ,在邮件中显示测试结果。
  • web-自动化测试流程

    2020-09-25 13:47:26
    1. 自动化测试流程 (1) 需求分析 (2) 挑选适合做自动化测试的功能 (3) 设计测试用例 (4) 搭建自动化测试环境 [可选] (5) 设计自动化测试项目的架构 [可选] (6) 编写代码 (7) 执行测试用例 (8) 生成测试报告并分析...

    1. 自动化测试流程

    (1) 需求分析

    (2) 挑选适合做自动化测试的功能

    (3) 设计测试用例

    (4) 搭建自动化测试环境 [可选]

    (5) 设计自动化测试项目的架构 [可选]

    (6) 编写代码

    (7) 执行测试用例

    (8) 生成测试报告并分析结果

    2、自动化项目框架自动化框架

    ① 顺序:先编写工具类–>(父类)–>PO代码(对象库存–>操作层–>业务层)–>unittest框架编写脚本(数据驱动JSON读取)–>测试报告–>日志

    ② 用了selenium和unittest框架 使用po三层分层模式进行框架设计

    ③ 然后编写测试脚本调用 用unittest框架编写 数据驱动 存放测试 数据

    ④ 执行完成了之后 通过第三方模块生成测试报告

    ⑤ 日志

    在这里插入图片描述
    在这里插入图片描述

    Base:存放PO继承
    Page :PO文件(用例,报告)
    Data: json数据文件夹
    Img :截图文件夹
    Log :日志存储文件夹
    Report:测试报告存储
    Script:脚本文件夹(用例脚本,报告脚本,用例套件脚本)
    Until:工具类
    

    在这里插入图片描述
    点赞关注~~持续分享,加入我们,642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

    展开全文
  • 自动化测试流程(一般流程)2. Web 项目运行的必备条件3. Web UI 自动化注意点4. XPath 策略方法扩展5. 日志模块 1. 自动化测试流程(一般流程) 需求分析 确定目标项目是否适合进行自动化测试(什么样的项目适合自动...

    1. 自动化测试流程(一般流程)

    • 需求分析

      • 确定目标项目是否适合进行自动化测试(什么样的项目适合自动化)
    • 挑选适合做自动化测试的功能

      • 电商项目主流程
        • 登录/注册
        • 浏览商品
        • 购物车
        • 订单模块
        • 支付模块
          • 第三方业务
        • 物流跟踪
          • 第三方服务
      • 一般情况下, 需要和第三方业务进行交互的模块, 都不适合执行自动化.
      • 手工测试业务逻辑相对的复杂的也不适合自动化.例如:OA 系统
    • 设计用例

      • 讲: 运用手工测试阶段的各种测试方法出用例即可
      • 做: 从现成的手工测试用例中抽取子集(适合实现断言端的用例)即可
    • 搭建自动化测试环境 [可选]

      • 开发环境组成
        • 开发语言: Python
          • Python 解释器
          • 开发工具 IDE(IDE: 集成开发环境的简称)
            • PyCharm
      • 测试环境组成
        • 浏览器
        • 浏览器驱动
        • Selenium 包
        • 各种插件
          • 参数插件
    • 设计自动化测试项目的架构 [可选]

      • 环境组成
      • 自动化项目工程结构
      • 设计模式的选型(PO)
      • 实现数据驱动
      • 持续集成(CI/CD)
        • Jenkins
    • 编写代码

      • 确保自动化脚本能够正常执行(需要调试)
    • 执行测试用例

    • 生成测试报告并分析结果


    2. Web 项目运行的必备条件

    • 硬件层面

      • 服务器设备
        • 实体设备
          • 机房
        • 虚拟设备
          • VPS(虚拟服务器)(大多数公司采用的方案)
          • 腾讯云/阿里云/华为云/百度智能云
          • 工作中要获取的信息
            • 账号密码
    • 软件层面

      • 操作系统
        • Linux(免费)
        • Windows Server(收费)
      • Web 系统软件
        • Apache
        • Nginx
        • IIS
      • 数据库软件
        • MySQL
      • 开发语言
        • Java
        • PHP
      • 环境构建问题参考方案
        • 直接询问开发照开发环境原样搭建
        • 直接使用一体安装包: LNMP 或 LAMP

    3. Web UI 自动化注意点

    • 只关注 UI 界面效果及逻辑即可, 不用校验数据库中的数据
    • 测试过程中对数据库产生脏数据如何处理?
      • 自动测试执行前, 对数据库进行备份, 执行完成后, 还原数据库备份(测试环境)
      • 需要联络 DBA(数据库管理员)(生产环境)

    4. XPath 策略方法扩展

    //*[contains(text(),'部分文本信息')]
    

    策略说明: 根据给出的部分文本内容定位元素


    5. 日志模块

    • 代码步骤

      1. 导包:
        • import logging
        • import logging.handles
      2. 实例化日志器
        1. logging.getLogger()
        2. 设置日志输出级别方法
          • 日志器对象.setLevel(level=logging.DEBUG) -->DEBUG: 日志级别常量
      3. 实例化处理器
        1. logging.StreamHandler() --> 输出日志到控制台
        2. logging.FileHandler() --> 输出日志到文件(文件大小不可控)
        3. logging.hanlders.TimedRotatingFileHandler() -->输出日志到文件(控制文件数量及大小)
      4. 实例化格式器
        1. 格式化占位符:fmt = ‘%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s’
        2. formatter = logging.Formatter(fmt=fmt)
      5. 将格式器添加给处理器
        • 处理器对象.setFormatter(格式器对象)
      6. 将处理器添加给日志器
        • 日志器对象.addHandler(处理器对象)
    • 注意:

      • 日志模块无论是基本用法还是高级用法, 都属于一种设置型代码, 不要死记, 只要清楚需要修改的内容, 完成调用即可!
    • 代码演示1–日志模块基本使用

      """ 
      日志模块基本使用 -- 输出日志信息到文件
      """
      import logging
      
      # 注意:
      # 1. 如果指定将日志信息输出到文件, 则控制台不会在打印日志信息
      # 2. 日志文件默认情况下, 是以追加的形式添加后续内容的
      fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
      logging.basicConfig(filename='./info.log', level=logging.DEBUG, format=fmt)
      
      # 格式化输出
      # fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
      # logging.basicConfig(format=fmt, level=logging.DEBUG)
      
      # 设置日志输出级别
      # 注意: 系统默认的日志输出级别为 warning 级别
      # logging.basicConfig(level=logging.DEBUG)
      
      # 自定义日志输出方法
      logging.debug('调试信息')
      logging.info('普通信息')
      logging.warning('警告信息')
      logging.error('错误信息')
      logging.critical('严重错误')
      
    • 代码演示–日志模块高级用法1

      """
      日志模块高级用法1 -- 将日志信息同时输出到控制台和文件中
      """
      
      # 导包
      import logging
      
      # 实例化日志器
      logger = logging.getLogger()
      logger.setLevel(level=logging.DEBUG)  # 设置日志级别
      
      # 实例化处理器(多个)
      sh = logging.StreamHandler()  # 控制台
      fh = logging.FileHandler('./info.log')  # 文件
      
      # 实例化格式器(多个, 跟处理器对应)
      fmt1 = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
      formatter1 = logging.Formatter(fmt=fmt1)
      
      fmt2 = '%(asctime)s %(levelname)s - %(message)s'
      formatter2 = logging.Formatter(fmt=fmt2)
      
      # 将对应的格式器添加给处理器
      sh.setFormatter(formatter1)
      fh.setFormatter(formatter2)
      
      # 将处理器添加给日志器
      logger.addHandler(sh)
      logger.addHandler(fh)
      
      # 调用日志输出, 查看结果
      while True:
          logger.debug('😈😈😈😈😈😈😈😈😈😈😈😈')
      
    • 代码演示–日志模块高级用法2

      """
      日志模块高级用法2:
               每日生成一个日志文件(实际需求)
               每 x 秒生成一个日志文件(伪需求)
      """
      
      # 导包
      import logging.handlers
      
      # 实例化日志器
      logger = logging.getLogger()
      logger.setLevel(level=logging.DEBUG)  # 设置日志级别
      
      # 实例化处理器
      """
      常用参数
      filename : 日志文件存放路径及文件名和后缀
      when : 时间单位(S/M/H/D...)
      interval : 间隔数值
      backupCount : 生成的日志文件总数 
      """
      # # 每日生成一个日志文件(实际需求)
      # th = logging.handlers.TimedRotatingFileHandler(filename='./my_info.log',
      #                                                when='D',
      #                                                interval=1,
      #                                                backupCount=1)
      
      # 每 x 秒生成 x 个日志文件(伪需求)
      th = logging.handlers.TimedRotatingFileHandler(filename='./my_info.log',
                                                     when='S',
                                                     interval=4,
                                                     backupCount=4)
      
      # 实例化格式器
      fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
      formatter = logging.Formatter(fmt=fmt)
      
      # 将格式器添加给处理器
      th.setFormatter(formatter)
      
      # 将处理器添加给日志器
      logger.addHandler(th)
      
      while True:
          logger.debug('🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄')
      
    展开全文
  • 总结一下自动化测试对企业的核心价值:核心价值一、支撑版本快速迭代敏捷研发流程促使软件版本升级频繁,每次升级都需要快速完成测试并上线,这无法依靠人工来实现,此时自动化测试正是你想要的,虽然它无法主动发现...

    总结一下自动化测试对企业的核心价值:
    核心价值一、支撑版本快速迭代
    敏捷研发流程促使软件版本升级频繁,每次升级都需要快速完成测试并上线,这无法依靠人工来实现,此时自动化测试正是你想要的,虽然它无法主动发现问题,但它可以保证正常的功能不出问题。
    核心价值二、提升软件质量
    自动化测试可以将手工测试过程中的低级的、简单的测试替换掉,进而释放人力,让人去做更加高级,更加复杂的深度测试。这样势必增加了测试的全面性,质量获得保障。
    核心价值三、节约测试成本
    自动化测试可以放在夜间进行,这是人工测试无法做到的,很多企业都没有利用好这一点。
    有人问我“多测测”WEB自动化测试工具与开源“selenium”工具对比怎么样?从三个纬度对比:
    1,建设效率
    “多测测”支持录制,录制准确率可达99%,“selenium”需要搭建框架和编码,“多测测”在建设效率上是“selenium”的二十倍。
    2,维护效率
    “多测测”支持运行的错误主动处理,错误即可解决,“selenium”需要技术人员逐行调试定位,“多测测”在维护效率上是“selenium”的十倍。
    3,上手速度
    “多测测”的上手要求是懂业务,上手平均时间是半天,“selenium”的上手要求是懂业务,懂自动化框架,懂编程,上手平均时间是一个月。
    这就是收费的与免费的区别,那么为什么技术人员都喜欢免费的,而老板们喜欢收费的呢?主要是角度不同,技术人员去弄开源的一可以获得成就感,二可以获得技能提升,老板们喜欢收费的,一是可以快速解决问题,二是服务有保障,其实最后算下来,还是免费的东西更贵。
    下载链接:http://www.aitestor.com/download/duocece/duocece_setup.exe

    展开全文
  • 自动化测试 让程序代替人为去验证程序功能的过程,即在预设条件下运行程序系统 流程 确定、搭建自动化框架 编写测试用例,将其转化为soupui(接口)—>自动化测试脚本 执行自动化测试脚本 输出执行结果报告 完善...
  • 原标题:Python自动化测试学习路线之Web自动化测试【模块二】01.熟悉自动化测试流程(自动化测试的定义和目的;自动化测试的优势;自动化测试的流程自动化测试的技能要求;Web自动化主流工具的了解)02.selenium环境搭建...
  • 一、 自动化测试背景 1、 什么是自动化测试? 机器替代手工测试,自动测验结果是否符合预期 2、 自动化测试能够带来什么? 替代大量重复性工作,减轻双手工作量 提高回归测试效率,适合敏捷测试 ...
  • web自动化测试框架

    2021-02-22 11:30:41
    使用selenium构建web自动化测试框架的流程 在项目中添加7个包:browserdriver、config、business、test_data、test_case、test_report、test_run browserdriver包 browserdriver包:专门用来存放游览器驱动 config...
  • 在介绍部分,文章说道,软件测试是软件研发流程中的重要一环,占到整体时间周期的40%-70%,软件测试的目的是确定软件符合需求准确实现了特性满足金主的预期和需求总之一句话,软件测试很重要。下面文章又介绍了测试...
  • 自动化测试流程

    2021-03-30 09:52:18
    1.需求分析(分析可以做web自动化的需求)。 2. 选择方案(web自动化就选择selenium)。 3.制定测试计划(模块、时间)...5.编写用例(根据测试计划来编写自动化测试用例)。 6.编码。 7.执行。 8.分析测试报告。 ...
  • 本发明涉及计算机技术领域,具体的说是基于Cucumber和Testng的WebUI自动化测试方法。背景技术:行为驱动测试方法已经在敏捷开发模式中普遍使用,通过使用标准化的语言将客户需求人员、开发人员和测试人员关联在一起...
  • 自动化测试流程

    2017-08-07 15:55:00
     在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,下发给用例设计者。  ...
  • 背景 为什么要设计自动化测试框架,主要是由于以下几点原因: 统一不同的测试技术,协同工作 ...构建通用的Web自动化测试框架,这里我们选用了一些技术和工具,整体架构图如下: web_test_arch...
  • 电商项目Web自动化测试实战

    千次阅读 2020-02-26 16:56:54
    Web自动化主要针对:主要流程和重要功能的自动化(有效等价类、异常场景) 测试准备: TPshop开源电商项目 测试业务场景: 登录->搜索->添加购物车->结算->确认订单->支付(不能使用) 实现思路: ...
  • 梳理下搭建web自动化框架的流程:创建目录:cases:存放测试用例,unittest框架要求用例名必须以test开头,所以命名test_case.pytest_case.py代码如下:继承unittest.TestCase类下面的方法setupclass(),...
  • Selenium-Web自动化测试

    2020-04-17 15:46:47
    什么是自动化测试 需求到框架 常见的测试流程 手工用例 自动化测试用例 两者区别 功能测试用例要点 Selenium简介 Selenium 是一组软件工具集,每一个都有不同的方法来支持测试自动化。大多数使用 Selenium 的...
  • 来源:https://www.testwo.com基本的自动化测试有哪些?1.单元测试:直接测试代码的逻辑,一个函数或一个模块都可以是一个单元。单元测试分两种形态:a. TDD(Test-Driven Development 测试驱动开发):在开发功能...
  • Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案例的可读性。认识 Paget Object一、...
  • WEB自动化测试软件QuickTester使用教程

    千次阅读 2019-12-31 16:15:50
    selenium录制器是最近刚流行起来的一个WEB自动化测试工具,由多测测团队开发。 Selenium录制器采用关键字驱动的理念,简化测试用例的创建和维护,可以直接运行在浏览器中,就像真正的用户在操作一样。 自动化脚本...
  • WEB自动化流程和框架

    2020-10-26 16:53:21
    先会进行评估若是项目更新迭代比较多、回归较多就需要介入自动化,然后挑选适合做自动的模块----再从已有的功能用例中挑选自动化测试用例—搭建自动化测试环境—然后搭建自动化测试框架—再进行用例脚本的开发----...
  •  Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将Web自动化测试应用于工作中,进而形成能够独立成章的博文,希望能够为国内web自动化...
  • 和传统的QA(QualityAssurance)不同,QE的主要职责是通过工程化的手段保证项目质量,这些手段包括但不仅限于编写单元测试、集成测试,搭建自动化测试流程,设计性能测试等。可以说,QE身上兼具了QA的质量意识和开发的...
  • Appium是一个开源移动端自动化测试的框架,可用于原生,混合和移动Web应用程序测试。他使用WebDriver协议驱动iOS,Android和Windows应用程序,使用方式和selenium类似(继承) 优势 可以跨平台同时支持Android,iOS ...
  • 我想大多数开始进行web端页面测试的人,一开始会的都是在页面上点点点,然后一看到页面上有什么图片失效啊,页面遮挡就觉得是找到了大bug;一开始我也是这样,尽管我很谨慎,很仔细,把页面上的每一个角落都看了几十...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 901
精华内容 360
关键字:

web自动化测试流程