编写登陆接口
app.py
- from flask import Flask, request, jsonify, Response
-
- app = 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 = 200
- else:
- # 登录失败
- response = jsonify({'message': '登录失败'})
- response.status_code = 401
-
- return response
-
- if __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_code
-
- if __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'])来执行测试用例。