什么是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:
for item in items:
item.name = item.name.encode('utf-8').decode('unicode-escape')
item._nodeid = item.nodeid.encode('utf-8').decode('unicode-escape')
再次运行:
给测试用例自动加mark标签
conftest.py
def pytest_collection_modifyitems(
session: "Session", config: "Config", items: List["Item"]
) -> None:
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:
item.add_maker(pytest.mark.hook)
下图为不包含hook的用例 pytest test_hook.py 添加一个名称包含hook的用例: 再使用 pytest -m hook test_hook.py 运行带hook的用例
|