weixin_39557813
weixin_39557813
2020-12-01 12:00

关于用例中validate执行顺序及testcase复用的疑问

问题描述

testcase在复用的时候无法同时进行自动化测试运行? 以简单的登录为例,一般的系统绝大部分操作都会在登录后进行。我们在登录后获取token,我们可以通过查询数据库或者直接判断code等方法来给出一个expect值,来判断这个用例是否通过。 我的问题是,在登录这个case中username或者password如果不匹配,就不会extract到token,这个时候用例执行就会fail,就不会走到validate这一步,而直接fail了。所以在进行登录功能测试的时候就不能对token进行extract。但是假如还有一个用例是在登录的基础上进行的,比如发帖,规定必须登录后获取到token后才可以发帖。根据复用规则,我们只需要将登录这个case引入到发帖这个case中作为一个step就可以了,但是此时我们的登录case中因为以上原因,没有对token进行extract,就无法进行下一步操作了... 如果我想对这个两个功能一次性的验证,即两个case一起执行,涉及到登录的复用问题,此时登录该如何设计呢?还是说大家都忽略了这种情况仍然将token的extract放到登录中,而只对发帖进行自动化测试? 莫非在发帖case中不引入登录case,而是再写一个登录吗?如果这样的话岂不是说复用功能没用了? 我还是小菜,望各位大佬指点下,这个问题困扰我很久了。

版本信息

请提供如下版本信息:

  • 操作系统类型: [e.g. macos, Linux, Windows]
  • Python 版本 [e.g. 3.6]
  • HttpRunner 版本 [e.g. 2.1.2]

项目文件内容(非必须)

如果可能,提供项目测试用例文件原始内容可加快 bug 定位和修复速度。 登录测试用例: - config: name: signin base_url: ${ENV(extranet_develop)} - test: name: $account signin api: api/signin.yml variables: account: $account password: $password extract: - code: content.code validate: - validate_signin: [content.code, $request]

该提问来源于开源项目:httprunner/httprunner

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • weixin_39557813 weixin_39557813 5月前

    用户名和密码不匹配为什么前面已经fail?按照顺序不应该是先请求接口,再把接口内容json数据进行extract,然后在validate吗?不匹配此时接口内容只是不包含token而已呀,还没有后面,为什么会fail呢?

    发自我的 iPhone

    在 2019年8月25日,10:33,chenhengjie 写道:

    在登录这个case中username或者password如果不匹配,就不会extract到token,这个时候用例执行就会fail,就不会走到validate这一步,而直接fail了。所以在进行登录功能测试的时候就不能对token进行extract

    不是太理解为何不能进行 extract ?若用户名密码错误,由于前面已经 fail ,不会跑到 extract ,所以不会在 extract 中出错。若用户名密码正确,那么 extract 也不会有问题。

    — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

    点赞 评论 复制链接分享
  • weixin_39631445 weixin_39631445 5月前

    你说的对,我之前理解有误,所以我把我的评论删掉了。 这个需要 来确认下,怎么解决比较合理了。

    点赞 评论 复制链接分享
  • weixin_39557813 weixin_39557813 5月前

    噢噢,感谢。这几天因为比较忙,没什么时间看网页,所以没注意~

    发自我的 iPhone

    在 2019年8月27日,00:25,chenhengjie 写道:

    你说的对,我之前理解有误,所以我把我的评论删掉了。 这个需要 来确认下,怎么解决比较合理了。

    — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

    点赞 评论 复制链接分享
  • weixin_39597868 weixin_39597868 5月前

    其实应该分开设计. 1. 登录的testcase就是验证登录的功能, 没必要去extract token 2. 发帖那个应该引用另外一个setup user的testcase, 那个test case要明确output token

    点赞 评论 复制链接分享
  • weixin_39557813 weixin_39557813 5月前

    其实应该分开设计.

    1. 登录的testcase就是验证登录的功能, 没必要去extract token
    2. 发帖那个应该引用另外一个setup user的testcase, 那个test case要明确output token

    嗯,你说的对。我想错了,其实不必生成n个登录case,两个就足够了。感谢。

    点赞 评论 复制链接分享

相关推荐