前提:管理用例用的是excel
1.读取用例时入参带“n”,原因是有空格
解决:在notePad++里n和r都替换下,或者在代码里 case_str=case_str.replace("n", “”).replace("r", “”)
2.
2.一个sheet管理的案例需要两个不同的token,通用获取token是在conftest.py里,但是B案例需要获取上一条A案例的token
解决:就需要把A的token动态setattr存入类中,然后判断如果有token,则请求时就不用通用token,而是用A的token
if hasattr(Data,“access_token”):
resp = hrq.send_requests(case[“method”], case[“url”], case[“request_data”], token=getattr(Data, “access_token”))
注意:可先用通用token,再用案例中的token,但是最后不能再换成通用token跑案例
3.案例中接口入参需要用到config.ymal
解决:写一个工具类,读取yaml和替换excel入参值为yaml里的数据
入参需要:$ 例如: {“phone”:"$phone",“x-fr”:“lcs_web”}
注意:yaml里参数命名要遵循一定的规则
4. @pytest.mark.parametrize与python的装饰器同时使用时报错
def api_call(func):
“”"
接口调用记录
:param func: 装饰的函数
:return:
“”"
def inner(*args, **kwargs):
logger.info(f"开始调用接口:{func.name}")
sleep(1)
res = func(*args, **kwargs)
logger.info(f"结束调用接口:{func.name}")
return res
return inner
这样会报“ TypeError: test_contentManagement() missing 2 required positional arguments: ‘case’ and ‘login’”
解决:在装饰器方法上 @six.wraps(func)或@functools.wraps(func)
值得注意的是@functools.wraps(func),这是python提供的装饰器。它能把原函数的元信息拷贝到装饰器里面的 func 函数中。函数的元信息包括docstring、name、参数列表等等。可以尝试去除@functools.wraps(func),你会发现test.__name__的输出变成了wrapper
链接:https://blog.csdn.net/Warmheart_qian/article/details/118599943
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)