前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httprunner 3.x学习5 - 测试用例引用前面一个用例(call)

httprunner 3.x学习5 - 测试用例引用前面一个用例(call)

作者头像
上海-悠悠
发布2021-06-24 22:47:39
1.3K0
发布2021-06-24 22:47:39
举报

前言

当我写了一个登录的接口用例后,后面会继续写查询个人信息的接口,但是查询个人信息接口是依赖于先登录(获取token)。 像这种业务上操作有先后关系的情况,可以把登录当一个step来引用。 httprunner3.x 框架弱化了API层的概念,直接写testcase了,如果是单个接口的用例,可以当step去引用。

场景案例

我现在有一个登陆接口A,登陆成功后返回一个token值。有一个获取绑定卡号的接口B,但是接口B必须要先登录后传登录的token才能访问 A接口登录接口文档基本信息

  • 访问地址: http://127.0.0.1:8000/api/v1/login/
  • 请求类型: POST
  • 请求头部: application/json
  • 请求参数: {“username”:”test”, “password”:”123456”}

B接口获取用户信息的接口文档基本信息

  • 访问地址: http://127.0.0.1:8000/api/v1/userinfo/
  • 请求类型: GET
  • 请求头部: Content-Type: application/json
  • 请求头部token参数: Authorization: Token xxxxx login token xxxxx

先不带token去访问接口B,使用命令行工具httpie测试接口

代码语言:javascript
复制
C:\Users\dell>http http://127.0.0.1:8000/api/v1/userinfo/
HTTP/1.1 401 Unauthorized
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 58
Content-Type: application/json
Date: Sat, 21 Sep 2019 14:06:15 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept
WWW-Authenticate: Token
X-Frame-Options: SAMEORIGIN

{
    "detail": "Authentication credentials were not provided."
}

不带token会提示没权限访问:401 Unauthorized

登录接口用例

先写一个登录的接口用例

代码语言:javascript
复制
# NOTE: Generated By HttpRunner v3.1.4
# FROM: test_login.yml
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase

class TestCaseTestLogin(HttpRunner):

    config = Config("logincase").base_url("http://127.0.0.1:8000").export(*["token"])

    teststeps = [
        Step(
            RunRequest("steplogin")
            .with_variables(**{"user": "test", "psw": "123456"})
            .post("/api/v1/login")
            .with_json({"username": "$user", "password": "$psw"})
            .extract()
            .with_jmespath("body.token", "token")
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("body.code", 0)
            .assert_equal("body.msg", "login success!")
            .assert_length_equal("body.token", 40)
        ),
    ]

if __name__ == "__main__":
    TestCaseTestLogin().test_start()

查询个人信息

查询个人信息接口先用到登录的token,前面已经写过登录了,于是可以直接引用登录用例, 当成一个测试步骤

RunTestCase(name)

  • RunTestCase 在一个步骤中用于引用另一个测试用例调用。
  • name RunTestCase 的参数用于指定测试步骤名称,该名称将显示在执行日志和测试报告中。
  • .with_variable() 与 RunRequest 的.with_variables 一样,定义变量
  • .call() 指定引用的测试用例类,需先导入这个类。
  • .export() 指定要从引用的测试用例导出的会话变量名称。 导出的变量可以被后续的测试步骤引用。
代码语言:javascript
复制
# NOTE: Generated By HttpRunner v3.1.4
# FROM: testcases\login_userinfo.yml
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent))

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
from testcases.test_login_test import TestCaseTestLogin as TestLogin

class TestCaseLoginUserinfo(HttpRunner):

    config = Config("logincase").base_url("http://127.0.0.1:8000").export(*["token"])

    teststeps = [
        Step(RunTestCase("step1 login")
             .call(TestLogin)
             .export(*["token"])),
        Step(
            RunRequest("step2 get user info")
            .get("/api/v1/userinfo/")
            .with_headers(
                **{
                    "Content-Type": "application/json",
                    "User-Agent": "python-requests/2.18.4",
                    "Authorization": "Token $token",
                }
            )
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal('headers."Content-Type"', "application/json")
            .assert_equal("body.code", 0)
            .assert_equal("body.data[0].mail", "283340479@qq.com")
        ),
    ]

if __name__ == "__main__":
    TestCaseLoginUserinfo().test_start()

运行结果:

运行结果是执行2个用例,先执行登录,再执行后面的查询。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-17,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 场景案例
  • 登录接口用例
  • 查询个人信息
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com