zoukankan      html  css  js  c++  java
  • httprunner 3.x学习9

    前言

    一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境:

    • 本地开发环境
    • 测试环境
    • 生产环境

    在不同环境中,我们可能会使用不同的数据库或邮件发送等配置,这时候则需要通过 .env 文件来针对不同的运行环境作不同的设置。

    环境变量

    在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括:

    • 切换测试环境
    • 切换测试配置
    • 存储敏感数据(从信息安全的角度出发)

    Windows 系统中使用 set 命令设置环境变量和值,接下来设置以下变量

    • base_url = http://127.0.0.1:8000 设置base_url值,可以一键切换运行的环境
    • username = test 设置登陆账号和密码,切换账号测试
    • password = 123456 设置登陆账号和密码,切换账号测试

    打开cmd,使用 set key=value 格式设置环境变量(linux使用 export 命令)

    C:Usersdell>set base_url=http://127.0.0.1:8000
    
    C:Usersdell>set username=test
    
    C:Usersdell>set password=123456
    

    查看环境变量值使用 set keyname 查看对应的值

    C:Usersdell>set base_url
    base_url=http://127.0.0.1:8000
    
    C:Usersdell>set username
    username=test
    
    C:Usersdell>set password
    password=123456
    

    在windows系统里面,命令行引用变量用 %var%

    C:Usersdell>echo 账号:%username%
    账号:test
    

    linux 系统中使用 export 命令设置环境变量和值, 引用变量$keyname

    [root@VM_0_2_centos ~]# export base_url=http://127.0.0.1:8000
    [root@VM_0_2_centos ~]# export username=test
    [root@VM_0_2_centos ~]# echo $base_url
    http://127.0.0.1:8000
    [root@VM_0_2_centos ~]# echo $username
    test
    

    在cmd设置的环境变量只是临时的环境变量,不会保存到电脑本地,关闭窗口后自动清除。

    .env 文件设置环境变量

    winodws无法直接创建 .env 的文件,会提示文件名不能为空,这里使用 pycharm 新建用过 .env 文件
    (或者你新建用过 1.env 的文件,在cmd窗口重命名 rename 1.env .env

    # .env
    base_url=http://127.0.0.1:8000
    username=test
    password=123456
    

    在 HttpRunner 3.x版本中内置了函数 ENV 函数读取环境变量的值

    yaml 脚本案例

    引用环境变量使用ENV函数 ${ENV(keyname)

    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    config:
        name: login case
        variables:
            user: ${ENV(username)}
            psw: ${ENV(password)}
        base_url: ${ENV(base_url)}
    
    teststeps:
    -
        name: step login
        request:
            url: /api/v1/login
            method: POST
            json:
                username: $user
                password: $psw
        extract:
            token: content.token
        validate:
            - eq: [status_code, 200]
            - eq: [content.code, 0]
            - eq: [content.msg, login success!]
            - len_eq: [content.token, 40]
    

    pytest 脚本

    # NOTE: Generated By HttpRunner v3.1.4
    # FROM: testcaseslogin_env.yml
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
    
    
    class TestCaseLoginEnv(HttpRunner):
    
        config = (
            Config("login case")
            .variables(**{"user": "${ENV(username)}", "psw": "${ENV(password)}"})
            .base_url("${ENV(base_url)}")
        )
    
        teststeps = [
            Step(
                RunRequest("step login")
                .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__":
        TestCaseLoginEnv().test_start()
    

    .env 文件必须放到项目根目录(debugtalk.py同一层级)
    httpruner2.x 版本可以使用 --dot-env-path 参数指定.env的路径,但在 httprunner3.x 版本已经去掉了这个参数

  • 相关阅读:
    关于在MyEclipse中页面中文乱码的问题
    如何用Navicat for MySQL 将mysql中的数据库导出,导入。
    淘宝链接池的配置
    c3p0配置
    人生规划
    spring问题: Unable to validate using XSD: Your JAXP provider
    List数组和Set集合
    Tomcat6内存不足问题及解决方法
    清华校长送给毕业生的五句话
    个人图文理解类的封装
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14903606.html
Copyright © 2011-2022 走看看