美文网首页
Pytest学习(3):接口自动化测试之request详解

Pytest学习(3):接口自动化测试之request详解

作者: 九千年小妖 | 来源:发表于2021-11-24 16:44 被阅读0次

一、接口自动化实现方式

工具类实现接口自动化:

1.Postman+Newman+git/svn+jenkins
2.jmeter+Ant+git/svn+jenkins

搭建代码框架实现接口自动化:

使用开发语言+工具类:如Java、Python

二、为什么做接口自动化框架

1.敏捷开发,迭代产品项目时,接口一般数量比较大,方便团队实现接口测试版本控制。(主要原因)
2.工具功能太死板,有些接口完全无法实现(比如复杂的加密接口,签名接口等,postman只能使用md5加密)
3.接口项目中有多种不同协议的接口。
4.排错困难,定位问题不方便,需要结合抓包实现。
5.没有办法生成美观的测试报告,特别是对外包公司来说。
6.多接口串联,数据库验证,日志监控等
7.有些公司做web自动化+接口自动化。

三、Python+requests模块实现接口自动化

1.requests第三方库主要用于发送http请求,做接口自动化

安装requests库:pip install requests

image.png

2.requests全局观

请求:

1.requests.get()发送get请求
2.requests.post()发送post请求
3.requests.delete()发送delete请求
4.requests.put()发送put请求
5.requests.request()最核心的方法

响应:
import requests
rep = requests.request()
#返回字符串数据
print(rep.text)
#返回字典格式的数据
print(rep.json())
#返回状态码
print(rep.status_code)
#返回cookies
print(rep.cookies)
#返回编码格式
print(rep.encoding)
#返回响应头
print(rep.headers)

3.接口实战

请求方式:get、post、delete、put
请求参数类型:键值对、JSON格式、文件格式。

import time

import pytest
import requests


# class  setup_class:

class TestSendRequsets:

    # def setup(self):
    #     print("每个用例执行之前")
    # def teardown(self):
    #     print("每个用例执行之后")
    # @pytest.fixture()
    def test_getImgCode(self):
        # 接口url
        t = time.time()
        timess = str(int(round(t * 1000)))
        times = str(int(t))
        url = "http://124.71.230.185:9002/jeecg-boot/sys/randomImage/" + "" + timess
        # 参数
        data = {
            "_t": times,
        }
        # # get请求
        rep = requests.request('get', url, params=data)
        print(rep.text)

    # 只执行smoke
    # @pytest.mark.smoke
    def test_Login(self):
        # post请求
        url = "http://124.71.230.185:9002/jeecg-boot/sys/login"
        # 参数
        data = {
            "captcha": "Gkak!@#2019",
            "checkKey": 1637811815838,
            "password": "123456",
            "remember_me": 1,
            "username": "admin"
        }
        rep = requests.request('post', url, json=data)
        statues = rep.json()["success"]
        message = rep.json()["message"]
        if statues:
            print(message)
        else:
            # raise Exception(message)
            print(message)


if __name__ == '__main__':
    pytest.main(['-vs']);

用例管理框架:安装pytest
pip install pytest

默认规则:

1.测试文件以test结束或者已test开头
2.测试函数以test_开头
3.测试方法以Test开头,但不能带有init()方法;

注意:

get请求通过params传递参数
post请求通过json或者data传递参数,区别是:
data:
数据报文dict字典类型:默认情况下请求头是application/x-www-form-urlencoded,表示以form表单的形式传递,格式a=1&b=2&c=3
json:
数据报文:不管是dict类型还是str类型,默认都是application/json,格式{"a":1,"b":2}
json.dumps(data),序列化,把字典格式的数据转换成str类型的数据
json.loads(data),反序列化,把str格式转换成字典格式。
\color{red}{总结:data只能传输简单的只有键值对的dict或者str格式的数据,json一般只能传输dict格式,简单复杂的都可以 }

相关文章

网友评论

      本文标题:Pytest学习(3):接口自动化测试之request详解

      本文链接:https://www.haomeiwen.com/subject/hsuotrtx.html