接口自动化测试

🎬Python实现头条项目接口自动化测试实战,含接口自动化测试流程、项目接口介绍、用例设计、代码编写、数据驱动、生成报告

📒笔记:

1.需求分析

   登录接口

        (1)请求登录接口

  •         请求   url:http://...

                   请求方法:post,

                  请求数据(来自Headers):Headers = {"Content-Tpye":"application/json"}

                  请求报文(来自Body):{"mobile":"18600000000","code":888888}

  •         响应(响应数据{"message":"xxx"},

                   状态码:201)

         (2)获取短信验证码   url:http://...

                                       状态码:200

                                       请求方法:get

                提示:验证码1分钟之内只能接收1次

   单接口:颗粒度放比较小,以测试数据为颗粒度

   多接口:以接口为颗粒度进行划分

2.挑选需要做自动化的接口(时间,人员,接口复杂度)

3.设计自动化测试用例(如果功能阶段设计过用例,直接拿过来使用即可)

4.搭建自动化环境

5。设计自动化执行框架(报告,参数化,用例执行框架(unittest、pytest)

6.编写代码

7.执行用例(unittest、pytest)

8.生成测试报告(htmltestrunner,allure)

登录接口:

api层

case层

        ⚠️运行登陆接口时请求接口成功后会返回一个token(令牌),有些依赖登陆成功的接口需要token才可以进行

参数化:

        参数化使用的是列表嵌套元组,如果数据存储在json文件里需要封装一个把json文件改成列表 嵌套元组的方法

tools工具层:

                read_json.py:读取json文件 


cookies、token、session

cookies:

                来源:服务器生成

                作用:区分统一请求客户端

                获取:响应对象.cookies

                设置:cookies = {"获取出的cookies键名":"获取出的值"}

                应用:request.请求方法(url,cookies=cookies)

session:

                 代表一次用户会话:从客户端浏览器连接服务开始,到客户端浏览器与服务器断开(可以记录一次会话的全部cookies数据并自动在下一条请求附加,不需要手动添加cookies)

import requests
#获取session对象
session = requests.session()
#请求验证码,让session对象记录cookies信息
url_verify = "http://"
session.get(url_verify) 

#请求登陆
url_login = “http://”
data = {"username":"13800001111",
"password":"123456",
"verify_code":8888}
session.post(url_login,data=data)

 

  

⚠️请求方法返回值为Response对象,含有如下信息: 

import requests
url = 'http://www.baidu.com'
r = requests.get(url)

print(r)  #<Response [200]>

⚠️如果请求响应的内容为json格式数据,可以直接调用response.json()获取数据,requests中内置了json解码器,解码异常会抛出异常

 常见http请求

GET,POST,PUT,DELETE(对应资源的增删改查),HEAD(只有信息头,没有body),OPTIONS(可以查看可以用了什么方法)

GET:资源查询请求获取资源,响应成功状态码:200

GET带参使用:使用params= 动态传参,params为字典或者字符串

import requests

url = "http://www.baidu.com"


params = {"id":1001}
#请求带参数
r = requests.get(url,params=params)

#获取请求URL地址
print("请求URL",r.url)

POST:新增资源,响应成功状态码:201

import requests
url = "http://127.0.0.1:8000/api/department"
headers = {"content-Type":"application/json"}
data = {"data":[{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}

r = requests.post(url,json=data,headers=headers)

print(r.json())

post中data= 和json= 的区别:

                                                data:字典对象

                                                json:json字符串

                                                字典对象转json字符串:

import requests
import json
url = "http://127.0.0.1:8000/api/department"
headers = {"content-Type":"application/json"}
data = {"data":[{"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"}]}

r = requests.post(url,data=json.dunmps(data),headers=headers)

print(r.json())

post中  json()与text的区别:

                                        json():返回类型是字典,可以通过键名获取值

                                        text:返回的是字符串,看起来是字典的样式,但不能获取值

PUT:实现资源的更新,响应成功状态码:200或者201

import requests
url = "http://127.0.0.1:8000/api/department/TT702/"  #URL里要把ID加进去
headers = {"content-Type":"application/json"}
data = {"data":[{
    "dep_id":"TT702",
    "dep_name":"TestTT702update",
    "master_name":"Test-Master",
    "slogan":"Here is Slogan"
               }]
       }

r = requests.put(url,json=data,headers=headers)

print(r.json())

print(r.status_code)

DELETE:删除资源,响应状态码:204

import requests
url = "http://127.0.0.1:8000/api/department/TT702/"

headers = {"content-Type":"application/json"}
r = requests.delete(url)

print(r.status_code)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值