python接口请求&token提取&断言&条件判断&异常处理

一、当使用 Python 进行接口测试时,可以使用 requests 库来发送请求并进行响应断言。以下是一个示例,展示了如何使用 Python 进行接口响应断言:

import requests

# 发送请求
response = requests.get('http://api.example.com/user/1')

# 检查HTTP状态码是否为200
if response.status_code != 200:
    print(f"接口请求失败,状态码:{response.status_code}")
    exit(1)

# 检查返回数据中的字段值是否符合预期
expected_name = "John Doe"
actual_name = response.json().get("name")
if actual_name != expected_name:
    print(f"姓名不符合预期,期望值:{expected_name},实际值:{actual_name}")
    exit(1)

# 所有断言通过,输出成功消息
print("接口测试通过")
exit(0)

以上示例使用 requests.get() 方法发送 GET 请求,并将响应结果保存在 response 对象中。然后,通过检查 response.status_code 来验证请求是否成功。接下来,通过 response.json() 方法提取响应的 JSON 数据,并通过 .get("name") 获取用户的姓名字段值。最后,将预期值与实际值进行比较,如果不相符,则输出相应的错误消息并退出。如果所有断言都通过,则输出成功消息。

请注意,以上示例仅为简单示例,实际的接口测试中可能需要更复杂的断言逻辑和错误处理。你可以根据具体需求进行修改和扩展。另外,确保已安装 requests 库,可通过 pip install requests 命令进行安装。

二、 当测试一个登录接口时,我们可以使用 Python 编写一个登录接口的测试用例,并使用断言来验证接口的行为是否符合预期。下面是一个示例的登录接口测试用例:

import requests

def test_login():
    url = "http://api.example.com/login"
    payload = {
        "username": "testuser",
        "password": "password123"
    }
    response = requests.post(url, data=payload)

    # 验证HTTP状态码是否为200
    assert response.status_code == 200, f"接口请求失败,状态码:{response.status_code}"

    # 验证返回结果中的字段是否存在
    assert "token" in response.json(), "登录接口返回结果中缺少token字段"
    
    # 验证返回结果中的token是否为非空字符串
    token = response.json()["token"]
    assert token != "", "登录接口返回的token为空"

    # 验证其他自定义的断言条件...
    
    print("登录接口测试通过")

test_login()

在上面的示例中,我们定义了一个名为 test_login 的函数来执行登录接口的测试。在函数体内,我们首先定义了接口的 URL 和要发送的登录请求的数据(用户名和密码)。然后,我们使用 requests.post 方法发送 POST 请求,并将返回的响应结果保存在 response 变量中。

接下来,我们使用断言语句来验证接口的行为。首先,我们使用断言 response.status_code == 200 来验证 HTTP 状态码是否为 200,如果不是,则会输出相应的错误消息。然后,我们使用断言 "token" in response.json() 来验证返回结果中是否包含 token 字段,如果不存在,则输出相应的错误消息。接着,我们使用断言 token != "" 来验证返回结果中的 token 是否为非空字符串,如果为空,则输出相应的错误消息。

最后,我们输出测试通过的消息,表示登录接口测试成功。

请注意,这只是一个简单的示例,实际的接口测试可能需要更多的断言条件和错误处理。你可以根据具体需求进行修改和扩展。另外,确保已安装 requests 库,可通过 pip install requests 命令进行安装。

三、在 Python 中,可以使用 response.json() 方法来将响应的 JSON 数据解析为字典对象,然后通过键来访问需要的字段。在登录接口的响应信息中提取 token 的示例代码如下:

import requests

def extract_token():
    url = "http://api.example.com/login"
    payload = {
        "username": "testuser",
        "password": "password123"
    }
    response = requests.post(url, data=payload)

    # 验证HTTP状态码是否为200
    if response.status_code == 200:
        # 提取响应结果中的token字段
        token = response.json()["token"]
        print(f"提取到的token:{token}")
    else:
        print(f"接口请求失败,状态码:{response.status_code}")

extract_token()

在上述示例中,我们发送了一个登录接口的 POST 请求,并将返回的响应结果保存在 response 变量中。然后,我们使用 response.json() 将 JSON 数据解析为字典对象,并通过键 "token" 提取出对应的值,并将其保存在 token 变量中。

最后,我们通过 print 函数输出提取到的 token 值。

请注意,这只是一个简单的示例,实际应用中可能需要根据实际情况进行错误处理、异常处理和数据校验等操作。

四、在使用 requests.post 方法发送 POST 请求时,可以通过传递参数来设置请求的参数,具体有以下几种方式:

1、在 URL 中添加参数

可以在 URL 后面添加参数,使用 ? 和 & 分隔符将参数和值连接起来,例如:

import requests

url = 'http://example.com/user'
params = {
    'name': 'Alice',
    'age': 25
}
response = requests.post(url + '?name=Alice&age=25')

2、在请求体中添加参数

可以通过 data 或 json 参数将参数添加到请求体中,例如:

import requests

url = 'http://example.com/user'
data = {
    'name': 'Alice',
    'age': 25
}
response = requests.post(url, data=data)
import requests

url = 'http://example.com/user'
json_data = {
    'name': 'Alice',
    'age': 25
}
response = requests.post(url, json=json_data)

其中,data 参数适用于表单数据,而 json 参数适用于 JSON 数据。

3、在请求头中添加参数

可以通过 headers 参数将参数添加到请求头中,例如:

import requests

url = 'http://example.com/user'
headers = {
    'Content-Type': 'application/json'
}
json_data = {
    'name': 'Alice',
    'age': 25
}
response = requests.post(url, headers=headers, json=json_data)

以上就是设置参数的三种方式,根据具体情况选择适合的方式即可。

五、要在使用 requests.post() 方法发送 POST 请求时添加 token,可以通过设置请求头的方式来传递 token。具体实现方法如下:

import requests

def send_post_request_with_token():
    url = "http://example.com/api"
    payload = {
        "key1": "value1",
        "key2": "value2"
    }
    headers = {
        "Authorization": "Bearer your_token_here"
    }
    response = requests.post(url, json=payload, headers=headers)

    # 处理响应
    if response.status_code == 200:
        print("请求成功")
        # 其他操作
    else:
        print("请求失败")

send_post_request_with_token()

在上述示例中,我们定义了一个 send_post_request_with_token() 函数来发送带有 token 的 POST 请求。我们通过 headers 参数设置了请求头,其中 "Authorization": "Bearer your_token_here" 表示将 token 放在请求头中的 Authorization 字段中。你需要将 "your_token_here" 替换为实际的 token 值。

此外,我们使用了 json 参数来传递请求体数据,这将自动将 payload 对象转换为 JSON 格式。

请根据实际情况修改 URL、payload 和 headers 中的内容,以及根据自己的需求进行相应的处理。

六、要在一个方法中提取到 token 信息,并在另一个方法中应用该 token,可以将提取到的 token 作为函数的返回值,然后将该返回值传递给另一个方法进行使用。下面是一个示例代码:

import requests

def login():
    url = "http://api.example.com/login"
    payload = {
        "username": "testuser",
        "password": "password123"
    }
    response = requests.post(url, data=payload)

    # 验证HTTP状态码是否为200
    if response.status_code == 200:
        # 提取响应结果中的token字段
        token = response.json()["token"]
        return token
    else:
        print(f"接口请求失败,状态码:{response.status_code}")
        return None

def use_token(token):
    url = "http://api.example.com/protected"
    headers = {
        "Authorization": f"Bearer {token}"
    }
    response = requests.get(url, headers=headers)

    # 处理响应
    if response.status_code == 200:
        print("请求成功")
        # 其他操作
    else:
        print("请求失败")

# 在第一个方法中登录并提取token
token = login()

# 在第二个方法中应用token
use_token(token)

在上述示例中,我们定义了两个方法:login() 用于登录并提取 token,use_token() 用于使用提取到的 token 发送受保护的请求。

首先,在 login() 方法中,我们发送登录请求,并提取响应结果中的 token 字段。如果登录成功,我们将 token 作为函数的返回值返回。

然后,在主程序的部分,我们调用 login() 方法获取到 token,并将其保存在 token 变量中。

最后,我们调用 use_token() 方法,并将提取到的 token 作为参数传递给该方法。在 use_token() 方法中,我们将 token 添加到请求头中,并发送受保护的请求。

这样,我们就可以在不同的方法中提取和应用 token 了。请根据实际情况修改 URL、payload、headers 等内容,并根据需要进行错误处理和异常处理。

 七、异常处理

import requests

def test_login():
    url = "http://..."
    payload = {
        "name": "admin",
        "password": "123456"
    }
    try:
        response = requests.post(url, data=payload)
        print(response.status_code)
    except requests.exceptions.RequestException as e:
        print("An error occurred:", e)

test_login()

在上面的代码中,我们使用了 requests.exceptions.RequestException 作为异常类型来捕获可能的请求异常。如果发生异常,它会在控制台输出错误消息。这样你就可以看到发生了什么错误,并进行相应的处理。 请注意,这只是一个示例,你可以根据你的具体需求来扩展异常处理的逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值