导航:首页 > 编程语言 > python接口测试用例

python接口测试用例

发布时间:2024-12-01 09:10:06

⑴ 用 python 为接口测试自动生成用例

基于属性的测试 会产生大量的、随机的参数,特别适合为单元测试和接口测试生成测试用例

尽管早在2006年haskell语言就有了 QuickCheck 来进行”基于属性的测试“,但是目前来看这依然是一个比较小众的领域,参考资料有限,本文如有不足,欢迎指正。

在过去的测试实践中,执行测试时通常需要明确的内容(Value):

这些内容可以通过”判定树“或者”判断表“来表示,然后测试的执行过程变成了这样

可以称为 基于表的测试

在最初,这给了我们测试的方向,但是缺点也非常明显:

你要足够多的"X->Y" 才能可能覆盖到隐蔽的bug。

这里请大家回答几个问题:

如果以上问题的答案不是yes,那么 基于属性的测试 就是你需要掌握的东西!

基于属性的测试和基于表的测试,最大的区别可以这样描述:

vs

于是利用工具生成大量的X类数据,进行测试,并验证结果是否Y类。

值得注意的是:

在不同的语言中有不同的工具来实现,比如:

本文以python为例进行演示:

假设有add函数,接收两个类型整数参数,并返回它们的相加结果

首先写出一个简单的测试用例

正如前面所说,一个这样的用例,根本没信心覆盖全部的场景,例如:

所以接下来怎么办?

改为基于属性的测试

执行结果

由结果可知,工具根据 参数是整数 这一规范,自动生成、执行了大量的测试用例

接口测试和函数的单元测试非常相似:

此外接口文档作为前后端、甚至测试开发的对接窗口,对参数的要求约定的更加细致,

以OpenAPI为例,每个参数可以有以下属性:

于是为接口生成符合要求的参数就变得可行了,举个例子:

这是以unittest为例进行封装的结果,只需要在TestCase中指定openapi的内容(或路径),

启动测试框架时,会自动读取、解析接口文档,并生成测试用例

下面是部分执行日志,可以看到对接口发送了随机参数,并获得返回值

文章来自https://www.cnblogs.com/dongfangtianyu/p/api_test_by_pbt.html

⑵ 【Python接口测试-1】登录接口获取token和uuid

所有接口测试都离不开登录接口获取的用户信息,无论是使用JMeter、APIPost还是Python,登录接口的调试都是首要步骤。在学习Python和unittest时,从项目开始,边实践边探索,这里推荐菜鸟教程作为入门资源。

之前关于JMeter和ApiPost的文章里,同样调试了登录接口。登录接口的参数和返回数据可以通过Fiddler抓包查看。登录接口返回的json数据包含uuid和token,这两个信息作为用户认证数据,需要在所有接口测试中的header中引用。为此,编写代码提取uuid和token,并将其拼接到header中。

在编码过程中,将环境信息、常用用户信息等存储为常量,便于在编码时直接引用。创建了settings文件夹以存放这些常量。编写unittest测试类(testman.py)来调用接口和公共方法。实现登录接口调试和获取uuid、token的过程,封装在common模块的get_header.py文件中。

具体步骤包括定义login_url、设置header和data参数,并调用post方法。login_url引用settings文件中的环境信息。在headers参数中添加固定的头部信息,如Referer,否则可能导致请求失败。data参数以字典形式包含用户信息,考虑到不同项目登录参数的差异,进行了适当的if判断。通过res_data接收调用post方法返回的数据,但由于数据格式为字符串,直接使用json()方法获取token信息不适用,需要先将字符串转换为字典格式。

转换字符串为字典推荐使用ast.literal_eval()方法,确保安全且高效。获取到转换后的数据后,将uuid和token追加到header中。之后,使用这个包含uuid和token信息的header调用后续的业务接口。

以上步骤涵盖了从登录接口调试到获取uuid和token,以及如何将这些信息应用在其他接口测试中的全过程。有兴趣了解更多细节,欢迎访问相关文章。

⑶ 使用python做接口自动化测试容易吗

为什么要做接口自动化测试?
在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。
为什么要自己写框架呢?
使用Postman调试通过过直接可以获取接口测试的基本代码,结合使用requets + unittest很容易实现接口自动化测试的封装,而且requests的api已经非常人性化,非常简单,但通过封装以后(特别是针对公司内特定接口),可以进一步提高脚本编写效率。
一个现有的简单接口例子
下面使用requests + unittest测试一个查询接口
接口信息如下
请求信息:
Method:POST
URL:api/match/image/getjson
Request:
{
"category": "image",
"offset": "0",
"limit": "30",
"sourceId": "0",
"metaTitle": "",
"metaId": "0",
"classify": "unclassify",
"startTime": "",
"endTime": "",
"createStart": "",
"createEnd": "",
"sourceType": "",
"isTracking": "true",
"metaGroup": "",
"companyId": "0",
"lastDays": "1",
"author": ""
}

Response示例:
{
"timestamp" : xxx,
"errorMsg" : "",
"data" : {
"config" : xxx
}

Postman测试方法见截图:

测试思路
1.获取Postman原始脚本
2.使用requests库模拟发送HTTP请求**
3.对原始脚本进行基础改造**
4.使用python标准库里unittest写测试case**
原始脚本实现
未优化
该代码只是简单的一次调用,而且返回的结果太多,很多返回信息暂时没用,示例代码如下
import requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = {"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}

response = requests.request("POST", url, headers=headers, params=querystring)

print(response.text)

优化 第一版
调整代码结构,输出结果Json出来,获取需要验证的response.status_code,以及获取结果校验需要用到的results['total']
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import unittestimport jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}#Post接口调用
response = requests.request("POST", url, headers=headers, params=querystring)#对返回结果进行转义成json串
results = json.loads(response.text)#获取http请求的status_codeprint "Http code:",response.status_code#获取结果中的total的值print results['total']#print(response.text)

优化 第二版
接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}try: #Post接口调用
response = requests.request("POST", url, headers=headers, params=querystring) #对http返回值进行判断,对于200做基本校验 if response.status_code == 200:
results = json.loads(response.text) if results['total'] == 191: print "Success" else: print "Fail" print results['total'] else: #对于http返回非200的code,输出相应的code raise Exception("http error info:%s" %response.status_code)except:
traceback.print_exc()

⑷ 如何通过python写接口自动化脚本对一个需要调用第三方支付

编写接口自动化脚本以测试涉及第三方支付的报名流程,主要步骤如下:

第一步:设置测试环境与依赖库

确保Python环境安装了必要的库,如requests用于发送HTTP请求,unittest或pytest作为测试框架。

第二步:编写测试脚本

使用requests和unittest编写脚本,示例如下,用于测试包含第三方支付的报名流程:

第三步:处理第三方支付

在脚本中,需处理支付请求,包括发起支付、获取支付结果等。

第四步:运行测试

使用unittest或pytest执行测试脚本,确保所有测试案例均通过。

请注意,此示例提供基础框架,具体实现会依据API设计和第三方支付网关要求有所不同。

阅读全文

与python接口测试用例相关的资料

热点内容
编译原理一气呵成 浏览:457
北京程序员薪水 浏览:292
快递柜加密手机号码怎么取 浏览:433
android新建线程 浏览:936
快递喜欢使用加密号码 浏览:311
虚拟机和编译软件 浏览:666
遗传算法的约束怎么添加 浏览:201
运行jsp后无法为jsp编译类 浏览:117
单片机wifi控制电灯开关 浏览:86
linuxpasswd命令 浏览:222
单片机并口通讯 浏览:772
不朽传说安卓怎么下载 浏览:598
循环队列的算法描述 浏览:392
pdf添加空白页 浏览:678
iospng压缩 浏览:73
python代码写手 浏览:896
word文档怎样变为PDF 浏览:241
强迫症解压好物排行榜 浏览:724
python中的academy 浏览:514
androideval 浏览:655