UFT描述性编程及综合练习

news2024/11/27 6:22:22

1、录制登录操作改描述性编程。

  • 登录的用户名、密码在global表中给出。有2组:自己的学号/mercury,自己的学号/123456。将登录的本地对象库清空。

要求:

分别采用直接描述性编程和Description描述性编程实现2组数据登录测试,用reporter.reportevent报告实验结果

2、自动化录制登录操作。

  • 把飞机订票系统的Login脚本封装到一个函数中,函数返回成功或者失败记录,并且这些记录要用reporter对象的reportevent方法报告到测试结果窗口,函数存放到BusinessFunctions函数库文件。
  • 登录的用户名、密码在以你学号命名的excel文件中,有2组数据,每组3列:

UserName

PassWord

Result

自己的学号

mercury

自己的学号

123456

  • 测试脚本中要根据调用Login函数的返回值将结果写回到global表中,如果返回值为真,将Result列值设置为登录成功,为假设置为登录失败。
  • 在脚本中用DataTable的import和将测试数据导入到global表中,用export方法将测试结果数据导出到原excel文件中。

附加内容:

  • 建立自动化测试框架。包括:test_script、test_libraries、 test_data、 test_object_repositories、test_result_log。
  • 使用fso对象对日志文件操作。将账号和登录时间及登录结果写入日志文件。

1、录制登录操作改描述性编程。

正常录制登录操作之后进行对其改造,根据对象的属性和方法来操作对象。

看下图,就知道该对象的属性和值,其他各种对象同样操作,我们就可以对其进行描述来代替对象库。

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
Dialog("Login").WinEdit("Agent Name:").Set "apple"
Dialog("Login").WinEdit("Password:").SetSecure "64609cb188999d31fce95fdce9d2837f01ab67c5"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close

直接描述性编程

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
Dialog("text:=Login").WinEdit("Attached text:=Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("text:=Login").WinEdit("Attached text:=Password:").SetSecure DataTable("PassWord", dtGlobalSheet)
Dialog("text:=Login").WinButton("text:=OK").Click
If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
	Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
End If
If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
	Reporter.ReportEvent micPass,"登录","登录成功"
	Window("regexpwndtitle:=Flight Reservation").Close
	Else
	Reporter.ReportEvent micFail,"登录","登陆失败"
End If

要知道怎么进行改造的,就是把每个对象的属性是什么,值是什么写上就OK了,这样当缺少某个对象时,就不用录制加入,可以直接描述对象的属性和值进行加入。

对其改造完成后,就需不在需要对象库了,

 要在全局表中写好数据在运行。


Description描述性编程

这种方法的特点是,每个新对象都要用Descriptioni()来创建一下,然后对其进行设置属性来表示当前对象是什么,对其进行操作。

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
set myDialog = Description.Create()
myDialog("text").value = "Login"
set myWinEditUserName = Description.Create()
myWinEditUserName("Attached text").value = "Agent Name:"
set myWinEditPwd = Description.Create()
myWinEditPwd("Attached text").value = "PassWord:"
set myWinEditButton = Description.Create()
myWinEditButton("text").value = "OK"
With Dialog(myDialog)
	.WinEdit(myWinEditUserName).Set DataTable("UserName", dtGlobalSheet)
	.WinEdit(myWinEditPwd).SetSecure DataTable("PassWord", dtGlobalSheet)
	.WinEdit(myWinEditButton).Click
End With
If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
	Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
End If
If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
	Reporter.ReportEvent micPass,"登录","登录成功"
	Window("regexpwndtitle:=Flight Reservation").Close
	Else
	Reporter.ReportEvent micFail,"登录","登陆失败"
End If

自动化录制登录操作

根据要求我们要把登录操作封装到一个函数中,通过调用登录函数,返回登录是成功还是失败的结果。

那么我们要知道怎么使用函数,要在函数库中进行函数的编写,最后使用的话,要关联对应的函数库,这样就可以使用我们编写的函数。

定义函数有Function  函数名(参数)这一种方法是有返回值的,还有Sub  函数名(参数)这个是没有返回值的。根据具体情况选择。

第一步、新建函数库,关联函数库

 然后在函数库中编写登录代码等等函数,调用是要关联后才能调用的。

Function Login(UserName,PassWord)
	SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
	Dialog("text:=Login").WinEdit("Attached text:=Agent Name:").Set UserName
	Dialog("text:=Login").WinEdit("Attached text:=Password:").SetSecure PassWord
	Dialog("text:=Login").WinButton("text:=OK").Click
	If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
		Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
	End If
	If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
		Reporter.ReportEvent micPass,"登录","登录成功"
		Login = True
		Window("regexpwndtitle:=Flight Reservation").Close
	Else
		Reporter.ReportEvent micFail,"登录","登陆失败"
		Login = False
	End If

End Function

第二步、编写输出结果赋值函数

因为我们在登录之后要把结果写回Excel表中,那么我们还需要在写一个函数用来把结果输出到Excel表格中,当然代码量不用函数调用直接写也是OK的。

Sub OutPut(result)
	If result Then
		datatable.Value("Result",global) = "True"
	Else
		datatable.Value("Result",global) = "False"
	End If
End Sub

第三步、编写日志函数保存测试结果

最后要用FSO对象来对日志进行操作,将账号和登录时间及结果写入日志中,那么再写一个函数。

我们需要知道怎么写入日志,方法是什么

创建文件对象:Set fso=CreateObject("Scripting.FileSystemObject")

文件对象是否存在:fso.FileExists(文件路径)

打开文件:Set myfile=fso.OpenTextFile(……,8,True),当文件不存在时会自动创建,8表示追加写入模式。

写完日志之后,不要忘记关闭文件及把对象设置为Nothing

Sub testResultLog (Judge,Uname)
    Dim FSO,LogFile
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set myLogFile = FSO.OpenTextFile("E:\software\HP\testfile.txt", 8, True) '创建文件
    myLogFile.WriteLine "Account: " & Uname    ' 写入内容
    myLogFile.WriteLine "Login time: " & Now()
    If Judge Then  ' 判断写入的是成功还是失败
    	myLogFile.WriteLine "Login result: Success"
    Else
    	myLogFile.WriteLine "Login result: Failed"
    End If
    myLogFile.Close  ' 关闭文件
    Set myLogFile = Nothing    '最后要设置为Nothing
    Set FSO = Nothing
End Sub

第四步、编写主调用内容

最后在Action中写获取Excel中的数据,在进行调用函数库中的登录函数进行登录,要先判断一下数据中是否有数据,没有就从外部Excel中导入,之后获取Excel中设置好的账号和密码,调用Login函数进行登录,然后调用输出函数将结果写到数据表l中,在调用输出日志函数,传入账号和登录结果,即可写入日志。最后导出数据到Excel表格中。

Dim rowcount
rowcount = datatable.GetRowCount
If rowcount=0 Then
	datatable.Import "E:\software\HP\软件测试.xlsx"
End If
Dim Uname,Pwd
Uname = datatable.Value("UserName",global)
Pwd = datatable.Value("PassWord",global)
Dim success
success = Login(Uname,Pwd)
Output(success)
testResultLog success,Uname
datatable.Export "E:\software\HP\软件测试.xlsx"

日志结果如下图所示

 导出结果如图


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pikvm系统主要软件包解析备忘

PI-KVM让普通家用PC也有能够像数据中心机房里面的IP-KVM一样的功能。 详细信息参考官网:PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/ nullOpen and inexpensive DIY IP-KVM based on Raspberry Pi - GitHub - pikvm/pikvm: O…

LeetCode - 34 在排序数组中查找元素的第一个和最后一个位置

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) 题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在…

【项目笔记】若干基本社团发现算法介绍

两个衡量指标:边介数 & 模块度 边介数计算: 以下用图来自:https://blog.csdn.net/weixin_44704845/article/details/102686597 选择S为源节点对图搜索,画出S到其他节点的最短路径树 2.给边标数字 1) 所有邻近叶…

【YOLO系列】--YOLOv4超详细解读/总结(网络结构)

YOLOv4(YOLOv4: Optimal Speed and Accuracy of Object Detection)(原文+解读/总结+翻译) 系列文章: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总结_耿鬼…

软件测试面试至今0 offer,问题到底出在哪儿?

转眼已是四月中旬,求职招聘季也快要结束啦,如果没点真技术 真本事,不了解点职场套路,在今年行情下,找工作可是难上加难。 现在点开微博或者脉脉,只要搜索“招聘”,用“惨不忍睹”来形容也不为过…

【数据结构】经典排序

【数据结构】八大排序 1. 排序的概念和运用1.1 概念1.2 运用 2. 常规的排序算法介绍一. 插入排序1.1 直接插入排序1.2 希尔排序 二. 选择排序2.1 选择排序2.2 堆排序 三. 交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoare法3.2.2 挖坑法3.2.3 前后指针/左右指针法3.2.4 分治法/递归…

windows11 安装 webassembly,遇到的各种错误

1.最开始是尝试在 虚拟机 centos 7 安装的(因为不想安装vs2015) 但是无奈 各种错误.最终无法解决. 2.尝试在windows安装,吐槽一下官方文档 的安装提示是错误的(太老了) 参考以下文章: https://blog.csdn.net/weixin_45482422/article/details/119459918 https://blog.csdn.…

C++中this指针的特性,存放位置,能否为空?

文章目录 一、this指针的特性二、this指针存在哪里?三、this指针可以为空吗? 一、this指针的特性 我们学习过C知道,成员函数没有直接存放在类而是放在了公共代码区,这样当多个对象调用同一个函数就不需要再创建一个函数成员了。 …

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区?2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…

全面解析Linux指令和权限管理

目录 一.指令再讲解1.时间相关的指令2.find等搜索指令与grep指令3.打包和压缩相关的指令4.一些其他指令与热键二.Linux权限1.Linux的权限管理2.文件类型与权限设置3.目录的权限与粘滞位 一.指令再讲解 1.时间相关的指令 date指令: date 用法:date [OPTION]… [FOR…

缓冲区的flip

流和缓冲区都是用来描述数据的。计算机中,数据往往会被抽象成流,然后传输。比如读取一个文件,数据会被抽象成文件流;播放一个视频,视频被抽象成视频流。处理节点为了防止过载,又会使用缓冲区削峰&#xff0…

巴西大神开发的 ARPL 黑群晖DSM系统引导在线编译工具

ARPL 是一款黑群晖系统引导在线编译工具,目前支持最新群晖系统DSM 7.1.1,今天为了折腾升级这个群晖系统DSM 7.1.1浪费了一天的时间,ARPL是巴西人一位大神开发的黑群晖系统引导在线编译工具,使用下来非常的不错,可惜没有…

3网络互联-3.4【实验】【计算机网络】

3网络互联-3.4【实验】【计算机网络】 前言推荐3网络互联3.4 IP分组转发与静态路由实验目的实验内容及实验环境实验原理1.路由器2.路由(Routing)3.IP分组的转发4.路由的构建5.静态路由设计原则 实验过程1.搭建一个仅包含直连路由的网络拓扑,观察路由器的…

时间序列分析

一、移动平均法 1.一次移动平均法 公式: 预测标准误差: 本质:用前N次数据预测t1期的数据 规律:如果实际数据波动较大,N值越大,预测到的数据波动越小 注意:一般不适用于波动较大的数据。用一次移动平均法…

Kafka原理之消费者

一、消费模式 1、pull(拉)模式(kafka采用这种方式) consumer采用从broker中主动拉取数据。 存在问题:如果kafka中没有数据,消费者可能会陷入循环中,一直返回空数据 2、push(推)模式 由broker决定消息发送频率,很难适应所有消费者…

【MySQL】 InnoDB

学习笔记,来源黑马程序员MySQL教程 文章目录 逻辑存储结构架构内存架构磁盘结构后台线程 事务原理概述redo logundo log MVCC基本概念实现原理1、隐藏字段2、undo log3、readview 总结 逻辑存储结构 一个表空间对应一张表一 页 对应B树上一个 节点Trx id&#xff1a…

Git cat命令的用法

cat (全称 concatenate) 命令是 Linux/类 Unix 操作系统中最常用的命令之一。cat 命令允许我们创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出。 语法: cat [OPTION] [FILE]...1.终端查看一个文件内容 cat file01.txt2.终端查看多个文件…

熵、信息量、条件熵、联合熵、互信息简单介绍

熵、信息量、条件熵、联合熵、互信息简单介绍 近期在看对比学习论文,发现有不少方法使用了互信息这种方式进行约束,故在此整理一下网上查阅到的关于互信息的相关内容。 一、熵、信息量 关于熵的讨论,这个知乎专栏写的挺不错的。 熵在信息论…

【更新日志】填鸭表单TduckPro v5.1 更新

hi,各位Tducker小伙伴。 填鸭表单pro迎来了v5.1版本;本次我们进行了许多的功能新增和优化,能够让我们在日常使用中获得更好的体验。 让我们一起来康康新功能吧。 01 新增Pro功能 新增登录后才能填写表单。 新增表单卡片一键发布。 新增矩…

【C++学习】CC++内存管理

目录 一、C&C内存管理 二、C语言中动态内存管理方式:malloc/calloc/realloc/free 三、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作符自定义类型 四、operator new与operator delete函数 4.1 operator new与operator delete函数&#x…