Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

pytest hook中定义marker的筛选条件



做个备忘。主要是现在多个项目的自动化脚本有不同的筛选条件,并且每个pytest的test方法上加太多fixture实在不利于维护,而且平台上不打算再加一个用于传递参数的表单项。所以打算直接在pytest hook中过滤一下,达到简化的目的。

比如简单来说,测试方法可能是这样

@pytest.mark.xxx
@pytest.mark.env("stage", "qa")
def test_add_unsubscribed(precondition, parameters)
......

(这里忽略了一些实际的marker和逻辑)

虽然本地调试加-m参数就行,不过从平台上触发并发测试并不打算支持增加启动的表单项,要不就刹不住了,谁都要加各自的参数,所以就从公共的conftest里改一下pytest_runtest_setup就行了,在实际运行前pytest_runtest_call就可以决定跑还是不跑。

def pytest_runtest_setup(item):
    env_mark = [mark.args for mark in item.iter_markers(name="env")]
    env = item.config.getoption("-E")
    if len(env_mark) > 0 and env not in env_mark:
        pytest.skip(f"{item.originalname} not supported to run in {env} environment.")
    # 这里还有些逻辑,但有些信息不便写上来,自己之后记得要总结一下

 

上一篇:  DRF创建或更新时对字段的选择限制

共有0条评论

添加评论

暂无评论