一、首先是Httprunner安裝
# 安裝httprunner
pip install httprunner
# 當然也可以指定版本安裝
pip install httprunner==2.3.2
# 檢驗安裝是否成功
hrun -V
二、Httprunner demo介紹
#創建HttpRunner項目
hrun --startproject demo
#指定目錄創建HttpRunner項目
hrun --startproject D:\TestSoftware\Pychram\PychramProject\demo
#api文件:
* 用以保存單個獨立的接口,最好是可以單獨運行的(例如:保存一個公共方法用於case調用,調用格式:api/XXX.json或者是api/XXX.yaml)
# testcase文件:
* 用以保存一個或者多個接口組成的測試用例(也能集合其它case進行順序執行,調用格式:testcase/xxx.json或者是api/XXX.yaml)
# 執行測試用例則在項目控制台下:
hrun testcases/xx.json
# 或
hrun testcases/xx.yaml
# testsuites文件:
* 多個測試用例的集合(用例集執行順序是無序的)
# reports文件:
* 運行用例后生成測試報告的位置
# debugtalk.py文件:
* 在文件中定義方法(可以用其它.py文件寫方法再進行調用,調用格式:${getdemo()))
# .env文件:
* 自定義變量(調用格式:${.ENV(demo)}
因不同公司要求不一致,json和yaml文件可以在JSON to Yaml此網頁上互轉
三、以Json文件處理不同方式的請求
1、Get方式發送請求
# 在testcases下新建 get請求.json
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口"
},
"teststeps": [{
"name":"Get方式",
"request": {
"url": "/Api url地址",
"method": "GET",
"params": {
"username": "abc",
"password": "123",
"phone": "12345678901",
"email": "abc@163.com"
}
}
}
]
}
2、Post方式發送請求
# 在testcases下新建 post請求.json
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口"
},
"teststeps": [
{
"name": "Post方式",
"request": {
"url": "API url地址",
"method": "POST",
"data": {"username": "zhangsan","password": "123"}
},
"validate":[
{"contains": ["content.msg","登錄成功!!"]}
]
}
]
}
3、Json方式發送請求
# 在testcases下新建 json請求.json
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口"
},
"teststeps": [
{
"name": "json報文處理",
"request": {
"url": "/Api url地址",
"method": "POST",
"json": {"username": "lisi","password": "123","phone": "123456","email": "lisi@163.com"}
},
"validate": [
{"eq": ["content.msg","注冊成功"]}
]
}
]
}
4、上傳文件
首先在debugtalk.py文件里添加getFile函數
def getFile():
f = open("文件存放地址\\文件名稱.png",mode="rb")
return f
# 在testcases下新建 Uploadfile.json
# 使用${getFile()} 引用函數
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口"
},
"teststeps": [
{
"name": "上傳文件",
"request": {
"url": "/Api url地址",
"method": "POST",
"data": {"username": "lisi"},
"files":{
"pic": ["woman0.png","${getFile()}","image/png"]
}
}
}
]
}
5、參數化
1、第一種方式 variables設置變量
# 在testcases下新建 parameter.json
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口",
"variables": {"name": "a8","pwd": "123456"}
},
"teststeps": [
{
"name": "參數化",
"request": {
"url": "/Api url地址",
"method": "POST",
"data": {
"username": "$name",
"password": "$pwd"
}
},
"validate": [
{"eq":["content.msg","success"]}
]
}
]
}
2、第二種方式 ${P()}獲取函數
首先在項目目錄下新建package dada,在data下創建user.csv文件
name,pwd,extra
a1,123,success
a2,456,登錄失敗
#¥@,123,登錄失敗
再在testsuites目錄下新建 login_param.json
{
"config": {
"name": "login_參數化處理"
},
"testcases": [
{
"name": "loginTest",
"testcase": "testcases/login.json",
"parameters": [
{
"name-pwd-extra":"${P(data/user.csv)}"
}
]
}
]
}
最后在testcases目錄下,新建login.json
# 直接引用自定義名稱
{
"config": {
"name": "模塊名稱",
"base_url": "主機Ip和端口"
},
"teststeps": [
{
"name": "登錄",
"request": {
"url": "Api url地址",
"method": "POST",
"data": {"username": "$name","password": "$pwd"}
},
"validate":[
{"contains": ["content.msg","$extra"]}
]
}
]
}
6、接口依賴處理
# 在testcases下新建 api依賴.json
{
"config": {
"name": "模塊名稱",
"base_url": "主機IP地址和端口",
"variables": {
"name": "b1","pwd": "123456","email": "b1@163.com"
}
},
"teststeps": [
{
"name": "獲取驗證碼",
"request": {
"url": "/Api url地址",
"method": "GET"
},
"extract": [
{"code": "content.data.code"}
],
"validate": [
{"eq": ["content.msg","success"]}
]
},
{
"name": "注冊",
"request": {
"url": "/Api url地址",
"method": "POST",
"data": {
"username": "$name","password":"$pwd" ,"email":"$email" ,"verifyCode":"$code"
}
},
"validate": [
{"contains": ["content.msg","注冊成功"]}
]
}
]
}
四、批量執行case
在testsuites目錄下新建 批量執行.json
{
"config": {
"name": "接口自動化學習案例"
},
"testcases": [
{
"name": "測試_get請求",
"testcase": "testcases/get請求.json"
},
{
"name": "測試_post請求",
"testcase": "testcases/post請求.json"
},
{
"name": "測試_json請求",
"testcase": "testcases/json請求.json"
},
{
"name": "測試_json請求",
"testcase": "testcases/Uploadfile.json"
},
{
"name": "測試_依賴處理",
"testcase": "testcases/api依賴.json"
}
]
}
控制台 hrun testsuites/批量執行.json
五、輸出測試報告
原生測試報告:
通過控制台 hrun testsuites/xx.json ,測試通過后,在項目目錄下的reports下自動生成報告
測試報告優化:
進入在Lib\site-packages\httprunner\static下 ,添加extent_report_template.html,
在Lib\site-packages\httprunner下,修改report.py中的默認報告路徑,
修改后變更為:
