接口自动化测试持续集成--Soapui接口功能测试参数化

  • 按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离。
  • 当测试数据进行调整的时候不会对脚本的实现带来震荡,从而提高脚本的稳定性与灵活度,降低脚本的维护成本。
  • Soapui最为强大的参数化就是支持groovy脚本的参数化或者java代码,任何无法实现的地方都可以考虑脚本的扩展。

1.Soapui的常用参数化类型

2.Soapui参数化操作方式

菜单路径:Test Steps->Add Step(右键菜单)->Data Source


3.Txt 文件参数化

  • 在脚本中参数化
1、增加参数
2、选择数据类型
3、输入参数的值

 

  • 新建txt文件
  • 文件内容

数据之间要用逗号做分隔符,否则soapui没办法区分数据


  • 选择数据源类型与文件

1.增加参数
2.选择数据类型
3.选择数据文件
4.数据的分隔符


image.png

4.Excel文件参数化

  • 新建excel文件
  • 编辑文件内容
  • 选择数据源类型与文件

1.增加参数
2.选择数据类型
3.选择数据文件
4.起始单元格


5.Groovy脚本参数化

groovy是基于java语言的脚本语 言,语法结构与java雷同,或者直接写java代码也是可以的

  • 假设我们要通过接口创建客户

要求:姓名,手机号码,email不能重复

1.随机生成姓名的代码
public List<String> RandomUserName(int RandomUserName) { String[] FirstName = ["赵","钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷"]; List<String> randomName = new ArrayList<>(); for (int i = 1; i <= RandomUserName; i++) { Random randomFirstName = new Random(); int index = randomFirstName.nextInt(FirstName.length - 1); String name = FirstName[index]; if(randomFirstName.nextBoolean()){ name += getChinese()+getChinese(); randomName.add(name); } else{ name += getChinese(); randomName.add(name); } } return randomName; } public static String getChinese() { String str = null; int highPos, lowPos; Random randomChinese = new Random(); highPos = (176 + Math.abs(randomChinese.nextInt(55))) randomChinese = new Random(); lowPos = 161 + Math.abs(randomChinese.nextInt(94)) byte[] bArr = new byte[2]; bArr[0] = (new Integer(highPos)).byteValue(); bArr[1] = (new Integer(lowPos)).byteValue(); try { str = new String(bArr, "GB2312"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return str; } 
2.随机生成手机号的代码
public List<String> RandomTelNum(int RandomTel) { List<String> RandomTelNum = new ArrayList<>(); for (int i = 0; i < RandomTel; i++) { String TelNumHead = "170"; int min = 10000000; int max = 99999999; Random randomTelLast = new Random(); int s = randomTelLast.nextInt(max) % (max - min + 1) + min; String telNum = TelNumHead + Integer.toString(s); RandomTelNum.add(telNum); } return RandomTelNum; } 
3.随机生成Email的代码
public List<String> RandomEmail(int RandomEmail) { List<String> randomEmail = new ArrayList<>(); for (int i = 0; i < RandomEmail; i++) { String[] randomName = "ab,bc,cd,de,ef,fg,gh,hi,ij,jk,kl,lm,mn,no,op,pq,qr,rs,st,tu,uv,vw,wx,xy,yz,za".split(","); Random randomletter = new Random(); int index = randomletter.nextInt(26); String EmailName = randomName[index] +randomName[index/3]+ System.currentTimeMillis(); EmailName += getemail_suffix(); randomEmail.add(EmailName); } return randomEmail; } public static String getemail_suffix() { String[] email_suffix = "@gmail.com,@yahoo.com,@msn.com,@hotmail.com,@aol.com,@ask.com,@live.com,@qq.com,@0355.net,@163.com,@163.net,@263.net,@3721.net,@yeah.net,@googlemail.com,@126.com,@sina.com,@sohu.com,@yahoo.com.cn".split(","); String str; Random randomEmail_suffix = new Random(); int index = randomEmail_suffix.nextInt(email_suffix.length - 1); str = email_suffix[index]; return str; } 
  • 运行的效果
  • 代码产生的数据与变量关联
//随机生成姓名
println(RandomUserName(1)[0]);
//代码产生的数据与变量关联 result["name"]=RandomUserName(1)[0] //随机生成邮箱 println(RandomEmail(1)[0]); //代码产生的数据与变量关联 result["email"]=RandomEmail(1)[0] //随机生成手机号码 println(RandomTelNum(1)[0]); //代码产生的数据与变量关联 result["mobile"]=RandomTelNum(1)[0] 

6.JDBC参数化

当接口产生的数据需要从数据库读取的时候我们可以连接数据对数据查询进行数据关联,soapui是可以链接多种数据库,我们使用mysql做演示

  • mysql驱动配置

1.下载mysql驱动的jar包
http://pan.baidu.com/s/1ge5BLhL
2.拷贝驱动jar到如下路径(soapui的安装路径)
C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\jre\lib\ext

  • 配置数据源

数据库连接成功,说明数据源已经配置好


  • 编辑SQL

select userName,passWord from user

 

7.参数关联到Request

这一步虽然比较简单,但是至关重要,否则参数化是体现不出来的




 

转载于:https://www.cnblogs.com/lingqiang0605/p/10205138.html

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

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

相关文章

Codeforces 1027E Inverse Coloring 【DP】

Codeforces 1027E Inverse Coloring 题目链接 1 #include<bits/stdc.h>2 using namespace std;3 #define N 10104 #define LL long long5 #define Mod 9982443536 int n,k;7 LL dp[N][N],ans0;8 LL sum[N][N];9 int main(){ 10 cin>>n>>k; 11 dp[0][…

合并远程仓库到本地_git远程仓库创建和合并

上周发了一个张佳波小朋友关于git的文章&#xff0c;马上就更多小朋友的回馈。其中周玉涛同志发来了自己对于git之前问题的一些理解和解决方法&#xff0c;希望能帮助更多人解决问题。为了保证周玉涛同学提供材料的完整性&#xff0c;以下将他原文和图片发出&#xff0c;不做其…

swfobject.js视频播放插件

在网页中经常会用到视频播放的功能&#xff0c;下面介绍一下swfobject.js的视频播放应用&#xff1a;html代码结构&#xff1a; <div id"video_content"></div> css样式结构&#xff1a; body{background: #003368}#video_content{width:600px;height:40…

Spring REST:异常处理卷。 3

这是该系列中有关Spring REST异常处理的最后一篇文章。 最后&#xff0c;这次我将讨论在表单处理期间可能发生的REST异常的处理。 因此&#xff0c;在本教程中&#xff0c;您将看到与REST&#xff0c;表单和异常处理有关的所有内容。 客户端呢&#xff1f; jQuery将用于反映RES…

centos6安装mysql并远程连接_Ubantu下MySQL安装、部署和远程连接

系统阿里云 ubantu 16.04MySQL 5.0/8.0连接工具 Navicat Premium安装MySQL1、MySQL 5.0直接使用apt命令安装sudo apt install mysql-server输入密码完成安装。安装完mysql-server后&#xff0c;mysql-client就带了&#xff0c;无需单独安装安装成功后输入如下命令检查数据库状态…

js中字符串和数组的使用

函数&#xff1a; 函数在调用的时候&#xff0c;会形成一个私有作用域&#xff0c;内部的变量不会被外面访问&#xff0c;这种保护机制叫闭包。这就意味着函数调用完毕&#xff0c;这个函数形成的栈内存会被销毁。 但有时候我们不希望他被销毁。 函数归属谁跟它在哪调用没有关…

Spring REST:异常处理卷。 1个

目录 Spring REST&#xff1a;异常处理卷。 1个 Spring REST&#xff1a;异常处理卷。 2 Spring REST&#xff1a;异常处理卷。 3 大家好&#xff0c;是时候继续在我的博客中发布新文章了。 因此&#xff0c;我很高兴地宣布&#xff0c;我计划编写一系列技术文章。 在当前文…

vue/cli3 配置vux

安装各插件 试过 安装“必须安装”的部分亦可 1、安装vuex npm install vuex --save-dev 2、在项目里面安装vux【必须安装】 npm install vux --save 3、安装vux-loader【必须安装】 npm install vux-loader --save-dev 4、安装less-loader&#xff08;这个是用以正确编译less源…

鼠标右键 移动选定的文件夹到指定位置_怎么把电脑桌面上的文件移动到更加安全的地方...

我们在使用电脑的时候习惯于把各种文档以及其他文件资料随手保存到电脑桌面上&#xff0c;这样操作可以方便以后对这些文档和文件资料的使用、管理&#xff0c;但是由于默认状态下桌面文件位于C盘中&#xff0c;这些文件资料不仅会占用掉C盘的很大的存储空间&#xff0c;并且日…

非常精简的Linux线程池实现(一)——使用互斥锁和条件变量

线程池的含义跟它的名字一样&#xff0c;就是一个由许多线程组成的池子。 有了线程池&#xff0c;在程序中使用多线程变得简单。我们不用再自己去操心线程的创建、撤销、管理问题&#xff0c;有什么要消耗大量CPU时间的任务通通直接扔到线程池里就好了&#xff0c;然后我们的主…

嵌入式linux系统文件,嵌入式Linux文件系统知多少

Nand/Nor Flash在嵌入式Linux产品中&#xff0c;通常使用的存储介质为Nand Flash和Nor Flash&#xff0c;而手机、相机等产品通常使用eMMC、SD Card作为存储介质&#xff0c;导致这种差异的原因主要是成本考量。Nand Flash和Nor Flash具有低成本、高密度存储的优势。但是&#…

三分钟上手Highcharts简易甘特图

根据业务需求&#xff0c;找到了这个很少使用的图形&#xff0c;话不多说&#xff0c;看看该如何使用。首先要引入支持文件&#xff1a;可根据链接下载。 exporting.js&#xff1a;https://img.hcharts.cn/highcharts/modules/exporting.js xrange.js&#xff1a;https://img.h…

WEB语义化

WEB语义化让机器读懂内容&#xff0c;HTML就带有一定「语义」的标签&#xff0c;比如段落&#xff0c;标题&#xff0c;表格和图片等。让机器读懂内容&#xff0c;那么两种方案&#xff1a;第一种让机器变得更人工智能化&#xff0c;也就是现在大火的AI。第二种是人们去发布认可…

关于使用JQ scrollTop方法进行滚动定位

没图我说个锤子&#xff0c;先来个自拍镇楼。 又到了每周周五总结时间。我广州刘德华又来讲故事了。这一周没啥任务&#xff0c;就一个任务&#xff0c;产品口头交代了两句&#xff0c;也没有psd没有设计图没有样式。自由发挥&#xff0c;你自己敲代码做个作品出来。 what&…

ssh密钥登录

方法一:使用下例中ssky-keygen和ssh-copy-id&#xff0c;仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。 ssh-keygen 创建公钥和密钥。 ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。ssh-copy-id 也会给远程主机的用户主目录&#x…

Spring REST:异常处理卷。 2

这是有关使用Spring进行REST异常处理的系列的第二篇文章。 在我以前的文章中&#xff0c;我描述了如何在REST服务中组织最简单的异常处理。 这次&#xff0c;我将更进一步&#xff0c;我将向您展示何时最好在ControllerAdvice级别上使用异常处理 。 介绍 在开始本文的技术部分…

python 装饰器有哪些_python装饰器有什么用

简言之&#xff0c;python装饰器就是用于拓展原来函数功能的一种函数&#xff0c;这个函数的特殊之处在于它的返回值也是一个函数&#xff0c;使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。 一般而言&#xff0c;我们要想拓展原来函数代码&…

linux中查看相关日志记录,linux重启查看日志及历史记录 查询原因

linux系统文件通常在/var/log中下面是对下面常出现的文件进行解释/var/log/message ---------------------------------------系统启动后的信息和错误日志/var/log/secure ------------------------------------------与安全相关的日志信息/var/log/maillog ------------------…

04,认证、权限、频率

认证组件 Django原生的authentic组件为我们的用户注册与登录提供了认证功能&#xff0c;十分的简介与强大。同样DRF也为我们提供了认证组件&#xff0c;一起来看看DRF里面的认证组件是怎么为我们工作的&#xff01;models.py# 定义一个用户表和一个保存用户Token的表 class Use…

jq获取input选取的文件名_tushare获取交易数据并可视化分析

获取数据是金融量化分析的第一步&#xff0c;找不到可靠、准确的数据&#xff0c;量化分析就无从谈起。随着信息技术的不断发展&#xff0c;数据获取渠道也越来越多&#xff0c;尤其是Python网络爬虫&#xff0c;近几年愈来愈火。然而&#xff0c;很多人毕竟精力有限&#xff0…