02-Httprunner接口自动化第二篇:录制&编写&生成测试用例

httprunner框架有多种编写测试用例的形式,一般常用第二种和第三种;无论选择哪一种,httprunner都会生成一个.py文件。所以可按照个人习惯选择。


image.png

一、录制测试用例

  1. charles抓包


    image.png
  2. 导出.har文件


    image.png
  3. 生成yml格式用例
    命令:har2case har_case/huo_test.har -2y

  4. 生成.py格式用例
    命令:har2case har_case/huo_test.har

  5. 根据生成的用例,进一步进行优化

二、编写测试用例-yml格式

config:
    name: xxx
    variables:              # config variables
 varA: "configA"
 varB: "configB"
 varC: "configC"
 parameters:             # parameter variables
 varA: ["paramA1"]
        varB: ["paramB1"]

teststeps:
-
    name: step 1
    variables:              # step variables
 varA: "step1A"
 request:
        url: /$varA/$varB/$varC # varA="step1A", varB="paramB1", varC="configC"
 method: GET
    extract:                # extracted variables
 varA: body.data.A   # suppose varA="extractVarA"
 varB: body.data.B   # suppose varB="extractVarB"
-
    name: step 2
    varialbes:
        varA: "step2A"
 request:
        url: /$varA/$varB/$varC # varA="step2A", varB="extractVarB", varC="configC"
 method: GET

三、编写测试用例-.py格式

  1. 每个HttpRunner测试用例是HttpRunner的子类,并且必须包含config和teststeps两个属性。

  2. config配置
    2.1 name(必须的): testcase的一部分,会显示在测试报告和运行日志中。
    2.2 base_url(可选择的): 功能路径,url的一部分
    2.3 variables(可选择的):testcase通用变量。每个step中可以引用没有在step中设置的变量。换句话说,step中设置的变量的级别比在config中设置的变量级别更高。
    2.4. verify(可选择的):指定是否验证服务器的TLS证书。如果想要记录testcase中的http数据特别有用。如果不设置或者设置为true则会产生SSLError错误。
    2.5. export(可选择的):提取testcase的session变量。测试用例是为黑盒,config中的的variables视为输入,export为输出。特别是,当该testcase中的某个输出作为下一个testcase中的输入的时候特别有用。

  3. teststeps列表

    3.1. 每一个testcase中包括一个或者多个排序的steps列表(List[Step])。每一个step相当于一个api的request或者另一个testcase的引用
    3.2. .with_variables: teststep的变量。 每个步骤中的变量都是相互独立的,因此如果想相互共享variable的话,需要把variable配置在config中。另外teststep中的变量会覆盖config中相同名称的变量。
    .method(url): 指定http的方法和SUt的url,它对应于requests.request的方法和url参数。如果配置中设置了base_url,则此处之能设置相对路径。
    .with_params 指定request url的参数,这个相当于requests.request中的params参数的数据。
    .with_headers 指定request的http headers。相当于requests.request的headers参数部分。
    .with_cookies 指定request的http cookies。相当于requests.request的cookies参数部分。
    .with_data 指定request的http body。相当于requests.request的data参数部分。
    .with_json 指定request的http json。相当于requests.request的json参数部分。
    .extract 使用jmespath提取json 应答数据: .with_jmespath(jmes_path:Text, var_name:Text)-->jmes_path: jmespath表达式,可以参考https://jmespath.org/tutorial.html做详细了解;var_name: 存储提取值的变量名,该变量可以被后续的steps中直接使用。
    .validate 使用jmespath提取json应答数据,并使用.assert_xxx(jmes_path:Text, expected_value:Any)验证期望值。其中jmes_path表示jmespath表达式; expected_value为预期值,变量或者函数表示。如下图:

    image.png

四:参考文档

  1. https://zhuanlan.zhihu.com/p/218287637

  2. 官方文档:https://docs.httprunner.org/user/concepts/

你可能感兴趣的:(02-Httprunner接口自动化第二篇:录制&编写&生成测试用例)