使用python进行接口测试

本文介绍如何使用Python进行接口测试,包括模拟GET和POST请求的方法,以及处理cookie的过程。

最近在做接口测试,之前公司的方案是使用postman进行接口测试。但是伟大的墙导致我们只能用离线版postman。。然后一个很长很长的接口列表,一个接一个的访问。我的天哪。。所以萌生了一个想法,使用python编写一套接口测试脚本,设置接口列表,然后逐条访问,输出日志。

  第一个坑:POST 和 GET----GET一般用于获取/查询资源信息,而POST一般用于更新资源信息|Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。

做过接口测试或者做过前端的人都知道,接口的访问方式是不一致的,所以才会使用postman来进行接口测试,因为它可以设置post和get方式。使用python模拟这俩种访问方式是重中之重。先说GET方式。GET方式就比较简单了,把接口放进浏览器地址栏,点下回车就完成了一次GET。所以就需要使用python访问URL就可以模拟一次GET 测试。

复制代码
1 import urllib2
2 url_save = 'http://www.baidu.com/'
3 try:
4     s_save = urllib2.urlopen(url_save).read()
5     print s_save  
6 except urllib2.HTTPError, e:
7     print e.code
8 except urllib2.URLError, e:
9     print str(e)
复制代码

如上所示就完成了一次GET请求,调用urllib2库,然后将一个字符串形式的URL传给urllib2.urlopen函数,最后使用read()方法将GET回来的数据存储起来。

然后说说POST。其实在python的urllib2库中,我们刚刚所使用的urlopen函数还有其他几样不是必选的入参,因为这些入参给定了初始化的值:

1 def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
2             cafile=None, capath=None, cadefault=False, context=None):

 

如上代码,urllib库有一个很智能的毛病。data不给值,访问方式就是GET,data给了值,方式就会变成POST;所以模拟POST 方式的代码如下:

复制代码
import urllib 
import urllib2 
url = 'http://www.example.com' 
# values的形式:name:value
values = {'**' : '***', 
          '**' : '***', 
          '**' : '***' } 
#使用urllib.urlencode函数对values字典进行处理,最终形式为:**=***&**=***
data = urllib.urlencode(values) 
#如果对data顺序有要求,建议自己拼接data
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read()
复制代码

就像如上代码,把POST方式所需要的数据写到data参数中去,POST方式就模拟成功了。

  第二个坑:cookie的使用

使用python获取cookie所需要的库叫做cookielib。获取cookie的例子:

复制代码
 1 # 这里有四种CookieJar,CookieJar是最原始的
 2 cookie_use = cookielib.CookieJar()
 3 handler = urllib2.HTTPCookieProcessor(cookie_use)
 4 # 使用绑定好CookieJar的handler创建一个opener
 5 opener = urllib2.build_opener(handler)
 6 # 将opener安装到urllib2中
 7 urllib2.install_opener(opener)
 8 # 使用安装好的urllib2访问某一网站获取cookie
 9 urllib2.urlopen('https://....../login')
10 #这个时候cookie已经被CookieJar获取到了
11 print cookie_use
复制代码

在下一步,将获取到的cookie绑定到opener头中:

1 '''
2  将获取到的cookie绑定到opener,上一步获取的cookie并不满足如下格式,
3  需要自己进行字符串的切片和拼接 
4 '''
5 opener.addheaders.append(('Cookie', 'name=***&888=888'))

现在的opener就可以用来访问任意需要登录的网站了!

### 使用 Python 在 Apifox 中实现接口测试的方法 Apifox 是一款强大的接口测试工具,支持生成代码、保存测试用例和创建 Mock 数据等功能[^1]。它还提供了与多种编程语言的集成能力,包括 Python。以下是如何使用 Python 在 Apifox 中进行接口测试的详细方法和示例代码。 #### 1. 安装必要的库 为了在 Python 中调用 Apifox 的接口测试功能,需要安装 `requests` 库来发送 HTTP 请求。如果尚未安装该库,可以运行以下命令: ```bash pip install requests ``` #### 2. 获取接口文档和请求信息 在 Apifox 中定义好接口文档后,可以通过可视化界面获取接口的具体信息,例如 URL、请求方法(GET/POST 等)、请求头和请求体等[^2]。这些信息将用于构造 Python 脚本中的请求。 #### 3. 示例代码:使用 Python 发送接口请求 以下是一个完整的 Python 示例代码,展示如何通过 Apifox 提供的接口文档进行测试: ```python import requests # 定义接口的基本信息 url = "https://example.com/api/test" # 替换为实际的接口地址 headers = { "Content-Type": "application/json", # 根据接口要求设置请求头 "Authorization": "Bearer your_token_here" # 如果需要认证,添加 token } payload = { "key1": "value1", # 替换为实际的请求参数 "key2": "value2" } # 发送 POST 请求 response = requests.post(url, headers=headers, json=payload) # 打印响应结果 print("Status Code:", response.status_code) print("Response Body:", response.json()) ``` #### 4. 自动生成代码 Apifox 提供了代码生成功能,可以直接生成 Python 的 `requests` 代码片段。只需选择目标接口,点击“生成代码”按钮,并选择 Python 语言即可获得类似上述的代码片段。 #### 5. 使用 Mock 数据进行测试 如果尚未实现真实的接口服务,可以利用 Apifox 的 Mock 功能创建虚拟数据。在 Python 中调用时,只需将接口 URL 替换为 Mock 地址即可[^1]。 #### 6. 保存测试用例 完成测试后,可以在 Apifox 中保存测试用例并创建测试用例集,以便后续自动化测试使用。 --- ### 注意事项 - 确保接口文档遵循 OpenAPI 3.0 或 JSON Schema 规范,以充分利用 Apifox 的功能[^2]。 - 如果需要调用其他语言(如 Java、PHP、Python、Go 等),可以参考 Apifox 提供的命令字符串拼接方法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值