pytest之hook开发

pytest之hook开发,第1张

pytest之hook开发

文章目录

什么是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')

再次运行:

给测试用例自动加mark标签

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的用例

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存