使用 pytest 框架做接口自动化时,因 token 过期导致用例失败

random 测试交流9266字数 107阅读0分21秒阅读模式

如题,使用 pytest 框架做接口自动化时,因 token 过期导致用例失败该怎么做?我现在是把登录接口写在 conftest 文件,然后 fixture 作用域为 session,但是由于用例比较多,执行时间很长,导致有些用例还没执行完 token 就过期了。应该设定每隔段时间重新获取 token 吗?但是不知道代码该怎么写 文章源自玩技e族-https://www.playezu.com/300040.html

 
评论  9  访客  9
    • 木小白
      木小白 9

      我在 beforeclass 都获取一次

      • 行吧,就这样吧
        行吧,就这样吧 9

        同意 5 楼的说法,你平常使用你们系统的时候也是用着用着就要登陆吗? 还是你传入 token 的方式与实际不一致呢?

        • testjson
          testjson 9

          你们这 token 时效是有多短?用例没跑完就过期了
          有两种办法
          1、在脚本里随时获取最新的 token
          2、 找开发,让给一个超长时间的 token

          • HLi
            HLi 9

            1、找开发延长,或者整个不过期的 token
            2、问开发过期时间,然后写个过期后重新获取 token 的方法

            • Jerry li
              Jerry li 9

              token 的过期时间,体现在业务层面就是:

              如果我已经离开,或者结束操作了,会不会在一个安全的时间内,把我的 token 给失效了,以防止有人盗用?
              如果我一直在操作,或者没有退出并且距离上次操作的时间不那么久,会不会 token 失效导致我需要重新登录,打断我的操作体验?

              所以这两个场景是相关联的,既要保证有效时间内继续保活,也要保证超过有效时间之后能正确失效。

              按楼主的例子,如果你的用例一直在执行,等同于客户一直在操作,那么到了后面突然失效了,就是没有保障到第二点,就有可能是 bug 了。

              • 微凉
                微凉 9

                把登录写成类方法,每执行一个测试类 就执行一次登录接口,获取 token

                • 孤千羽
                  孤千羽 9

                  最简单的方法:让开发将 token 有效时间延长。

                  • rockyrock
                    rockyrock 9

                    这是一个常见的问题,不知大家有什么比较好的解决方法

                    • Jerry li
                      Jerry li 9

                      你们 token 不会自动延长有效时间吗?也就是说如果有请求把这个 token 带过来,就会把它的有效时间重置为默认时间(一般都是 30 分钟)? 这样如果你的用例都是一直正常在跑,除非有些用例等待时间超过了三十分钟(这样的话要考虑换成异步处理),否则不应该出现超时的问题。
                      用例过多,可以考虑 pytest 的插件改造成并发运行,提高执行效率。

                    匿名

                    发表评论

                    匿名网友
                    确定

                    拖动滑块以完成验证