服务端接口自动化requests

本文详细介绍了使用Python的requests库进行GET、POST请求,设置headers,处理JSON和XML数据,以及使用jsonpath和hamcrest进行断言和cookies管理,最后展示了如何进行基本的Auth认证。
摘要由CSDN通过智能技术生成

目录

一、代码片段

get请求

post表单请求

请求中添加headers

json请求

xml请求

jsonpath断言hamcrest断言

headers中添加cookie

请求中添加cookies参数

Auth认证

二、完整代码


一、代码片段


get请求

def test_get(self):
    r = requests.get('http://httpbin.testing-studio.com/get')
    print(r)
    print(r.status_code)
    print(r.text)
    print(r.json())
    assert r.status_code == 200

def test_query(self):
    payload = {
        "level": 1,
        "name": "sevenirbuy"
    }
    r = requests.get('http://httpbin.testing-studio.com/get', params=payload)
    print(r)
    print(r.text)
    assert r.status_code == 200

post表单请求

def test_post_form(self):
    payload = {
        "level": 1,
        "name": "sevenirbuy"
    }
    r = requests.post('http://httpbin.testing-studio.com/post', data=payload)
    print(r)
    print(r.text)
    assert r.status_code == 200

请求中添加headers

def test_header(self):
    r = requests.get('http://httpbin.testing-studio.com/get', headers={"h": "hi_header"})
    print(r.status_code)
    print(r.text)
    print(r.json())
    assert r.status_code == 200
    assert r.json()["headers"]["H"] == "hi_header"

json请求

def test_post_json(self):
    payload = {
        "level": 1,
        "name": "sevenirbuy"
    }
    r = requests.post('http://httpbin.testing-studio.com/post', json=payload)
    print(r)
    print(r.text)
    assert r.status_code == 200
    assert r.json()['json']['level'] == 1

xml请求

def test_post_xml(self):
    headers = {
        "Content-Type": "application/xml"
    }
    xml = """
        <?xml version='1.0' endcoding='utf-8'?>
        <a>%</a>
        """
    r = requests.post('http://httpbin.testing-studio.com/post', data=xml, headers=headers)
    print(r)
    print(r.text)
    assert r.status_code == 200

jsonpath断言
hamcrest断言

def test_jsonpath_assert(self):
    r = requests.get('https://ceshiren.com/categories.json')
    print(r)
    print(r.text)
    print(r.json())
    assert r.status_code == 200
    assert r.json()["category_list"]["can_create_category"] == False
    print(jsonpath(r.json(), '$..name'))  # 打印出..name路径下所有的元素
    # jsonpath断言
    assert jsonpath(r.json(), '$..name')[0] == '提问区'

    # hamcrest断言
    print(r.json()["category_list"]["categories"][0]["topic_count"])
    # 断言目标位置是否包含关键词
    assert_that((r.json()["category_list"]["categories"][0]["topic_count"]), equal_to(893))

Hamcrest断言:自动化测试的利器_测试界的飘柔的博客-CSDN博客

headers中添加cookie

def test_headers_cookie(self):
    url = "http://httpbin.testing-studio.com/cookies"
    header = {"Cookie": "this_cookie=halo"}
    r = requests.get(url, headers=header)
    print(r.request.headers)

请求中添加cookies参数

def test_cookies(self):
    url = "http://httpbin.testing-studio.com/cookies"
    header = {'Accept': '*/*'}
    cookies_data = {
        "this_cookie": "this_cookie=halo",
        "this_element": "AD"
    }
    r = requests.get(url, headers=header, cookies=cookies_data)
    print(r.request.headers)

Auth认证

def test_auth(self):
    url = "http://httpbin.testing-studio.com/basic-auth/root/12"
    # auth =
    r = requests.get(url, auth=HTTPBasicAuth("root", "12"))
    print(r)
    print(r.text)

二、完整代码

import requests
from hamcrest import assert_that, equal_to
from jsonpath import jsonpath
from requests.auth import HTTPBasicAuth


class TestDemo:
    """
    get请求
    """

    def test_get(self):
        r = requests.get('http://httpbin.testing-studio.com/get')
        print(r)
        print(r.status_code)
        print(r.text)
        print(r.json())
        assert r.status_code == 200

    def test_query(self):
        payload = {
            "level": 1,
            "name": "sevenirbuy"
        }
        r = requests.get('http://httpbin.testing-studio.com/get', params=payload)
        print(r)
        print(r.text)
        assert r.status_code == 200

    """
    post表单请求
    """

    def test_post_form(self):
        payload = {
            "level": 1,
            "name": "sevenirbuy"
        }
        r = requests.post('http://httpbin.testing-studio.com/post', data=payload)
        print(r)
        print(r.text)
        assert r.status_code == 200

    """
    get请求中添加headers
    """

    def test_header(self):
        r = requests.get('http://httpbin.testing-studio.com/get', headers={"h": "hi_header"})
        print(r.status_code)
        print(r.text)
        print(r.json())
        assert r.status_code == 200
        assert r.json()["headers"]["H"] == "hi_header"

    """
    json请求
    """

    def test_post_json(self):
        payload = {
            "level": 1,
            "name": "sevenirbuy"
        }
        r = requests.post('http://httpbin.testing-studio.com/post', json=payload)
        print(r)
        print(r.text)
        assert r.status_code == 200
        assert r.json()['json']['level'] == 1

    """
    xml请求
    """

    def test_post_xml(self):
        headers = {
            "Content-Type": "application/xml"
        }
        xml = """
            <?xml version='1.0' endcoding='utf-8'?>
            <a>%</a>
            """
        r = requests.post('http://httpbin.testing-studio.com/post', data=xml, headers=headers)
        print(r)
        print(r.text)
        assert r.status_code == 200

    """
    jsonpath断言
    hamcrest断言
    """

    def test_jsonpath_assert(self):
        r = requests.get('https://ceshiren.com/categories.json')
        print(r)
        print(r.text)
        print(r.json())
        assert r.status_code == 200
        assert r.json()["category_list"]["can_create_category"] == False
        print(jsonpath(r.json(), '$..name'))  # 打印出..name路径下所有的元素
        # jsonpath断言
        assert jsonpath(r.json(), '$..name')[0] == '提问区'

        # hamcrest断言
        print(r.json()["category_list"]["categories"][0]["topic_count"])
        # 断言目标位置是否包含关键词
        assert_that((r.json()["category_list"]["categories"][0]["topic_count"]), equal_to(893))

    """
    headers中添加cookie
    """

    def test_headers_cookie(self):
        url = "http://httpbin.testing-studio.com/cookies"
        header = {"Cookie": "this_cookie=halo"}
        r = requests.get(url, headers=header)
        print(r.request.headers)

    """
    请求中添加cookies参数
    """

    def test_cookies(self):
        url = "http://httpbin.testing-studio.com/cookies"
        header = {'Accept': '*/*'}
        cookies_data = {
            "this_cookie": "this_cookie=halo",
            "this_element": "AD"
        }
        r = requests.get(url, headers=header, cookies=cookies_data)
        print(r.request.headers)

    """
    Auth认证
    """

    def test_auth(self):
        url = "http://httpbin.testing-studio.com/basic-auth/root/12"
        # auth =
        r = requests.get(url, auth=HTTPBasicAuth("root", "12"))
        print(r)
        print(r.text)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值