背景:由于httprunner3只能用pytest的skip方法跳过所执行的用例,不能针对执行用例中动态去跳过用例,所以稍微对httprunner3加个跳过的小功能(查过httprunner2 是有skip关键字的,不知道为啥3就去掉了)
实际使用场景:比如我提取某特殊条件下的uid去查看个人信息,但这种特殊条件的数据不是必须存在的,如果不存在就不执行用例;
从用例执行的流程上讲:
Step关联参数时,如果用extract()提取的参数等于None或者不等于预期结果,则后续使用参数的step肯定是会执行失败
可以利用断言结果的方法去稍微处理就能实现:
validate(),用于请求结果的校验,会返回这个类StepRequestValidation
这类下面就是用于断言的各种方法:
就在这个类下新增skip的方法:value=提取的变量 expected_value=预期失败值,message=skip_跳过的原因
这里断言用not_equal,如果value不等于expected_value,则断言pass,这里只是利用断言进行参数传递
根据用例执行的流程,request请求后会走到响应结果断言
resp_obj.validate(
validators, variables_mapping, self.__project_meta.functions
)
在validate方法处理时新增跳过的判断逻辑:
Step中的使用参考:
这里提取的uid故意写错,提取结果是None,断言是不等于才通过,所以断言失败,并走到skip判断