一、parameters参数
运行次数是笛卡尔积的计算方式,如下将运行2*2=4次
yml方式
config:
name: 登录幕布
variables: {}
parameters:
phone: ['13104978922','13722349423']
password: ['123456','2345']
verify: false
teststeps:
- name: /v3/api/user/phone_login
request:
headers:
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: '69'
content-type: application/json;charset=UTF-8
data-unique-id: 7b70bf17-50f2-470e-ae20-ecbbd0d6190f
jwt-token: ''
origin: https://mubu.com
referer: https://mubu.com/
sec-ch-ua: '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"'
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: '"Windows"'
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
version: 3.0.0-2.0.0.1824
x-request-id: 8a061286-b850-40a2-b680-6a0314367fed
json:
callbackType: 0
password: $password
phone: $phone
method: POST
url: https://api2.mubu.com/v3/api/user/phone_login
validate:
- eq:
- status_code
- 200
- eq:
- body.code
- 0
py文件方式
# NOTE: Generated By HttpRunner v3.1.6
# FROM: testcases\ddt\create_dir.yml
import pytest
from httprunner import Parameters
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
class TestCaseCreateDir(HttpRunner):
@pytest.mark.parametrize(
"param", Parameters({"newfile": ["新增文件夹1", "新增文件夹2", "新增文件夹3"]})
)
def test_start(self, param):
super().test_start(param)
config = Config("HttpRunner实现幕布接口增删改查").verify(False)
teststeps = [
Step(
RunRequest("幕布-新增文件夹")
.post("https://api2.mubu.com/v3/api/list/create_folder")
.with_headers(
**{
"accept": "application/json, text/plain, */*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.9",
"content-length": "33",
"content-type": "application/json;charset=UTF-8",
"data-unique-id": "7b70bf17-50f2-470e-ae20-ecbbd0d6190f",
"jwt-token": "${get_token()}",
"origin": "https://mubu.com",
"referer": "https://mubu.com/",
"sec-ch-ua": '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",
"version": "3.0.0-2.0.0.1824",
"x-request-id": "195dee55-182a-4eb7-a307-714fa3f72dd1",
}
)
.with_json({"folderId": "0", "name": "$newfile"})
.validate()
.assert_equal("status_code", 200)
.assert_equal("body.code", 0)
),
]
if __name__ == "__main__":
TestCaseCreateDir().test_start()
二、debugtalk.py方式
直接使用${函数名()} 调用
# NOTE: Generated By HttpRunner v3.1.6
# FROM: har\create_dir.yml
from typing import Dict
import pytest
from httprunner import HttpRunner, Config, Step, RunRequest, Parameters
#取别名,防止pytest 把导入的以Test开头的用例也执行了
from testcases.login_test import TestCaseLogin as Login
class TestCaseCreateDirDeTalk(HttpRunner):
@pytest.mark.parametrize(
"param", Parameters({"filename": "${get_file_name()}"})
)
def test_start(self, param):
super().test_start(param)
config = Config("HttpRunner实现幕布接口-文件夹add操作")\
.verify(False).export(*['folder_id','param'])
teststeps = [
Step(
RunRequest("幕布-新增文件夹")
.post("https://api2.mubu.com/v3/api/list/create_folder")
.with_headers(
**{
"accept": "application/json, text/plain, */*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.9",
"content-length": "33",
"content-type": "application/json;charset=UTF-8",
"data-unique-id": "7b70bf17-50f2-470e-ae20-ecbbd0d6190f",
"jwt-token": "${get_token()}",
"origin": "https://mubu.com",
"referer": "https://mubu.com/",
"sec-ch-ua": '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",
"version": "3.0.0-2.0.0.1824",
"x-request-id": "195dee55-182a-4eb7-a307-714fa3f72dd1",
}
)
.with_json({"folderId": "0","name": "$filename"})
.extract()
.with_jmespath('body.data.folder.id',"folder_id")
.validate()
.assert_equal("status_code", 200)
.assert_equal("body.code", 0)
),
]
if __name__ == "__main__":
TestCaseCreateDirDeTalk().test_start()
三、CSV方式
1、新建文件 testdata/userpwd.csv
phone,password
13822228765,12312
13822508211,baba139262265
13822508676,baba139262144
2、yml方式
config:
name: 登录幕布
variables: {}
parameters:
phone-password: ${P(testdata/userpwd.csv)}
verify: false
teststeps:
- name: /v3/api/user/phone_login
request:
headers:
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: '69'
content-type: application/json;charset=UTF-8
data-unique-id: 7b70bf17-50f2-470e-ae20-ecbbd0d6190f
jwt-token: ''
origin: https://mubu.com
referer: https://mubu.com/
sec-ch-ua: '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"'
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: '"Windows"'
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
version: 3.0.0-2.0.0.1824
x-request-id: 8a061286-b850-40a2-b680-6a0314367fed
json:
callbackType: 0
password: $password
phone: $phone
method: POST
url: https://api2.mubu.com/v3/api/user/phone_login
validate:
- eq:
- status_code
- 200
- eq:
- body.code
- 0
2、py文件方式
# NOTE: Generated By HttpRunner v3.1.6
# FROM: testcases\ddt\login_ddt_csv.yml
import pytest
from httprunner import Parameters
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
class TestCaseLoginDdtCsv(HttpRunner):
@pytest.mark.parametrize(
"param", Parameters({"phone-password": "${P(testdata/userpwd.csv)}"})
)
def test_start(self, param):
super().test_start(param)
config = Config("登录幕布").verify(False)
teststeps = [
Step(
RunRequest("/v3/api/user/phone_login")
.post("https://api2.mubu.com/v3/api/user/phone_login")
.with_headers(
**{
"accept": "application/json, text/plain, */*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.9",
"content-length": "69",
"content-type": "application/json;charset=UTF-8",
"data-unique-id": "7b70bf17-50f2-470e-ae20-ecbbd0d6190f",
"jwt-token": "",
"origin": "https://mubu.com",
"referer": "https://mubu.com/",
"sec-ch-ua": '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",
"version": "3.0.0-2.0.0.1824",
"x-request-id": "8a061286-b850-40a2-b680-6a0314367fed",
}
)
.with_json({"callbackType": 0, "password": "$password", "phone": "$phone"})
.validate()
.assert_equal("status_code", 200)
.assert_equal("body.code", 0)
),
]
if __name__ == "__main__":
TestCaseLoginDdtCsv().test_start()