Httprunner使用

发布时间 2023-05-08 21:18:43作者: 蜗牛果果

官方中文文档V3

https://www.ontheway.cool/HttpRunner3DocsForCN/concepts/step_case_suite/

官方文档主要以yaml为例子,所以也用的yaml

testcase结构分析:

 config:节点中设置当前文件全局的配置

  name:用例名

  base_url:全局base url,step中的url使用base_url开头

  parameters:全局参数,数据驱动使用

   teststeps:下为list,可以有多个step

  name是step name

  variables: step中用的变量

  request:

    url: request url

    method: GET,POST,PUT,DELETE等,必须是大写

    params: request url中的参数

    upload:上传文件,文件的相对路径以debugtalk.py文件位置为准

  extract:是response.body中的内容,可以用body.xxx或者content.xxx来搜索

      取cookie方法:

# 方法一:
 extract: 
      cookie: cookies
#方法二:
 eardown_hooks:
      - ${get_cookie($response)}
#debugtalk.py中:
    def get_cookie(response):
        cookies = response.cookies
        os.environ['envname']=cookies["cookiekey"]

  validate:是断言response中的内容,都怎么断言?

      可以使用:表达式:["jmespath表达式",expected_value,message] 

      例如 :

        eq: ["status_code", 200] 
    
        len_eq: ["body",1]

config:
    name: "initialize"
    variables: #设置当前测试文件中的全局变量
      username: user@test.com
      password: 1234567
    base_url: ${ENV(api_url)}  #引用环境变量
    parameters:  #全局参数,用于实现自动化数据驱动,怎么用?
        pa1: ["a"]
        pa2: ["b"]
    export: 
      - accessToken #整个测试用例的输出值,可以在作为其他case的测试步骤是被使用。
    verify: False #可以不写,V3默认为Flase
teststeps:
  - name: Get token
    variables:
      foo1: bar1
    request:
      method: GET
      url: /account/GetAccessToken
      headers:
        Content-Type: "application/json"
      params: 
        username: Melanie.Zhao@avepoint.com
        password: 1qaz2wsxE
        clientId: eos
    extract:  #当前case的传出值,下边步骤step可以使用
      accessToken : body.accessToken #利用jmespath 提取Json response body的内容
    validate:
      - eq: ["status_code", 200] #用jmespath 提取Json response的内容,并进行断言校验。
Testsute结构:
  config是公共的
  每个testcase下是各自的
关于base_url:
  如果config中有设置,则所有case都用这个url,即使case单独配置也不行
  如果想每个case用单独的base_url,则去掉config中的base_url,单独设置case中的base_url
  base_url不管在config全局还是case中单独设置,至少要有一个。
config:
    name: suitename
    variables:
      username: xxx
      password: xxx
    base_url: ${ENV(api_url)}
    parameters: 
        pa1: ["a"]
        pa2: ["b"]
    export: 
      - accessToken
testcases:
-   name: Get Token
    base_url: ${ENV(api_url)}
    testcase: testcases\case1.yml
    variables: 
      a: 123
-   name: Login
    base_url: ${ENV(base_url)}
    testcase: testcases\case2.yml
    variables: 
      a: bcd

 变量引用: 

  使用${ENV(key)}引用环境变量中的值

  使用$variable直接引用用例中定义的变量