
什么是hook测试用例ids支持中文编码给测试用例自动加mark标签
什么是hook 测试用例ids支持中文编码
正常使用ids是不支持中文编码,所以需要改写hook函数
那么pytest有哪些hook函数?
pytest的hook函数都放在hookspec.py文件中
其中常用的就是pytest_collection_modifyitems() 方法,将该方法复制到conftest.py中,在加入如下代码即可是使ids支持中文
def pytest_collection_modifyitems(
session: "Session", config: "Config", items: List["Item"]
) -> None:
# items 表示所有的测试用例 类型为:list
# item表示测试用例
# item.name 表示测试用例的名字
# item._nodeid 表示测试用例的路径
for item in items:
# 修改测试用例
item.name = item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
再次运行:
conftest.py
def pytest_collection_modifyitems(
session: "Session", config: "Config", items: List["Item"]
) -> None:
# items 表示所有的测试用例 类型为:list
# item表示测试用例
# item.name 表示测试用例的名字
# item._nodeid 表示测试用例的路径
for item in items:
# 修改测试用例
item.name = item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
if "hook" in item.name:
# 如果测试用例中名字中包含hook的,自动添加一个mark:hook
item.add_maker(pytest.mark.hook)
下图为不包含hook的用例 pytest test_hook.py
添加一个名称包含hook的用例:
再使用 pytest -m hook test_hook.py 运行带hook的用例
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)