当前位置:   article > 正文

用Python实现接口测试_python接口测试

python接口测试

今天为大家带来的是如何使用Python实现接口测试, 相信很多小伙伴在日常的工作中都在进行这方面的测试工作. 一起来看看有没有特殊的花招,能够提升我们的工作效率呢。

市场主流测试常用python库: requests, urllib3, mock, grequests, httprunner, robotframework等

我们以requests为例进行案例讲解。

1.通过requests发起get和post接口请求

1.1 首先我们可以使用requests库创建出一个会话管理对象session.

session会话管理对象能够帮助我们处理缓存和cookie信息, 从而减少冗余的操作.

借助与session对象, 发起get、post请求.

session会话管理对象

session = requests.session()

1.2 发起post请求

登录接口

url = 'http://127.0.0.1:8088/login'

payload = {"username": "qftest", "password": "test123456"}

resp = session.post(url, data=payload)

print(resp.text)

{"code": 1, "message": "贺喜你,登录成功"}

print(resp.json())

{'code': 1, 'message': '贺喜你,登录成功'}

url: 接口URL请求地址

payload: 请求参数

resp: 响应

resp.text 响应的文本数据

resp.json() 响应的json数据

resp.status_code http协议状态码

1.3 发起get请求

注销登录

url = 'http://127.0.0.1:8088/logout'

resp = session.get(url)

print(resp.text)

{'code': 1, 'message': '退出成功'}

2.对于文件上传类型接口的请求

上传头像

url = 'http://127.0.0.1:8088/user/avatar'

构造上传文件数据

file = {"file": open('head.jpg', 'rb')}

resp = session.post(url, files=file)

print(resp.json())

{'code': 1, 'message': '个性头像设置成功'}

files: 用于接收上传的文件(使用open()打开读取)

3.关联数据的处理

关联数据:

前一个接口的返回值是后续接口的入参必填数据

当前接口的请求头或后续断言中需要使用之前接口的请求头或响应中的文本作为参照

关联数据的处理:

先将从想用中获取到的数据保存到一个 字典(dict)中 -- 关联数据字典

relations = {}

relations["id"] = resp.json().get("userid")

relations["pay_pwd"] = resp.json().get("pay_pwd")

再使用到关联数据时, 从之前保存数据的 关联数据字典中 通过传入key获取到数据

id = relations.get("userid") # 获取字典中指定key的value

4.接口测试断言

4.1 断言预期字符串数据包含响应文本数据中

def assert_contains(expect, actual):

"""

断言预期字符串包含在实际响应文本数据中

:param expect: 预期字符串

:param actual: 实际响应文本数据

:return: True/False

"""

contains 判断是否包含

  1. if actual.__contains__(expect):
  2. return True
  3. return False

4.2 断言预期值与响应数据中指定key的值相等

def assert_equal(expect, key):

"""

断言预期值与实际响应中指定key的值相等

:param expect: 预期值

:param key: 实际响应数据中的key

:return: True/False

"""

预期数据与通过响应数据指定key获取到的值进行判断

  1. if str(expect) == str(resp.json().get(key)):
  2. return True
  3. return False

4.3 断言预期的字典数据与响应字典数据完全一致

def assert_equals(expect, actual):

"""

断言预期值与实际响应中指定key的值相等

:param expect: 预期json数据

:param actual: 实际响应json数据

:return: True/False

"""

for key in expect.keys():

循环遍历预期结果的每个key, 从预期结果与实际结果分别获取key对应的value进行比较, 有一个值不相等即断言失败

  1. if str(expect.get(key)) != str(actual.get(key)):
  2. return False

return True

5.数据驱动测试

我们可以借助于 openpyxl, csv, yaml等数据格式对需要进行测试的接口数据进行参数化设置, 在测试的过程中通过外部文件管理测试数据.

以上就是本次为大家分享的, 使用python进行接口测试的实战案例.

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/620374
推荐阅读
相关标签
  

闽ICP备14008679号