常用网络接口自动化测试框架应用

一、RESTful(resource representational state transfer)类型接口测试

(一)GUI界面测试工具:jmeter

1、添加线程组

2、添加http请求

3、为线程组添加察看结果树

4、写入接口参数并运行

5、在查看结果树窗口查看结果

6、多组数据可增加CSVDataSetConfig(添加.csv格式的文件,并在参数值里以${x}格式写入)

此时变量值填写${变量名},上图x,y表示每次从文件里读取两个参数,分别命名为x,y

(二)JAVA语言脚本测试(HttpClient)

1、GET请求接口测试

python 复制代码
1 public void TestGet throws URISyntaxException, ClientProtocolException, IOException{

2   //1、创建一个客户端对象

3   CloseableHttpClient client=HttpClients.createDefault();

4   //2、使用URIBuilder()来生成一个get类型的USI

5   URI uri=new URIBuilder().setScheme("http")

6                 .setPort(8080)

7                 .setHost("localhost")

8                 .setPath("/test1334/Calc")

9                 .setParameter("a", "2")

10                 .setParameter("b", "3").build();

11   //3、新建一个httpget类型请求对象,并将uri传入请求

12  HttpGet get=new HttpGet(uri);

13   //4、新建响应对象,用于接收客户端执行get结果

14  CloseableHttpResponse response=client.execute(get);

15   //5.从响应对象中提取实际结果,与预期结果进行比对

16   if(response.getStatusLine().getStatusCode()==200){

17  System.out.println(EntityUtils.toString(response.getEntity()));

18 }

19 }

2、POST请求接口测试

样例(测一个输入两个参数求和的接口):

python 复制代码
1 public void TestPOST () throws ClientProtocolException, IOException{

2   //1.新建一个客户端对象

3   CloseableHttpClient client=HttpClients.createDefault();

4   //2.新建post类型请求对象,并传入uri

5   HttpPost post = new HttpPost("http://172.31.6.155:8080/test1334/Calc");

6   //3.使用NameValuePair对参数进行打包

7   List<NameValuePair> list=new ArrayList<NameValuePair>();

8   list.add(new BasicNameValuePair("a","1"));

9   list.add(new BasicNameValuePair("b","2"));

10   //4.对打包好的参数,使用UrlEncodedFormEntity工具类生成实体类型数据

11   //Consts.UTF_8设置服务器字符集类型

12   UrlEncodedFormEntity entity=new UrlEncodedFormEntity(list,Consts.UTF_8);

13   //5.将含有请求参数的实体对象放入到post请求对象里

14   post.setEntity(entity);

15   //6.新建一个响应对象接收客户端执行post请求的结果

16   CloseableHttpResponse response=client.execute(post);

17   //7.从响应对象中提取实际结果,与预期结果进行比对

18   if(response.getStatusLine().getStatusCode()==200){

19     System.out.println(EntityUtils.toString(response.getEntity()));

20 }

21 }

3、自动化框架

python 复制代码
1 @RunWith(Feeder.class)

2 public class getParameter {

3 @Test

4 @Source("data/datas.csv") //数据源

5 public void test_get(int x,int y,int expect) throws ClientProtocolException, URISyntaxException, IOException{//expect为预期结果,用于与实际结果进行比对

6 TestRESTfultest=new TestRESTful();//TestRESTful为前边创建TestGet所属类

7 int returns=test.TestGet(x, y);//此处的为修改后的TestGet,添加了参数和返回值;

8 assertEquals(returns,expect); //将结果与预期进行比较

9 }

10 }

二、WebService接口测试

(一)GUI界面测试工具:SoapUI

1、新建项目

2、输入WSDL地址或文件

3、修改"?"内的数据

4、开始测试

(二)JAVA语言脚本测试(HttpClient)

1、GET请求接口测试

python 复制代码
1 public int testGet(int x, int y) throws RemoteException {

2 String target = "http://172.31.6.94:8080/axis2/services/calc?wsdl";//传入地址

3 //创建一个CalcStub对象

4     CalcStub stub = new CalcStub(target);

5 CalcStub.Add add = new CalcStub.Add();

6 //传入参数

7 add.setX(x);

8 add.setY(y);

9 AddResponse response = stub.add(add);//结果

10 int result = response.get_return();

11 return result;

12 }

2、POST请求接口测试

python 复制代码
1 public static void testPOST(int a,int b) throws ClientProtocolException, IOException{

2 //创建客户端对象

3 CloseableHttpClient cli=HttpClients.createDefault();

4 HttpPost po=new HttpPost("http://172.31.6.61:8080/axis2/services/MyService?wsdl");

5 //将soap协议内容添加进来,即soapXML字符串

6 String soapXML="<soapenv:Envelopexmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ws=\"http://ws.day3.com\">"

7 +"<soapenv:Header/>"

8 +"<soapenv:Body>"

9 +"<ws:add>"

10 +"<ws:a>"+a+"</ws:a>"

11 +"<ws:b>"+b+"</ws:b>"

12 +"</ws:add>"

13 +"</soapenv:Body>"

14 +"</soapenv:Envelope>";

15 //将String转换成实体类型

16 StringEntity entity=new StringEntity(soapXML,Charset.forName("UTF-8"));

17 po.setEntity(entity);

18 CloseableHttpResponse re=cli.execute(po);

19 System.out.println((re.getEntity()).toString());

20 }

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: ,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

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

相关推荐
行則独善其身1 小时前
华为无线AC+AP组网实际应用小结
程序人生
霍格沃兹测试开发学社测试人社区2 小时前
数据驱动与并行策略:用 JUnit 5 让软件测试更高效
软件测试·测试开发·junit
霍格沃兹测试开发学社测试人社区2 小时前
软件测试丨探索 JUnit 5 中的参数化与调度执行:提升软件测试的效率与灵活性
软件测试·测试开发·junit
jiao_mrswang2 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
Swift社区11 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Dong雨13 小时前
力扣hot100-->栈/单调栈
算法·leetcode·职场和发展
trueEve14 小时前
SQL,力扣题目1369,获取最近第二次的活动
算法·leetcode·职场和发展
AI_小站18 小时前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·程序人生·langchain·kubernetes·llama·知识库·rag
召木19 小时前
C++小白实习日记——Day 2 TSCNS怎么读取当前时间
c++·职场和发展
程序员奇奥19 小时前
京东面试题目分享
面试·职场和发展