文章目录
一、httprunner如何实现数据驱动
3.X开始,使用parameters定义数据源。应用于测试用例层。
第一种:直接在脚本里面指定参数列表,最简单。适合于参数比较少的情况。
config:
name: get token
parameters:
appid-secret-grant_type-assert_str:
- ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"]
- ["","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"]
- ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"]
teststeps:
- name: get token
api: api/wx_get_token.yml
第二种:使用CSV文件,适合于参数比较大的情况。
yaml 文件:
config:
name: get token
parameters:
appid-secret-grant_type-assert_str: ${P(data/get_token_data.csv)}
teststeps:
- name: get token
api: api/wx_get_token.yml
get_token_data.csv:
appid,secret,grant_type,assert_str
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"
"","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"
注意:
- 1.csv文件中第一行必须放参数名称,并且参数名称必须和测试用例里面的名称一致。
- 2.csv文件中第二行放数据,每一组数据占一行。
- 3.parameters指定的参数顺序可以不一致,个数也可以不一致。
第三种方式:使用函数生成数据,适用于数据变化大的情况
debugtalk.py:
# 获取数据
def get_token_data():
return [{"appid": "wx74a8627810cfa308", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str":"access_token"},
{"appid": "", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errcode"},
{"appid": "wx74a8627810cfa308", "grant_type": "", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errmsg"}]
yaml 文件:
config:
name: get token
parameters:
appid-secret-grant_type-assert_str: ${get_token_data()}
teststeps:
- name: get token
api: api/wx_get_token.yml
二、httprunner文件上传
前提条件: 需要安装如下两个包
pip install requests_toolbelt filetype
pip install "httprunner[upload]"
注意:上传文件需要加上upload
yaml 文件:
config:
name: testcase description
variables:
access_token: $access_token
file_path: F:\Pycharm\TestAPI\httpframe\data\htr.png
base_url: ${ENV(test_url)}
teststeps:
- name: /cgi-bin/media/uploadimg
request:
upload:
media: $file_path
headers:
Content-Type: multipart/form-data; boundary=--------------------------820438713549970031981494
Postman-Token: fc7a57ba-802c-4c99-9226-15db86f9bd99
User-Agent: PostmanRuntime/7.44.0
method: POST
params:
access_token: $access_token
url: /cgi-bin/media/uploadimg
validate:
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- text/plain
- ne:
- body.url
- ""
三、如何生成allure报告
- 第一步
- 1.官网下载allure文件
- 2.下载之后解压到非中文的目录
- 3.把bin路径配置到系统变量path中:
E:\allure-2.13.7\bin
(注意分号不要是中文的)
- 第二步:
- 安装allure报告:
pip install allure-pytest
- 验证:
allure --version
- 注意:可能需要重启 pycharm。
- 安装allure报告:
- 第三步:
- 1.在reports目录下生成temps目录,并且在temps目录下生产临时的json格式的临时报告
os.system("hrun testsuites/test_suites.yml ‐‐alluredir=reports/temps ‐‐clean‐alluredir")
加上–clean-alluredir表示:每执行一次把原来的清除。 - 2.根据临时json报告生成allure报告
os.system("allure generate reports/temps ‐o reports/allures ‐‐clean")
加上–clean表示:每执行一次把原来的清除。
- 1.在reports目录下生成temps目录,并且在temps目录下生产临时的json格式的临时报告
四、接口自动化框架文件对应关系
一个接口对应一个yaml文件,一个yaml文件对应一个csv文件。
- 优点:相对来说比较成熟,唯一的,不需要写脚本。
- 缺点:规则太难了,小心翼翼,报错机制不完善。有些功能不齐全。