为Flask内部和外部认证测试提供的pytest固定装置
项目描述
FlaskTester - 为Flask内部和外部认证测试提供的pytest固定装置
此软件包允许在Flask应用程序上运行认证测试,无论是使用内部Flask测试(即test_client
)还是外部测试(使用requests
执行实际HTTP请求),包括密码和令牌认证以及用户级cookie。
只需要一套测试,通过设置环境变量即可从内部切换到外部。
用法
使用pip install FlaskTester
或等效方式安装软件包。
以下测试创建了一个包含2个用户的本地固定装置,这些用户通过密码进行识别,并使用应用程序提供的/login
路由检索两个用户的令牌。然后它继续对/admin
路由运行认证请求。
import pytest
from FlaskTester import ft_authenticator, ft_client
import secret
@pytest.fixture
def app(ft_client):
# add test passwords for Calvin and Hobbes (must be consistent with app!)
ft_client.setPass("calvin", secret.PASSES["calvin"])
ft_client.setPass("hobbes", secret.PASSES["hobbes"])
# get user tokens, assume json result {"token": "<token-value>"}
res = ft_client.get("/login", login="calvin", auth="basic", status=200)
assert res.is_json
ft_client.setToken("calvin", res.json["token"])
res = ft_client.post("/login", login="hobbes", auth="param", status=201)
assert res.is_json
ft_client.setToken("hobbes", res.json["token"])
# also set a cookie
ft_client.setCookie("hobbes", "lang", "fr")
ft_client.setCookie("calvin", "lang", "en")
# return working client
yield ft_client
def test_app_admin(app):
app.get("/admin", login=None, status=401)
for auth in ["bearer", "basic", "param"]:
res = app.get("/admin", login="calvin", auth=auth, status=200)
assert res.json["user"] == "calvin" and res.json["isadmin"]
res = app.get("/admin", login="hobbes", auth=auth, status=403)
assert 'not in group "ADMIN"' in res.text
这可以针对(本地)服务器运行
export TEST_SEED="some-random-data" # shared test seed
flask --app app:app run & # start flask app
pid=$! # keep pid
export FLASK_TESTER_APP="http://localhost:5000" # set app local url
pytest test.py # run external tests
kill $pid # stop app with pid
或使用Flask内部测试基础设施本地运行
export FLASK_TESTER_APP="app:app" # set app package
pytest test.py # run internal tests
上述测试使用tests/app.py
运行,该文件是Flask REST应用程序后端,基于密码和令牌认证,并基于FlaskSimpleAuth。该代码使用23行Python代码实现密码(基本和参数)和令牌认证、管理员组授权以及令牌生成(2)、身份验证测试(2)和令人难以置信的基于开放cookie的翻译服务。
请参阅文档。
许可
此代码属于公有领域。
所有软件都有bug,这是软件,所以……小心,你可能因此失去头发或朋友。如果你喜欢它,请随意给作者寄张明信片。
版本
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪一个,请了解更多关于安装软件包的信息。
源代码分发
flasktester-4.3.tar.gz (14.9 kB 查看哈希值)
构建分发
FlaskTester-4.3-py3-none-any.whl (9.4 kB 查看哈希值)