编写登陆接口
app.py
from flask import Flask, request, jsonify, Responseapp = Flask(__name__)@app.route('/login', methods=['POST'])
def login():username = request.form.get('username')password = request.form.get('password')# 在这里编写你的登录验证逻辑if username == 'admin' and password == 'password':# 登录成功response = jsonify({'message': '登录成功'})response.status_code = 200else:# 登录失败response = jsonify({'message': '登录失败'})response.status_code = 401return responseif __name__ == '__main__':app.run()
import requests
import pytest# 使用@pytest.mark.parametrize装饰器定义了一组参数化的测试数据
@pytest.mark.parametrize('data, username, password, status_code', [('登陆成功', 'admin', 'password', 200),('登陆失败', 'admin1', 'password1', 401)
])
def test_case01(data, username, password, status_code):# 打印测试用例的信息print('\n[测试用例]', data)# 构造登录请求的URL和数据url = 'http://127.0.0.1:5000/login'data = {"username": username,"password": password}# 发送POST请求res = requests.post(url=url, data=data)# 响应内容展示为中文response_text = res.text.encode('utf-8').decode('unicode_escape')print(response_text)# 断言实际的状态码与预期的状态码是否相等assert 200 == status_codeif __name__ == '__main__':# 使用pytest执行测试用例pytest.main(['-v', 'test_case.py'])
这段代码是一个使用pytest
和requests
库编写的测试脚本,用于测试登录功能。它包含一个名为test_case01
的测试用例,使用@pytest.mark.parametrize
装饰器定义了一组参数化的测试数据。
测试数据包括登录成功和登录失败的情况。每组测试数据都有data
、username
、password
和status_code
四个参数。data
参数用于描述测试用例的信息,username
和password
参数是登录时使用的用户名和密码,status_code
参数是预期的响应状态码。
测试用例函数内部首先打印测试用例的信息,然后构造登录请求的URL和数据。接下来,使用requests.post
方法发送POST请求,并将响应保存在res
变量中。
为了将响应内容以中文展示,使用了以下代码行:
response_text = res.text.encode('utf-8').decode('unicode_escape')
这段代码将响应的文本内容进行了编码和解码操作。首先,使用encode('utf-8')
将文本内容编码为UTF-8格式的字节串,然后使用decode('unicode_escape')
将字节串解码为Unicode字符串。这样做可以确保中文字符正确显示。
最后,使用print(response_text)
将响应内容打印出来。然后使用assert
语句来断言实际的状态码与预期的状态码是否相等。
在脚本的最后部分,通过pytest.main(['-v','test_case.py'])
来执行测试用例。