当前位置: 首页 > news >正文

轻量级自动化测试框架WebZ

一、什么是WebZ

  WebZ是我用Python写的“关键字驱动”的自动化测试框架,基于WebDriver。

  设计该框架的初衷是:用自动化测试让测试人员从一些简单却重复的测试中解放出来。之所以用“关键字驱动”模式是因为我觉得这样能让测试人员(测试执行人员)快速上手,无需编写代码也能执行自动化测试。

二、为啥开源

  WebZ的开发用到了一些现有的开源项目,我很感谢这些开源项目的作者,希望自己也能成为一名开源者,和大家分享自己的成果,一起交流技术、一起成长。

  该项目的GitHub地址:https://github.com/noahzn/WebZ


三、开源说明

 
# Portions copyright (c) 2014 ZMAN(ZhangNing)## This Source Code Form is subject to the terms of the Mozilla Public# License, v. 2.0. If a copy of the MPL was not distributed with this# file, You can obtain one at http://mozilla.org/MPL/2.0/.## Name: WebZ# Description: keyword-driven automated testing framework# Author: ZMAN(ZhangNing)## This project also uses some third-party modules:## selenium: Licensed under the Apache License, Version 2.0 (the "License");# Copyright 2008-2013 Software Freedom Conservancy.## splinter: Licensed under the BSD License;# Copyright 2012 splinter authors. All rights reserved.## reportlab: Licensed under the BSD License;# Copyright ReportLab Europe Ltd. 2000-2014.## xlrd: Licensed under the BSD License;# Portions copyright 2005-2009, Stephen John Machin, Lingfo Pty Ltd. All rights reserved.#

四、使用方法

  1.将 chromedriver.exe 放置在任意位置,添加到系统环境变量中。

  2.将编写完成的自动化测试用例文件“case.xlsx”放在 D 盘根目录下。

  3.运行WebZ.exe。若用例被正确执行,会在 D:\WebZ 目录下找到测试报告。

  注:该程序在Win7 x64环境下打包而成。

示例:

测试用例(case.xlsx):

QQ截图20141203212752

  如上图所示,这个文件包含两条测试用例,向大家展示了一些WebZ中基础的关键字。关于关键字的详细定义,请参见附录。

  编写测试用例的人员如果懂得一些前端知识,那就很赞了,不了解也没关系,现在很多浏览器都有“元素审查”功能。以Chrome为例,按F12进入审查元素模式,点击“放大镜”图标。

image

  然后点击你想要操作的元素,如“百度一下”按钮,此时浏览器就会高亮元素信息,直接右键复制CSS或XPATH即可,然后和WebZ提供的关键字相结合就可以对元素进行操作啦。

image

  我们来跑一下这两条用例,自动生成测试报告(如果有未通过的用例,会列出失败步骤):

  (好吧,本来报告内容是中文的,因为我发到GitHub了,所以我把这些中文都改成了英文,国际化嘛……)

image

五、实现解析

  如果你想要在Python开发环境中运行WebZ,请使用Python3,你还需要安装以下几个开源库:reportlab、xlrd、selenium、splinter。

  WebZ结构大致是这样的:

image

  读取excel中的用例进行格式预处理、分段,读取定义的关键字,通过WebDriver进行分类处理,同时捕捉失败信息(如果用例执行失败,会再次尝试,共尝试三遍),最后生成报告。

  当时设计WebZ时,构思就是这是一个轻量级的WEB自动化测试框架,但是要保留可扩充性的特点,主要可以对关键字进行自行扩充和封装。

  “自动化测试是将一些重复性高却又简单的手动测试自动化,而不是要取代自动化。实行自动化测试前要考虑实现成本和收益情况”——好吧,这句话是我说的,我目前的个人观点~欢迎探讨 :)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 零基础国产GD32单片机编程入门(五)OLED显示及实战含源码
  • Spring MVC常用注解及用法
  • 常用工具网站之Emoji
  • Java异常详解(全文干货)
  • 2024中国国际大数据博览会:引领数字变革,共创未来辉煌
  • 页面卡顿检测方案
  • 【STL】红黑树的全面探索与红黑树的实现
  • SQL SERVER日常表碎片和统计信息优化脚本
  • 构建Dubbo工程详解
  • Android Studio Koala下载并安装,测试helloworld.
  • 力扣--1657.确定两个字符串是否接近
  • 氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享
  • 力扣45.跳跃游戏II
  • 通过ICMP判断网络故障
  • Qt:鼠标事件
  • ----------
  • angular2开源库收集
  • Angular4 模板式表单用法以及验证
  • Bytom交易说明(账户管理模式)
  • ES6系列(二)变量的解构赋值
  • GraphQL学习过程应该是这样的
  • input的行数自动增减
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java|序列化异常StreamCorruptedException的解决方法
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode98. Validate Binary Search Tree
  • mysql常用命令汇总
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • sublime配置文件
  • 阿里云Kubernetes容器服务上体验Knative
  • 关于List、List?、ListObject的区别
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微服务框架lagom
  • ​​​【收录 Hello 算法】9.4 小结
  • # SpringBoot 如何让指定的Bean先加载
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (第27天)Oracle 数据泵转换分区表
  • (二)springcloud实战之config配置中心
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (七)Flink Watermark
  • (七)理解angular中的module和injector,即依赖注入
  • (一)80c52学习之旅-起始篇
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)程序员技术练级攻略
  • (转)甲方乙方——赵民谈找工作
  • ****Linux下Mysql的安装和配置
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET CORE Aws S3 使用
  • .net core 的缓存方案
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存