本节书摘来自异步社区《精通自动化测试框架设计》一书中的第2章,第2.3节测试数据交互基本方法,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 测试数据交互基本方法
本节将介绍几种常用的数据交互的方法,并就以上这些数据类型,根据各自的来源与使用场景,选取较为合适的处理方法。在实践中,读者可以根据适合自身框架的特点有针对性地加以改造。

在开始之前,首先介绍下在国内领先的问卷调查网站问卷星上做的一个软件自动化测试问卷调查(http://www.sojump.com/jq/3569220.aspx)中一道有关测试数据题目的调查结果,如图2.2所示。

从结果上看,Excel占据着最大的份额,可见MS Office系列的成功;而直接内嵌以及XML紧随其后,有着20%上下的占比。居中的则是属性文件交互以及CSV交互这样相对更专业的方式。数据库交互则以 3%不到的份额差点垫底,估计在日益追求轻量化的今天,数据库这种“重”的方式也逐渐被大家所摒弃。

当然,上述数据只是该次调查的结果,供大家在方案选型时做参考。最关键的是读者结合自身项目的实际情况,选择适合的数据交互方式。


2.3.1 使用Java的系统属性
Java在包java.lang.System中提供了一些标准的系统属性。这些信息可以用于确定用例执行方式,或者记录运行环境。读者可以通过运行下面这个例子来了解这些属性。

importjava.util.Iterator;
importjava.util.Properties;
public classSysProp {public static void main(String args[]) { Properties props=System.getProperties(); Iteratoriter=props.keySet().iterator(); while(iter.hasNext()) { String key=(String)iter.next(); System.out.println(key+" = "+ props.get(key)); }}
}

如果需要获得某一特定的系统属性,可以通过方法String java.lang.System.getProperty(String key)来完成。譬如下面这段代码获得了用户的根目录,并赋值给变量USER_HOME。

public static final String USER__HOME= System.getProperty("user.home");
类似地,System.setProperty(key, value)和System.setProperties(props)可以用来设定系统属性。譬如,下面这个语句就把属性值“firefox”赋给自定义的系统属性BROWSER_TYPE。

System.setProperty("BROWSER___TYPE", "firefox");
介绍完了在代码中的设置与获取,再介绍下如何在Java系统让属性信息可以在命令行、IDE环境或者Ant中将少量的变量数据传递给JVM。

命令行中最简单的就是使用标准的命令行选项"-Dpropertyname=value",如:

Java -DBROWSER_TYPE=firefox class
在Ant中可以使用子单元直接传递。

< syspropertykey="browser.type" value="firefox"/ >
而在像Eclipse 这样的IDE,可以直接在运行配置中设定,如图2.3所示。


读者如果感兴趣,可以通过以上这3种方式来运行下面这段代码。

import staticorg.junit.Assert.*;
importorg.junit.Test;
public classSysProp {
private String SELENIUM___PROPERTIES=System.getProperty("browser.type"); @Testpublicvoid Test() { assertEquals("firefox",SELENIUM___PROPERTIES);}}

它们运行后,应该能获得一致的运行结果。

2.3.2使用操作系统的环境变量
环境变量,简单来讲,对于Windows操作系统,就是在系统属性→高级→环境变量中设置的变量。对于一些全局的测试数据,如数据库连接参数、第三方类库文件位置等,可以考虑通过环境变量来传递。

读者可以运行下面这段程序来了解System.getenv()的用法,并和前一小节中的输出进行比较,了解系统属性参数和环境变量的具体区别。

importjava.util.Iterator;
importjava.util.Map;
public classEnvProp {public static void main(String args[]) { Map< String, String >envMap=System.getenv(); Iterator iter=envMap.keySet().iterator(); while(iter.hasNext()) { String key=(String)iter.next(); System.out.println(key+" = "+ envMap.get(key)); } }}

2.3.3 使用属性文件
前面介绍的两种方式,一般适合于框架中所使用的属性为个位数的情况。随着测试复杂性的增强,测试用例数量也呈几何级数增长。这时候,你可能需要一种更灵活、更有效的数据存储和交换的方式,那就是Java的属性文件。操作属性文件的方法其实和操作系统属性很类似,都可以使用包java.util.Properties中提供的类。细心的读者可能已经发现,前面两种方法虽然数据来源不一样,但其实都是在利用同一种数据格式:

Key=value

属性文件中的属性值也是采用这种方式保存数据。操作属性文件,因为牵涉到文件,所以首先需要为Properties类提供一个读写流。Properties用于读写属性文件的方法分别是:

//读取属性文件流的方法
public voidload(InputStream inStream) throwsIOException {}
//写属性文件流的方法
public void store(OutputStream out, String comments) throwsIOException {}

这里只是列举了一些简单的读取方式,供初学的读者进行了解。在第 3 章中将介绍Solvent框架的整体解决方案如何综合使用各类型数据交互方法满足各种测试框架的需求。

《精通自动化测试框架设计》—第2章 2.3节测试数据交互基本方法相关推荐

  1. 《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  2. 《精通自动化测试框架设计》—第2章 2.6节使用数据库

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第2章,第2.6节使用数据库,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区" ...

  3. 《精通自动化测试框架设计》目录—导读

    作者简介 精通自动化测试框架设计 陈冬严,浙江大学硕士,具有10年软件测试和团队管理的工作经验,先后服务于ITSM.PLM软件研发企业,现就职于某金融行业核心机构IT规划部门.业余时间喜欢园艺. 邵杰 ...

  4. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

  5. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!

    测试工作对技术的要求不低,测试工程师更是高技能职位.但有很多新入行的伙伴认为,测试工作就是钟"点"工,用鼠标在软件点里点~点~点~就能做测试.这种思维是很可怕的,这会对测试人的职业 ...

  6. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了

    金九银十,大家都铆足干劲想抓住机会涨薪进大厂.结合这几年的行业趋势,想要挑战大厂面试,首先必须吃透Selenium自动化测试框架设计. 这里说一下原因: 首先,一线互联网大厂无一例外,全都要求测试人掌 ...

  7. python接口自动化测试框架pdf,Python接口自动化测试框架设计到开发完整版2019

    1:课程详细介绍.mp4 ; k& X* V: X! X% \; ]; u- V$ z7 L) h: C; h2:课程答疑.mp4+ J  K* q0 O  x + j( v2 n7 B7 s ...

  8. python接口自动化测试框架实战从设计到开发_【B0753】[java视频教程]Python接口自动化测试框架设计到开发完整版视频教程 it教程...

    Java视频教程名称:Python接口自动化测试框架设计到开发完整版视频教程   java自学网[javazx.com]  Python视频教程   it教程 Java自学网收集整理 java论坛&q ...

  9. 【转】我眼中的自动化测试框架设计要点

    转自:http://blog.csdn.net/snakeshiy/article/details/8565178 对于自动化测试框架,其实并没有多数人想象中的那么高深玄乎,框架的概念只是一系列的被事 ...

最新文章

  1. Golang的交叉编译问题
  2. [LeetCode]42. Trapping Rain Water雨水填坑
  3. 编程入门python语言是多大孩子学的-Python 适合初学编程的人学吗?
  4. java 取字符的ascii_如何用java获得字符串的ASCII值
  5. hue安装及基本测试-笔记
  6. 看奥运之四:“鸟巢”旁边的洋人求票者
  7. 面象对象设计6大原则之六:迪米特原则
  8. 什么是 Linux 发行版
  9. Sugar Bytes WOW2 for Mac - 多功能滤波效果器
  10. DID 起步:图说去中心化身份 | ArcBlock 博客
  11. 计算机操作员管理规定,系统安全运行管理制度及保障措施
  12. 小微企业名录geetest破解验证
  13. C++ 读取和写入txt文件
  14. CocosCreator Shader Editor 2D/3D 特效编辑器
  15. 从几个简单例子聊聊Verilog的参数化设计(parameter、localparam和`define)
  16. vm虚拟机获取ip地址
  17. DEEPIN 设置U盘启动
  18. 图论(九)有向图和网络
  19. ubuntu 20.04 编译Android9.0的android源码
  20. shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令

热门文章

  1. Nginx启动提示找不到libpcre.so.1解决方法
  2. oracle 触发器 学习笔记
  3. Python爬虫之urllib模块2
  4. 一个资深技术人的转型之路
  5. 鹅厂bugly应用升级不能安装(Android7.0的新变化)
  6. “积水上报”广获好评 畅移信息接棒 “互联网+政务”落地
  7. 水晶报表技术(12)——一个投票系统水晶报表应用
  8. [第11天]mySQL简单介绍
  9. SQL优化常用方法49
  10. C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...