开源自动化测试框架httprunner4.x的学习-3

这一篇主要针对htpprunner框架yaml格式的测试用例中各字段进行一个深度的说明

生成的用例格式如下:

config:
    name: `testcase description`
teststeps:
    - name: ""
      request:
        method: POST
        url: https://api/captcha/captchaImage
        headers:
            Accept: application/json, text/plain, */*
            Accept-Encoding: gzip, deflate, br
            Accept-Language: zh-CN,zh;q=0.9
            Connection: keep-alive
            Content-Length: "6"
            Content-Type: application/json;charset=UTF-8
            HRUN-Request-ID: HRUN-05d35840-a189-49f3-9831-5ad2e68e97ea-972746
            RequestId: 600b6c861803445eb48539c8b8edf7b6
            User-Agent: python-requests/2.27.1
        body: None
      validate:
        - check: status_code
          assert: equals
          expect: 200
          msg: assert response status code
        - check: headers."Content-Type"
          assert: equals
          expect: application/json;charset=UTF-8
          msg: assert response header Content-Type
        - check: body.code
          assert: equals
          expect: General.Success
          msg: assert response body code
        - check: body.msg
          assert: equals
          expect: 接口调用成功
          msg: assert response body msg

下面按照源码层级来一个个字段添加相关说明:

class TestCase(BaseModel):
    config: TConfig
    teststeps: List[TStep]

上面源码可以看出,主层级就两个,其一config用于配置的,teststeps测试用例步骤

Config
class TConfig(BaseModel):
    name: Name
    verify: Verify = False
    base_url: BaseUrl = ""
    # Text: prepare variables in debugtalk.py, ${gen_variables()}
    variables: Union[VariablesMapping, Text] = {}
    parameters: Union[VariablesMapping, Text] = {}
    # setup_hooks: Hooks = []
    # teardown_hooks: Hooks = []
    export: Export = []
    path: Text = None
    # configs for other protocols
    thrift: TConfigThrift = None
    db: TConfigDB = TConfigDB()

字段说明:

  name:  配置名字,必填
  verify: 用于指定是否验证 SSL 证书,默认为false
  base_url:请求地址,默认为空
  varibales: 全局变量,这是一个VariablesMapping或Text格式的,默认值为一个空字典
  parameters: 用于参数化,具体使用规则如下:
  		方式1:参数列表
  		user_agent: [ "iOS/10.1", "iOS/10.2" ]
  		方式2:csv文件,使用框架能力中提供的函数${parameterize()}或${P()}实现
    	username-password: ${parameterize($file)}
    	方式3:自定义函数(函数定义在debugtalk.py文件中)
    	user_id: ${get_user_id(10)}
  export: 用在测试过程中将变量的值导出为环境变量,以便在后续的请求或测试中使用。接口关联使用
  path: 用于指定请求的路径或接口地址
  thrift: 用于指定使用 Thrift 协议进行请求和响应的通信(说实话,我没用过)
  db: 用于指定与数据库的连接和操作
  	使用配置如下:
  	db:
      engine: pymysql
      host: localhost
      port: 3306
      database: mydb
      username: root
      password: password123
      sql: SELECT * FROM users WHERE id = 123  
Step
class TStep(BaseModel):
    name: Name
    request: Union[TRequest, None] = None
    testcase: Union[Text, Callable, None] = None
    variables: VariablesMapping = {}
    setup_hooks: Hooks = []
    teardown_hooks: Hooks = []
    # used to extract request's response field
    extract: VariablesMapping = {}
    # used to export session variables from referenced testcase
    export: Export = []
    validators: Validators = Field([], alias="validate")
    validate_script: List[Text] = []
    retry_times: int = 0
    retry_interval: int = 0  # sec
    thrift_request: Union[TThriftRequest, None] = None
    sql_request: Union[TSqlRequest, None] = None

字段说明:

	name:步骤名称
	request: 接口请求参数
	testcase(api):测试用例步骤,一般是用于指定api文件路径,以前版本也可以写成api,当前v4版本两种都支持
	variables: 测试步骤内的局部变量
	setup_hooks: 用户测试用例前置处理
	teardown_hooks: 后置处理
	extract:用于提取返回报文中的参数
	export:用于导出参数,一般都是配合extract一起使用
	validators: 用于接口断言
	validate_script: 断言脚本
	retry_times:重试时间
	retry_interval:重试次数
	thrift_request: 用于指定使用 Thrift 协议的请求参数
	sql_request: 用户数据库请求参数,使用和config.db配置一致
Request
class TRequest(BaseModel):
    """requests.Request model"""

    method: MethodEnum
    url: Url
    params: Dict[Text, Text] = {}
    headers: Headers = {}
    req_json: Union[Dict, List, Text] = Field(None, alias="json")
    data: Union[Text, Dict[Text, Any]] = None
    cookies: Cookies = {}
    timeout: float = 120
    allow_redirects: bool = True
    verify: Verify = False
    upload: Dict = {}  # used for upload files

字段说明:

	method: 请求方式
	url: 请求地址
	params: get请求参数
	headers: 请求头
	req_json(json): json格式的请求参数
	data: data格式的请求参数
	cookies: 请求的cookie
	timeout: 请求超时时间,默认为120s
	allow_redirects: 用于是否可以重定向,默认为false
	verify: 用于指定是否验证 SSL 证书,默认为false,此参数设置时,优先级大于全局变量中的设置
	upload: 用户上传文件的请求参数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值