接口自动化测试--入门

一、什么是接口自动化测试?

     让程序或工具代替人工自动化的完成对接口进行测试的一种过程。

二、实现方式:

  1. 工具(Jmeter,postman)
  2. 代码(python-requests)

三、测试工具缺点:

  1. 测试数据不好控制(无法直接读取或存储json格式)
  2. 测试数据加密不方便
  3. 扩展性不足(复杂业务逻辑)

四、本次学习目标:基于python结合requesrs库实现接口自动化测试

五、Requests库介绍:

  1. 使用python语言编写
  2. 使用开源协议,基于urllib库做的二次封装
  3. Requests库中封装了相应接口测试方法

 1、GET方法(响应状态码:200)

#1.导包
import requests
#2.调用get
url="http://127.0.0.1:8080/demo/cheliangxinxi/list/"
r=requests.get(url)
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)
print(r.headers)
l=r.encoding='ASCI'
print(r.encoding)

2、GET方法请求带参数

#1.导包
import requests

#2.调用get
url="http://www.baidu.com"
#参数:params:字典或字符串(推荐使用字典)
#字典
params={"id":1001,"kw":"北京"}  # %2c ASCI值为逗号
#字符串
#r=requests.get(url,params="id=1001")
r=requests.get(url,params=params)
#不推荐写法
#url="http://www.baidu.com?id=1001"
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)

3、PUT方法(响应状态码:200或201)

import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/edit/180/"
headers={"Content-Type":"application/json"}
data={
    "data": [{
        "id": "180",
        "chehao":"T01",
        "pinzhong": "Test学院update"
    }]
}

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

print(r.status_code)

4、POST方法(响应状态码:201)

import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/add/"
headers={"Content-Type":"application/json"}
data={
    "data": [{
        "chehao":"T01",
        "pinzhong": "Test学院"
    }]
}

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

5、传递参数json与data格式的区别?

     data:字典对象

     json:json字符串

6、如何将字典对象转换为json字符串?
    1.导入json包

    2.json.dumps(字典对象)

7、响应数据json()与text区别?

    json():双引号,返回类型字典,可以通过键名来获取响应的值

    text:单引号,返回的类型为字符串,无法通过键名俩获取响应的值  

8、DELETE方法(响应状态码:204)

import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/remove/190/"
r=requests.delete(url)

print(r.status_code)

六、响应对象的方法

1.encoding

查看默认请求编码格式:响应对象.encoding

设置响应编码格式      响应对象.encoding=”utf-8”

2.headers 获取服务器响应信息头

响应对象.headers

3.cookies获取响应cokkies信息(服务器产生)

4.text:以文本形式解析

5.content:以字节码形式解析响应内容

6.json() 以json字符串格式解析响应内容

七、案例:

TPShop商城的获取验证码,登陆成功,获取订单信息

import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)

#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])

#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}

url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={
    "username": "15991986680",
    "password": "Wxm131411",
    "region": "8888"
}
r_login=requests.post(url=url_login,json=data,cookies=cookies)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=requests.get(url=url_order,cookies=cookies)
print(r.text)

Session:完成一次会话(从客户端和服务器创建请求连接开始,到客户端和服务器断开连接结束)

session可以自动保存服务器产生的cookies信息,并且自动在下一条请求时附加。

应用:通过session对象.方法

session.get()

session.post()

session.put()

session.delete()

无论是requests还是session返回结果都是responsebody

八、TPShop案例session版本

import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)

#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])

#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}

url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={
    "username": "15991986680",
    "password": "Wxm131411",
    "region": "8888"
}
session=requests.session()
r_login=session.post(url=url_login,json=data)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=session.get(url=url_order)
print(r.text)

九、unittest与requests结合

   继承unittest.TestCase,以test开头的方法就是一条用例

setup:

 作用:test开始方法执行之前,首先会被执行

teardown:

 作用:test开始方法执行之后,会被执行

test_login_success:

 作用:登陆成功

test_username_not_exist

 作用:登陆失败,用户名不存在

test_password_error

 作用:登陆失败,密码错误

import unittest
import requests
class TPShopLogin(unittest.TestCase):
    def setUp(self):
        #获取session对象
        self.session=requests.session()
        #登陆url
        self.url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
        #验证码url
        self.url_verify="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"

    def tearDown(self):
        self.session.close()
        #关闭session

    def test_login_sucess(self):
        #请求验证码
        self.session.get(self.url_verify)
        data = {
            "username": "15991986680",
            "password": "Wxm131411",
            "region": "8888"
        }
        #请求登陆
        r=self.session.post(self.url_login,json=data)
        #断言
        try:
          self.assertEqual("登陆成功",r.json()['msg'])
        except AssertionError as e:
          print(e)
    def test_username_not_exist(self):
        # 请求验证码
        self.session.get(self.url_verify)
        data = {
            "username": "159919866801",
            "password": "Wxm131411",
            "region": "8888"
        }
        # 请求登陆
        r = self.session.post(self.url_login, json=data)
        # 断言
        try:
            self.assertEqual("用户名不存在", r.json()['msg'])
        except AssertionError as e:
            print(e)
    def test_password_error(self):
        # 请求验证码
        self.session.get(self.url_verify)
        data = {
            "username": "15991986680",
            "password": "Wxm13141111",
            "region": "8888"
        }
        # 请求登陆
        r = self.session.post(self.url_login, json=data)
        # 断言
        try:
            self.assertEqual("密码错误", r.json()['msg'])
        except AssertionError as e:
            print(e)

    def test_verify_error(self):
        # 请求验证码
        self.session.get(self.url_verify)
        data = {
            "username": "15991986680",
            "password": "Wxm13141111",
            "region": "8888"
        }
        # 请求登陆
        r = self.session.post(self.url_login, json=data)
        # 断言
        try:
            self.assertEqual("验证码错误", r.json()['msg'])
        except AssertionError as e:
            print(e)

if __name__=='__main__':
    unittest.main()

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python接口自动化测试是使用Python编写代码来自动化执行接口测试的过程。下面是一个入门指南,帮助你开始学习Python接口自动化测试: 1. 安装Python:首先,你需要安装Python解释器。你可以从Python官方网站(www.python.org)下载适合你操作系统的安装程序,并按照指示进行安装。 2. 安装所需模块:Python有许多用于接口自动化测试的模块。其中最常用的是requests、unittest和json。你可以使用pip工具来安装这些模块。打开终端或命令提示符窗口,执行以下命令: ``` pip install requests pip install unittest ``` 3. 编写测试脚本:接下来,你可以使用任何编辑器创建一个新的Python脚本文件。在脚本中,你可以导入所需的模块,并编写测试用例和断言来验证接口的响应是否符合预期。 以下是一个简单的示例代码,用于发送GET请求并断言响应状态码为200: ```python import requests import unittest class APITest(unittest.TestCase): def test_get_request(self): response = requests.get("https://api.example.com/users") self.assertEqual(response.status_code, 200) if __name__ == "__main__": unittest.main() ``` 4. 运行测试脚本:保存测试脚本文件,并在终端或命令提示符窗口中执行以下命令来运行测试: ``` python your_test_script.py ``` 如果一切顺利,你将看到测试执行结果的输出。 这只是一个简单的入门指南,帮助你开始学习Python接口自动化测试。接下来,你可以进一步学习如何处理不同类型的请求(例如POST、PUT、DELETE),以及如何使用更高级的断言和测试框架来进行更复杂的测试。还可以了解更多关于接口测试的基础知识,例如如何处理身份验证、参数化测试和数据驱动测试等。祝你学习愉快!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值