如题,使用 pytest 框架做接口自动化时,因 token 过期导致用例失败该怎么做?我现在是把登录接口写在 conftest 文件,然后 fixture 作用域为 session,但是由于用例比较多,执行时间很长,导致有些用例还没执行完 token 就过期了。应该设定每隔段时间重新获取 token 吗?但是不知道代码该怎么写
如题,使用 pytest 框架做接口自动化时,因 token 过期导致用例失败该怎么做?我现在是把登录接口写在 conftest 文件,然后 fixture 作用域为 session,但是由于用例比较多,执行时间很长,导致有些用例还没执行完 token 就过期了。应该设定每隔段时间重新获取 token 吗?但是不知道代码该怎么写
9F
我在 beforeclass 都获取一次
8F
同意 5 楼的说法,你平常使用你们系统的时候也是用着用着就要登陆吗? 还是你传入 token 的方式与实际不一致呢?
7F
你们这 token 时效是有多短?用例没跑完就过期了
有两种办法
1、在脚本里随时获取最新的 token
2、 找开发,让给一个超长时间的 token
6F
1、找开发延长,或者整个不过期的 token
2、问开发过期时间,然后写个过期后重新获取 token 的方法
5F
token 的过期时间,体现在业务层面就是:
如果我已经离开,或者结束操作了,会不会在一个安全的时间内,把我的 token 给失效了,以防止有人盗用?
如果我一直在操作,或者没有退出并且距离上次操作的时间不那么久,会不会 token 失效导致我需要重新登录,打断我的操作体验?
所以这两个场景是相关联的,既要保证有效时间内继续保活,也要保证超过有效时间之后能正确失效。
按楼主的例子,如果你的用例一直在执行,等同于客户一直在操作,那么到了后面突然失效了,就是没有保障到第二点,就有可能是 bug 了。
4F
把登录写成类方法,每执行一个测试类 就执行一次登录接口,获取 token
3F
最简单的方法:让开发将 token 有效时间延长。
2F
这是一个常见的问题,不知大家有什么比较好的解决方法
1F
你们 token 不会自动延长有效时间吗?也就是说如果有请求把这个 token 带过来,就会把它的有效时间重置为默认时间(一般都是 30 分钟)? 这样如果你的用例都是一直正常在跑,除非有些用例等待时间超过了三十分钟(这样的话要考虑换成异步处理),否则不应该出现超时的问题。
用例过多,可以考虑 pytest 的插件改造成并发运行,提高执行效率。