玩命加载中🤣🤣🤣

pytest、request入门


Python自动化

依赖安装

pip install requests pytest 

pytest

基础用法

  • 创建 test_ 开头的py开头
  • 创建 test_ 开头的函数
  • 在函数中使用断言
  • pytest
def test_abc():
    assert 1 == 2

其他用发

  • 参数 -s 去除IO过滤
  • mark
  • fixture
  • hook

requests

QuickStart

def test_baidu():
    resp = requests.request(
        "get",
        "https://www.baidu.com",
    )
    print(resp.status_code) # 整数 200
    print(resp.headers) # 字典
    print(resp.text) # 字符串
    print(resp.json()) # JSON

    assert resp.status_code == 200
    assert "baidu" in resp.text

标记跳过测试注解

@pytest.mark.skip

# 有一个好用的网站用来做接口的测试
# https://httpbin.org/

表单参数

def test_form():
    resp = requests.request(
        method="post",
        url="https://httpbin.org/post",
        data={
            "username": "sanmu",
            "password": "123456"
        }
    )
    assert resp.status_code == 200

JSON参数

def test_json():
    requests.post(
        url="https://httpbin.org/post",
        json={
            "username": "sanmu",
            "password": "123456"
        }
    )

文件上传

def test_file():
    with open("files/163.jpg", "rb") as f:
        resp = requests.post(
            url="https://httpbin.org/post",
            files={"file": f}
        )
    assert resp.status_code == 200

注意:

  • 使用文件上传时,尽量使用 with 语句自动关闭文件,避免资源泄露
  • 同时要注意文件类型打开模式
文件类型 正确模式 错误模式
图片(jpg/png) "rb" "r"
文本文件(txt) "r" "rb"
CSV/JSON "r" "rb"

接口关联

def test_chain():
    resp = requests.get("https://news.baidu.com/widget?id=LocalNews&ajax=json")
    assert resp.status_code == 200

    # 假设第一个接口返回了token, 模拟提取
    token = jsonpath.jsonpath(resp.json(), "$.request_id")[0]
    print(token)
    
    # 后续逻辑...

文章作者: 👑Dee👑
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 👑Dee👑 !
  目录