代码实现usb管控方法_不用代码也能实现循环断言不同内容的方法

78715362a63eb61315856236cf6dd293.png
前言

对于使用jmeter工具完成接口测试的测试工程师而言。在工作中,或者在面试中,都会遇到一个问题:“CSV文档做了一大笔测试数据后,怎么去校验这个结果呢?”


现在大部分测试工程师可能都是通过人工的方法去查看结果,十几个还好,那要很多很多呢?
OK,此时,肯定会有同学想到,断言呗,响应断言,beanshell断言,都可以啊。但是beanshell里要写java代码,对于没有代码基础的怎么办?求开发?开发小哥没时间怎么办?
那响应断言呢?对于很多测试工程师而言,响应断言好像只能断言一次,无法循环去断言不同的内容。


其实不然,今天我们就一起来学学,不写代码,就用响应断言,怎么实现循环断言不同的内容。

思路

我们要去做一件事,肯定是要谋而后定,那么去实现循环断言,要怎么去做呢?

1、先对csv文档进行参数化;
2、循环取出csv里的数据;
3、编写需要的断言内容;
4、对每一条数据都要进行一次断言。

先导知识

【概念】:
允许用户在线程组中任何位置创建引用的计数器。
计数器配置允许用户配置起始点,最大值和增量。计数器将从开始循环到最大,然后从开始重新开始,继续进行,直到测试结束。


所以:用大白话来讲,计数器就是帮你去计数的,从几开始到几结束,每次循环迭代后加几。

bb109a4bbc9598a39a8b3fadc653b889.png

【解释】:

Starting Value:给定计数器的初始值递增:每次循环迭代后,给计数器增加的值Maximum Value:计数器的最大值,如果超过最大值,会重新设置为初始值,非必填项数字格式:可选格式,比如填写000,格式化为001,002;比如填写0,格式化为1,2;引用名称:引用变量,可以在其他元素中引用该值,形式:${引用名称}

与每用户独立的跟踪计数器

  • 不勾选,即全局计数器的,比如用户#1 获取值为1,用户#2获取值还是为1;
  • 勾选,即独立的,则每个用户有自己的值:比如用户#1 获取值为1,用户#2获取值为2。

每次迭代复原计数器:只有当勾选了,与每用户独立的跟踪计数器时才可用;勾选此选项后,则每次线程组迭代,都会重置计数器的值,当线程组是在一个循环控制器内时比较有用。

拼接函数,嵌套变量

5c2e194bd314ce252dc90bf26f568c7b.png
  • 这个是jmeter自带的函数,可以用用这个函数进行字符串的拼接,或者是变量中再嵌套变量。Name of variable:引用的变量名默认值:非必填参数,填写了之后,当你引用变量失败后,就会填充该默认值
  • 1、先参数化接口

请一定要注意,csv文档参数化,里面有多少条数据,就要在线程组里循环多少次,不然只会执行一次哟。

bf3290a058ddc5210e71d610c4f20c58.png

5827d926dbf6e8bae4efd68fad757813.png
  • 2、添加计数器

2666a85108fd591a2ae9b8eee96f35e5.png
  • 3、设置断言内容

这里有一个非常重要的点就是我们要把需要断言的内容给设置成变量,因为只有这样,我们才能循环取值,做循环断言

160141e56301fc55425157260b8fd6e2.png
  • 4、取出需要进行结果判断的数据

此处,我们将以返回结果的msg进行断言

4e6a653804ac6779af68c29f24531364.png
  • 5、添加响应断言,进行结果判断

1832daaf7bfb939a565e7c6d4b1d7988.png
  • 6、添加查看结果树,进行循环断言

428964fb61b88ee3e70cb437f28ff6eb.png

通过结果树可以看到,这里会有两条用例失败了。

那是因为,我们在第三步的时候,设置了需要断言的内容

至此,我们就完全可以用响应断言,实现循环断言了,这也是以后要用工具做自动化的一个必不可少的步骤哟。

实现智能物联网管控平台需要涉及到多种技术和领域,其中包括物联网技术、云计算技术、大数据技术、人工智能等。在这里,我可以给您提供一个简单的C语言代码示例,用于实现物联网设备的数据采集和处理: ``` #include <stdio.h> #include <stdlib.h> #define MAX_DEVICES 100 // 最大设备数量 #define MAX_DATA_SIZE 1024 // 最大数据大小 struct Device { char name[50]; // 设备名称 char ip[20]; // 设备IP地址 int port; // 设备端口号 }; struct DeviceData { char deviceName[50]; // 设备名称 char data[MAX_DATA_SIZE]; // 数据 }; struct Device devices[MAX_DEVICES]; // 设备数组 int numDevices = 0; // 设备数量 void addDevice(char name[], char ip[], int port) { if (numDevices < MAX_DEVICES) { struct Device device; strcpy(device.name, name); strcpy(device.ip, ip); device.port = port; devices[numDevices++] = device; printf("设备 %s 添加成功\n", name); } else { printf("设备数量已达到上限\n"); } } void removeDevice(char name[]) { int i, j; for (i = 0; i < numDevices; i++) { if (strcmp(devices[i].name, name) == 0) { for (j = i; j < numDevices - 1; j++) { devices[j] = devices[j + 1]; } numDevices--; printf("设备 %s 移除成功\n", name); return; } } printf("设备 %s 不存在\n", name); } void collectData(struct DeviceData *data) { int i; for (i = 0; i < numDevices; i++) { // 调用设备采集数据的函数,将数据存储在data结构体的data字段中 // 注意:此处为模拟代码,实际使用应调用物联网设备的API printf("正在采集设备 %s 的数据...\n", devices[i].name); strcpy(data[i].deviceName, devices[i].name); sprintf(data[i].data, "设备 %s 的数据", devices[i].name); } } int main() { addDevice("设备1", "192.168.1.100", 8080); addDevice("设备2", "192.168.1.101", 8080); addDevice("设备3", "192.168.1.102", 8080); // 模拟数据采集并处理 struct DeviceData data[MAX_DEVICES]; collectData(data); int i; for (i = 0; i < numDevices; i++) { printf("%s: %s\n", data[i].deviceName, data[i].data); } removeDevice("设备2"); return 0; } ``` 这段代码实现了设备列表的添加和移除、以及数据采集和处理。在实际应用中,需要根据具体的场景和需求进行相应的修改和扩展。同,需要结合物联网平台的API和云计算平台的服务,实现数据的存储、处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值