一、当使用 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
变量中。最后,我们通过
请注意,这只是一个简单的示例,实际应用中可能需要根据实际情况进行错误处理、异常处理和数据校验等操作。
四、在使用 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
作为异常类型来捕获可能的请求异常。如果发生异常,它会在控制台输出错误消息。这样你就可以看到发生了什么错误,并进行相应的处理。 请注意,这只是一个示例,你可以根据你的具体需求来扩展异常处理的逻辑。