如何在UI自动化测试中加入REST API的操作

1、问题

当我们描述一个“好的自动化测试用例”时,经常出现标准是:

精确

自动化测试用例应该测试一件事,只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。

独立

自动化测试用例不应该受测试套件中任何其他测试用例影响。

快速

这不需要太多的解释。自动化测试用例套件运行得越快,它就越有用。

这些标准在Selenium测试套件中可能特别具有挑战性。原因在于,Selenium的UI自动化测试通常涉及可能包括注册,登录,某些导航,表单提交或与网站的其他交互的设置。只有在做完这些事情之后,你才可以在网站的某些方面做出断言。但是这样就会引入一些和原本的测试用例无关的错误导致自动化脚本运行失败。

2、解决方法

现在很多新的网站的后端都采用REST API。如果能够在脚本中通过访问REST API来完成一些基础的必要操作,而不是在UI上,这样将提高我们测试的执行效率。

REST API基于HTTP协议,这是基本上支持整个互联网的协议。几乎所有现代编程语言都有可用于发出HTTP请求的库,因此,我们可以将调用REST API的支持添加到几乎任何测试套件中。

3、实例

很多测试中都会遇到新建账号的问题。需要测试新的账号在登陆之后的行为。如果能够使用REST API来新建用户的话,就可以大大的节省填写新建账号的表单的时间。

这里假设一个虚拟的REST API

POST http://api.myfakeapp.com/v1/create-user

通过POST方法可以新建用户。Body里面需要填充的JSON数据如下:

{'username':   'example-username','password':   'abcd1234','email':      'bob@example.com','first_name': 'bob','last_name':  'example'
}

下面是代码实现

require 'rest-client'require 'json'require 'securerandom'class RestApiInterface@headers = {'content-type' => 'application/json','user-agent' => 'Rest Api Helper',}def post_to_api url, post_body_objjson_body = JSON.generate(post_body_obj)response = RestClient.post url, json_body, @headersenddef create_test_user# Step 1: Build the user parameters randomlyrandom_test_user = {'username'   => random_string,'password'   => random_string,'email'      => "#{random_string}@testing.com",'first_name' => 'test','last_name'  => 'user',}# Step 2: Execute the API callresponse = post_to_api "http://api.myfakeapp.com/v1/create-user", random_test_user    # Step 3: Ensure the api call returned a success codeif response.code != '200'raise 'User creation failed'end# Final Step: Return the user object so we can use itresponse.body['user']['data']enddef random_string# This is an easy way to get a good randomized stringSecureRandom.hex  endend$driver = Selenium::WebDriver.for :firefoxuser = RestApiInterface.new.create_test_user$driver.get 'http://myfakeapp.com'$driver.find_element(:css, 'input[name="username"]').send_keys @user['username']$driver.find_element(:css, 'input[name="password"]').send_keys @user['password']$driver.find_element(:css, 'button[name="login"]').click
puts $driver.find_element(:css, '#user_id').text

4、总结

这里只是给出了一个如何把API访问和UI自动化结合的思路。在这个思路的引导下,可以对UI自动化测试进行很多扩展,例如校验界面数据元素的数据和API中数据的一致性等等。

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


     【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图+全套资料】


一、Python编程入门到精通

二、接口自动化项目实战 

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具

八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!   

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

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

相关文章

将QQ和微信的保存路径由C盘转移到其他盘

将QQ和微信的保存路径由C盘转移到其他盘 (1)QQ中的文件通过右键点击QQ头像——》选择系统设置——》选择文件管理——》选择更改目录 完成以后,需要重启一下QQ即可。 (2)右键点击微信——》选择设置——》选择文件…

pc版微信聊天记录备份迁移

1. 备份:定期备份文件夹 C:\Users\${username}\Documents\WeChat Files (${username}为微信安装的windows用户名) 2. 恢复: (1). 新机器安装成功微信后先别启动 ,将 备份的WeChat Files 文件夹复制到 C:\Users\${username}\Doc…

固态硬盘的合盘及数据转移

场景 1.在C盘空间不足时,我们会想到把其他的盘的数据分给C盘,这样就会涉及到数据转移的问题。 2.在硬盘分区合并的时候,有的两分区中间会有一个恢复分区,导致不能合并的情况。 解决 分盘 1.右键我的电脑,点击管理 …

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…

男宝宝起名的三大思路

男宝宝起名的三大思路 最近有个哥们正在为一件事情烦恼,开始的时候咱们都觉得挺奇怪的,这哥们现在可以说是家庭事业双丰收了,到底还有什么事儿能让他这么的烦恼呢?询问之下,这个哥们儿向我们吐了苦水,不为别的&#x…

九重鸿蒙浮屠塔,浮图塔测算(浮图塔黄历老黄历)

浮图塔是什么 // 浮图塔就是佛塔. ※浮图:梵语 1、佛陀(简称佛)的别名。 2、佛塔。亦作“佛图”、“浮屠”。 魏书˙卷一一四˙释老志:“自洛中构白马寺,盛 饰佛图,画迹甚妙,为四方式。 凡宫塔制度,犹依天竺…

关于阿里云服务器密码重置和使用方法

总是记不住密码,今天又重置了阿里云服务器的远程连接密码,在这里做个记录,方便以后查找。 一定注意,重置完实例密码要重启! Windows 系统 默认的用户名为administrator 密码为重置密码 一定注意,重置完…

阿里云服务器密码重置

目录 一、进入阿里云官网管理控制台 二、选择重置实例密码​ 三、保存 四、网页远程连接服务器 一、进入阿里云官网管理控制台 首先进入阿里云官网,登录你的阿里云账号进入阿里云的管理控制台,然后进入ECS管理后台,如下图。 二、选择重置实例…

服务器密码忘记处理之二:重置密码

步骤1:进入BIOS。 不同的系统进入的方式不尽相同,我的环境是DELL服务器安装的Windows Server 2008 r2 Standard版,在重启的时候,一直按着delete键,进入BIOS。 步骤2:选择启动盘启动服务器。 步骤3&#…

重置目录服务还原模式(DSRM)密码

重置目录服务还原模式(DSRM)密码 重置操作命令说明 重置操作 命令说明 PS C:\Users\Administrator> ntdsutil C:\Windows\system32\ntdsutil.exe: Set DSRM Password 重置 DSRM 管理员密码: Reset Password on server NULL 请键入 DS 还原模式 Admin…

阿里云轻量服务器如何重置密码?

我们在开通阿里云轻量应用服务器的时候,是没有设置服务器密码的地方的,而且服务器也没有初始密码,所以就需要我们开通好轻量应用服务器后去重置下服务器密码,那么如何重置密码呢? 首先,打开轻量应用服务器…

腾讯云服务器如何修改和重置密码?

在上一篇我们介绍了如何购买腾讯云服务器,现在来讲讲购买服务器之后,如何重置和修改腾讯云服务器密码。步骤过程很简单,虽然我描述的有点详细。 【修改云服务器密码(Linux操作系统)】 远程连接 Linux 实例(实例就是你的服务器)时,提示用户名或…

mysql如何重置密码

1. 关闭MySQL服务 点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务 2.打开终端 ① 进入mysql文件夹 cd /usr/local/mysql/bin 回车②获取权限 sudo su 回车,然后输入开机密码,回车③进入安全模式 ./m…

MySQL--忘记密码,重置密码重启服务密码失效(Windows)

一、问题说明 最近在Windows下操作mysql数据库,我装的是mysql5.7版本的,但是忘记了安装时设置的密码, 通过mysqld -nt --skip-grant-tables 跳过安全检查登录重置了密码 修改后使用新密码,能正常登陆成功,但老是发生…

重置Google云服务器密码

1、进入Google云实例面板 2、切换到root角色 sudo -i 3、修改root密码 passwd[qqqqqinstance-3 ~]$ sudo su [rootinstance-3 guser]# passwd Changing password for user root. New password: Retype new password:

移动邮箱(139):开启服务+密码登录

移动邮箱(139):开启服务密码登录 官网:https://mail.10086.cn/ 帮助:http://help.mail.10086.cn/statichtml/0/Category/223/List_1.html 关联阅读: 139邮箱服务器地址是什么?如何开启POP3和IMA…

服务器server2012重置开机密码

准备工作 1.制作u盘启动(pe)该操作很简单(大白菜、老毛桃等) 2.下载操作系统镜像 重置密码方法 一、通过进入pe系统,使用管理密码工具操作步骤: 1.点击vmware操作系统设置——添加硬盘——选择scsi——…

DELL服务器重置iDRAC密码

1.DELL服务iDRAC有默认的用户和密码:root/calvin,一般我们会修改,一段时间不用,忘记密码怎么办? 2.开机,DELL LOGO画面过后,按F2,进入主板控制界面 选iDRACsetting 3.翻页到user c…

Python:PDB文件中原子和残基重新编号

Python脚本:PDB文件中原子和残基重新编号 Command: python renumber_pdb.py -i protein.pdb -a -r > output.pdb renumber_pdb.py # Python 3 script to atoms and residues in a PDB file. # # run # ./renumber.py -h # for help #class Pdb(object):"&…

VSCode插件生成编号、目录、文件目录树

安装VSCode 官方地址:https://code.visualstudio.com/ 下载安装完毕后在扩展中安装中文插件Chinese (Simplified) Markdown自动生成编号和目录 安装插件Markdown All in One配置插件,将目录起始级别由1改为2 打开MD文档,右键–命令面板&…