65 changed files with 2917 additions and 43 deletions
Split View
Diff Options
-
5httprunner/.gitignore
-
2httprunner/api/login/admin_login_password.yml
-
18httprunner/api/login/admin_login_password1.yml
-
10httprunner/api/login/ldap_login_password.yml
-
51httprunner/api/product/app_product_create.yml
-
17httprunner/api/product/app_product_delete.yml
-
15httprunner/api/product/app_product_get.yml
-
51httprunner/api/product/app_product_update.yml
-
27httprunner/api/shop/app_shop_edit.yml
-
15httprunner/api/shop/app_shop_getinfo.yml
-
27httprunner/api/shop/app_shop_perfect.yml
-
27httprunner/api/store_paper/admin_store_create_paper.yml
-
15httprunner/api/store_paper/admin_store_delete_paper.yml
-
14httprunner/api/store_paper/admin_store_get_paperCategoryList.yml
-
27httprunner/api/store_paper/admin_store_update_paper.yml
-
23httprunner/cases/case.yml
-
4httprunner/cases/consignment_process/admin_proxysell_update_reservation.yml
-
11httprunner/cases/login/ldap_login_password.yml
-
1httprunner/debugtalk.py
-
9httprunner/steps/login/ldap_login_password.yml
-
2httprunner/steps/step.yml
-
2zhitongbao/.env
-
0zhitongbao/api/A_list_of_the_query.yml
-
0zhitongbao/api/Employees/ldap_Employee_details.yml
-
0zhitongbao/api/Employees/ldap_Employees_list.yml
-
0zhitongbao/api/Employees/ldap_Employees_update.yml
-
30zhitongbao/api/Member/Member_add.yml
-
13zhitongbao/api/Member/Member_delete.yml
-
11zhitongbao/api/Member/Member_list.yml
-
30zhitongbao/api/Member/Member_update.yml
-
0zhitongbao/api/Menu/ldap_Menu_add.yml
-
0zhitongbao/api/Menu/ldap_Menu_delete.yml
-
0zhitongbao/api/Menu/ldap_Menu_list.yml
-
0zhitongbao/api/Menu/ldap_Menu_update.yml
-
0zhitongbao/api/ldap_department_list.yml
-
0zhitongbao/api/login.yml
-
0zhitongbao/api/login/app_login.yml
-
15zhitongbao/api/login/ldap_QN_login.yml
-
0zhitongbao/api/login/ldap_login.yml
-
0zhitongbao/api/login/ldap_logout.yml
-
4zhitongbao/api/notification.yml
-
0zhitongbao/api/product/product_add.yml
-
0zhitongbao/api/product/product_delete.yml
-
0zhitongbao/api/product/product_list.yml
-
0zhitongbao/api/product/product_list_b.yml
-
0zhitongbao/api/product/product_update.yml
-
0zhitongbao/api/product/product_update_status.yml
-
0zhitongbao/api/role/ldap_roleMenu_list.yml
-
0zhitongbao/api/role/ldap_role_add.yml
-
0zhitongbao/api/role/ldap_role_list.yml
-
0zhitongbao/api/role/ldap_role_mass_update.yml
-
0zhitongbao/api/role/ldap_role_update.yml
-
0zhitongbao/debugtalk.py
-
492zhitongbao/reports/1600134084.html
-
492zhitongbao/reports/1600134497.html
-
516zhitongbao/reports/1600134541.html
-
492zhitongbao/reports/1600134565.html
-
492zhitongbao/reports/1600134650.html
-
0zhitongbao/testcases/demo_testcase.yml
-
0zhitongbao/testcases/ldap_Menu.yml
-
0zhitongbao/testcases/ldap_token.yml
-
0zhitongbao/testcases/product.yml
-
0zhitongbao/testcases/product_add.yml
-
0zhitongbao/testsuites/demo_testsuite.yml
-
0zhitongbao/testsuites/product/product_add.yml
@ -0,0 +1,5 @@ |
|||
reports/* |
|||
__pycache__/* |
|||
*.pyc |
|||
.python-version |
|||
logs/* |
|||
@ -1,18 +0,0 @@ |
|||
name: 销售账号登录 |
|||
variables: |
|||
phone: 13060994305 |
|||
password: 9602BF7A8C5FEAB91385D1BB9EA70DF0 |
|||
rememberMe: null |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /login/admin/adminLogin |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
json: |
|||
phone: $phone |
|||
password: $password |
|||
rememberMe: $rememberMe |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.msg", "comparator": "contains", "expect": "success"} |
|||
@ -0,0 +1,51 @@ |
|||
name: app用户创建商品 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
bidType: 0 |
|||
biddingInterval: 0 |
|||
coverImgUrl: "string" |
|||
description: "string" |
|||
dopantRate: 0 |
|||
firstCategoryId: 0 |
|||
imgList: ["string"] |
|||
initialUnitPrice: 0 |
|||
locCityId: 0 |
|||
locDetails: "string" |
|||
locDistrictId: 0 |
|||
locProvinceId: 0 |
|||
lowestNum: 0 |
|||
secondCategoryId: 0 |
|||
stock: 0 |
|||
unitPrice: 0 |
|||
videoUrl: "string" |
|||
waterRate: 0 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/create/product |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
json: |
|||
bidType: $bidType |
|||
biddingInterval: $biddingInterval |
|||
coverImgUrl: $coverImgUrl |
|||
description: $description |
|||
dopantRate: $dopantRate |
|||
firstCategoryId: $firstCategoryId |
|||
imgList: $imgList |
|||
initialUnitPrice: $initialUnitPrice |
|||
locCityId: $locCityId |
|||
locDetails: $locDetails |
|||
locDistrictId: $locDistrictId |
|||
locProvinceId: $locProvinceId |
|||
lowestNum: $lowestNum |
|||
secondCategoryId: $secondCategoryId |
|||
stock: $stock |
|||
unitPrice: $unitPrice |
|||
videoUrl: $videoUrl |
|||
waterRate: $waterRate |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,17 @@ |
|||
name: app用户删除商品 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
productId: 0 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/delete/product |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
json: |
|||
productId: $productId |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,15 @@ |
|||
name: app用户查询商品 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
productId: 0 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/get/product/$productId |
|||
method: GET |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,51 @@ |
|||
name: app用户修改商品 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
bidType: 0 |
|||
biddingInterval: 0 |
|||
coverImgUrl: "string" |
|||
description: "string" |
|||
dopantRate: 0 |
|||
firstCategoryId: 0 |
|||
imgList: ["string"] |
|||
initialUnitPrice: 0 |
|||
locCityId: 0 |
|||
locDetails: "string" |
|||
locDistrictId: 0 |
|||
locProvinceId: 0 |
|||
lowestNum: 0 |
|||
secondCategoryId: 0 |
|||
stock: 0 |
|||
unitPrice: 0 |
|||
videoUrl: "string" |
|||
waterRate: 0 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/update/product |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
json: |
|||
bidType: $bidType |
|||
biddingInterval: $biddingInterval |
|||
coverImgUrl: $coverImgUrl |
|||
description: $description |
|||
dopantRate: $dopantRate |
|||
firstCategoryId: $firstCategoryId |
|||
imgList: $imgList |
|||
initialUnitPrice: $initialUnitPrice |
|||
locCityId: $locCityId |
|||
locDetails: $locDetails |
|||
locDistrictId: $locDistrictId |
|||
locProvinceId: $locProvinceId |
|||
lowestNum: $lowestNum |
|||
secondCategoryId: $secondCategoryId |
|||
stock: $stock |
|||
unitPrice: $unitPrice |
|||
videoUrl: $videoUrl |
|||
waterRate: $waterRate |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,27 @@ |
|||
name: app用户修改店铺信息 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
contactPhoneNo: 18219557422 |
|||
coverImgUrlList: ["http://medou.oss-cn-shenzhen.aliyuncs.com/bird_user/20090917463455009.jpg"] |
|||
locDetails: 车陂 |
|||
locDistrictId: 440106 |
|||
contacts: 测试 |
|||
name: 测试店铺 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/edit/store-information |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
json: |
|||
contactPhoneNo: $contactPhoneNo |
|||
coverImgUrlList: $coverImgUrlList |
|||
locDetails: $locDetails |
|||
locDistrictId: $locDistrictId |
|||
contacts: $contacts |
|||
name: $name |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,15 @@ |
|||
name: app用户完善店铺 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
storeId: 18219557422 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/get/store-information/$storeId |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,27 @@ |
|||
name: app用户完善店铺 |
|||
variables: |
|||
apptoken: ${ENV(ATOKEN)} |
|||
contactPhoneNo: 18219557422 |
|||
coverImgUrlList: ["http://medou.oss-cn-shenzhen.aliyuncs.com/bird_user/20090917463455009.jpg"] |
|||
locDetails: 车陂 |
|||
locDistrictId: 440106 |
|||
contacts: 测试 |
|||
name: 测试店铺 |
|||
base_url: ${ENV(AURL)} |
|||
request: |
|||
url: /recycle-service/update/store-information |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $apptoken |
|||
json: |
|||
contactPhoneNo: $contactPhoneNo |
|||
coverImgUrlList: $coverImgUrlList |
|||
locDetails: $locDetails |
|||
locDistrictId: $locDistrictId |
|||
contacts: $contacts |
|||
name: $name |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,27 @@ |
|||
name: 后台管理员创建纸品品类 |
|||
variables: |
|||
token: ${ENV(LDAPTOKEN)} |
|||
description: "string" |
|||
enable: 0 |
|||
id: 0 |
|||
level: 0 |
|||
name: "string" |
|||
parentId: 0 |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/store/create/paper |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $token |
|||
json: |
|||
description: $description |
|||
enable: $enable |
|||
id: $id |
|||
level: $level |
|||
name: $name |
|||
parentId: $parentId |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,15 @@ |
|||
name: 后台管理员启用/禁用纸品品类 |
|||
variables: |
|||
token: ${ENV(LDAPTOKEN)} |
|||
paperId: "string" |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/store/update/paper-status/$paperId |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $token |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,14 @@ |
|||
name: 后台管理员查询纸品品类列表 |
|||
variables: |
|||
token: ${ENV(LDAPTOKEN)} |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/store/get/paperCategoryList |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $token |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -0,0 +1,27 @@ |
|||
name: 后台管理员编辑纸品品类 |
|||
variables: |
|||
token: ${ENV(LDAPTOKEN)} |
|||
description: "string" |
|||
enable: 0 |
|||
id: 0 |
|||
level: 0 |
|||
name: "string" |
|||
parentId: 0 |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/store/update/paper |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json;charset=UTF-8" |
|||
X-APP-ID: "1" |
|||
Authorization: $token |
|||
json: |
|||
description: $description |
|||
enable: $enable |
|||
id: $id |
|||
level: $level |
|||
name: $name |
|||
parentId: $parentId |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "contains", "expect": "successful"} |
|||
@ -1,18 +1,15 @@ |
|||
|
|||
config: |
|||
name: "demo testsuite" |
|||
variables: |
|||
device_sn: "XYZ" |
|||
base_url: "http://127.0.0.1:5000" |
|||
name: "testsuites" |
|||
base_url: "http://127.0.0.1:80" |
|||
|
|||
testcases: |
|||
- |
|||
name: call demo_testcase with data 1 |
|||
testcase: path/to/step.yml |
|||
variables: |
|||
device_sn: $device_sn |
|||
name: case one |
|||
testcase: path/to/step1.yml |
|||
parameters: |
|||
|
|||
- |
|||
name: call demo_testcase with data 2 |
|||
testcase: path/to/step.yml |
|||
variables: |
|||
device_sn: $device_sn |
|||
name: case two |
|||
testcase: path/to/step2.yml |
|||
parameters: |
|||
|
|||
@ -0,0 +1,11 @@ |
|||
testcases: |
|||
- |
|||
name: ldap密码登录测试套件 |
|||
testcase: steps/login/ldap_login_password.yml |
|||
parameters: |
|||
- title-username-password-code-message: |
|||
- ["登录成功","liangjinman@qniao.cn","qn123456",200,"登陆成功"] |
|||
- ["账号错误","admin","qn123456",200,"20003"] |
|||
- ["账号为空","","qn123456",200,"20001"] |
|||
- ["密码错误","liangjinman@qniao.cn","12345",200,"20003"] |
|||
- ["密码为空","liangjinman@qniao.cn","",200,"20002"] |
|||
@ -1 +0,0 @@ |
|||
|
|||
@ -0,0 +1,9 @@ |
|||
config: |
|||
name: ldap密码登录 |
|||
teststeps: |
|||
- |
|||
name: $title |
|||
api: api/login/ldap_login_password.yml |
|||
validate: |
|||
- eq: ["status_code", $code] |
|||
- {"check": "content.message", "comparator": "contains", "expect": $message} |
|||
@ -0,0 +1,30 @@ |
|||
name: 新增会员 |
|||
variables: |
|||
bidPrice: 1000 |
|||
days: 30 |
|||
description: 新人首充优惠大大~~ |
|||
enable: 1 |
|||
icon: http://medou.oss-cn-shenzhen.aliyuncs.com/saas/20200624155949.png |
|||
realPrice: 100 |
|||
sellStrategy: common |
|||
title: 天 |
|||
|
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/member/new/member-expense-config |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json" |
|||
X-APP-ID: "470236309865238555" |
|||
Authorization: ${ENV(LDAPTOKEN)} |
|||
json: |
|||
bidPrice: $bidPrice |
|||
days: $days |
|||
description: $description |
|||
enable: $enable |
|||
icon: $icon |
|||
realPrice: $realPrice |
|||
sellStrategy: $sellStrategy |
|||
title: $title |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
@ -0,0 +1,13 @@ |
|||
name: 删除会员 |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/member/delete-batch/member-expense-config |
|||
method: POST |
|||
headers: |
|||
Content-Type: application/json |
|||
X-APP-ID: "470236309865238555" |
|||
Authorization: ${ENV(LDAPTOKEN)} |
|||
json: |
|||
idList: ["503182395336429568"] |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
@ -0,0 +1,11 @@ |
|||
name: 会员列表查询 |
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/member/get/member-expense-config-list |
|||
method: GET |
|||
headers: |
|||
Content-Type: application/json |
|||
X-APP-ID: "470236309865238555" |
|||
Authorization: ${ENV(LDAPTOKEN)} |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
@ -0,0 +1,30 @@ |
|||
name: 修改会员 |
|||
variables: |
|||
bidPrice: 1500 |
|||
days: 30 |
|||
description: 充就送,好礼等你来~~ |
|||
enable: 1 |
|||
icon: http://medou.oss-cn-shenzhen.aliyuncs.com/saas/20200624155949.png |
|||
realPrice: 200 |
|||
sellStrategy: common |
|||
title: 天 |
|||
|
|||
base_url: ${ENV(BURL)} |
|||
request: |
|||
url: /recycle-service/admin/member/update/member-expense-config/502180735986307072 |
|||
method: POST |
|||
headers: |
|||
Content-Type: "application/json" |
|||
X-APP-ID: "470236309865238555" |
|||
Authorization: ${ENV(LDAPTOKEN)} |
|||
json: |
|||
bidPrice: $bidPrice |
|||
days: $days |
|||
description: $description |
|||
enable: $enable |
|||
icon: $icon |
|||
realPrice: $realPrice |
|||
sellStrategy: $sellStrategy |
|||
title: $title |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
@ -0,0 +1,15 @@ |
|||
name: ldap登录 |
|||
# QN 表示正式环境 |
|||
base_url: ${ENV(QNURL)} |
|||
request: |
|||
url: /recycle-service/admin/login |
|||
method: POST |
|||
headers: |
|||
Content-Type: application/x-www-form-urlencoded |
|||
X-APP-ID: "470236309865238555" |
|||
data: |
|||
username: zhangshan@qniao.cn |
|||
password: zhangshan123456 |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
- {"check": "content.message", "comparator": "eq", "expect": "登陆成功"} |
|||
@ -1,11 +1,11 @@ |
|||
name: 账期过期钉钉提醒相关人员 |
|||
base_url: ${ENV(BURL)} |
|||
base_url: ${ENV(QNURL)} |
|||
request: |
|||
url: /recycle-service/admin/proxy-sell/test/schedule |
|||
method: GET |
|||
headers: |
|||
Content-Type: "application/json" |
|||
X-APP-ID: "470236309865238555" |
|||
Authorization: ${ENV(LDAPTOKEN)} |
|||
Authorization: ${ENV(QNTOKEN)} |
|||
validate: |
|||
- eq: ["status_code", 200] |
|||
@ -0,0 +1,492 @@ |
|||
<head> |
|||
<meta content="text/html; charset=utf-8" http-equiv="content-type" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title> - TestReport</title> |
|||
<style> |
|||
body { |
|||
background-color: #f2f2f2; |
|||
color: #333; |
|||
margin: 0 auto; |
|||
width: 960px; |
|||
} |
|||
#summary { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
#summary th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
#summary td { |
|||
background-color: lightblue; |
|||
text-align: center; |
|||
padding: 4px 8px; |
|||
} |
|||
.details { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
.details th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details tr .passed { |
|||
background-color: lightgreen; |
|||
} |
|||
.details tr .failed { |
|||
background-color: red; |
|||
} |
|||
.details tr .unchecked { |
|||
background-color: gray; |
|||
} |
|||
.details td { |
|||
background-color: lightblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details .detail { |
|||
background-color: lightgrey; |
|||
font-size: smaller; |
|||
padding: 5px 10px; |
|||
line-height: 20px; |
|||
text-align: left; |
|||
} |
|||
.details .success { |
|||
background-color: greenyellow; |
|||
} |
|||
.details .error { |
|||
background-color: red; |
|||
} |
|||
.details .failure { |
|||
background-color: salmon; |
|||
} |
|||
.details .skipped { |
|||
background-color: gray; |
|||
} |
|||
|
|||
.button { |
|||
font-size: 1em; |
|||
padding: 6px; |
|||
width: 4em; |
|||
text-align: center; |
|||
background-color: #06d85f; |
|||
border-radius: 20px/50px; |
|||
cursor: pointer; |
|||
transition: all 0.3s ease-out; |
|||
} |
|||
a.button{ |
|||
color: gray; |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
} |
|||
.button:hover { |
|||
background: #2cffbd; |
|||
} |
|||
|
|||
.overlay { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
transition: opacity 500ms; |
|||
visibility: hidden; |
|||
opacity: 0; |
|||
line-height: 25px; |
|||
} |
|||
.overlay:target { |
|||
visibility: visible; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.popup { |
|||
margin: 70px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 10px; |
|||
width: 50%; |
|||
position: relative; |
|||
transition: all 3s ease-in-out; |
|||
} |
|||
|
|||
.popup h2 { |
|||
margin-top: 0; |
|||
color: #333; |
|||
font-family: Tahoma, Arial, sans-serif; |
|||
} |
|||
.popup .close { |
|||
position: absolute; |
|||
top: 20px; |
|||
right: 30px; |
|||
transition: all 200ms; |
|||
font-size: 30px; |
|||
font-weight: bold; |
|||
text-decoration: none; |
|||
color: #333; |
|||
} |
|||
.popup .close:hover { |
|||
color: #06d85f; |
|||
} |
|||
.popup .content { |
|||
max-height: 80%; |
|||
overflow: auto; |
|||
text-align: left; |
|||
} |
|||
.popup .separator { |
|||
color:royalblue |
|||
} |
|||
|
|||
@media screen and (max-width: 700px) { |
|||
.box { |
|||
width: 70%; |
|||
} |
|||
.popup { |
|||
width: 70%; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<h1>Test Report: </h1> |
|||
|
|||
<h2>Summary</h2> |
|||
<table id="summary"> |
|||
<tr> |
|||
<th>START AT</th> |
|||
<td colspan="4">2020-09-15 09:41:24</td> |
|||
</tr> |
|||
<tr> |
|||
<th>DURATION</th> |
|||
<td colspan="4">0.369 seconds</td> |
|||
</tr> |
|||
<tr> |
|||
<th>PLATFORM</th> |
|||
<td>HttpRunner 2.3.0 </td> |
|||
<td>CPython 3.8.4 </td> |
|||
<td colspan="2">Windows-10-10.0.18362-SP0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>STAT</th> |
|||
<th colspan="2">TESTCASES (success/fail)</th> |
|||
<th colspan="2">TESTSTEPS (success/fail/error/skip)</th> |
|||
</tr> |
|||
<tr> |
|||
<td>total (details) =></td> |
|||
<td colspan="2">1 (1/0)</td> |
|||
<td colspan="2">1 (1/0/0/0)</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<h2>Details</h2> |
|||
|
|||
|
|||
|
|||
<h3>修改会员</h3> |
|||
<table id="suite_1" class="details"> |
|||
<tr> |
|||
<td>TOTAL: 1</td> |
|||
<td>SUCCESS: 1</td> |
|||
<td>FAILED: 0</td> |
|||
<td>ERROR: 0</td> |
|||
<td>SKIPPED: 0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>Status</th> |
|||
<th colspan="2">Name</th> |
|||
<th>Response Time</th> |
|||
<th>Detail</th> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
|
|||
<tr id="record_1_1"> |
|||
<th class="success" style="width:5em;">success</th> |
|||
<td colspan="2">修改会员</td> |
|||
<td style="text-align:center;width:6em;">355.38 ms</td> |
|||
<td class="detail"> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_log_1_1_1">log-1</a> |
|||
<div id="popup_log_1_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Request and Response data</h2> |
|||
<a class="close" href="#record_1_1_1">×</a> |
|||
|
|||
<div class="content"> |
|||
<h3>Name: 修改会员</h3> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<h3>Request:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/update/member-expense-config/502180735986307072 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>method</th> |
|||
<td> |
|||
|
|||
POST |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>User-Agent</strong>: python-requests/2.24.0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept-Encoding</strong>: gzip, deflate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept</strong>: */* |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-APP-ID</strong>: 470236309865238555 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: Token a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Length</strong>: 258 |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>body</th> |
|||
<td> |
|||
|
|||
{"bidPrice": 1500, "days": 30, "description": "\u5145\u5c31\u9001\uff0c\u597d\u793c\u7b49\u4f60\u6765~~", "enable": 1, "icon": "http://medou.oss-cn-shenzhen.aliyuncs.com/saas/20200624155949.png", "realPrice": 200, "sellStrategy": "common", "title": "\u5929"} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Response:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>ok</th> |
|||
<td> |
|||
|
|||
True |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/update/member-expense-config/502180735986307072 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>status_code</th> |
|||
<td> |
|||
|
|||
200 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>reason</th> |
|||
<td> |
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>cookies</th> |
|||
<td> |
|||
|
|||
{} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>encoding</th> |
|||
<td> |
|||
|
|||
UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>Server</strong>: nginx |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Date</strong>: Tue, 15 Sep 2020 01:41:24 GMT |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json;charset=UTF-8 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Transfer-Encoding</strong>: chunked |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Content-Type-Options</strong>: nosniff |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-XSS-Protection</strong>: 1; mode=block |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Cache-Control</strong>: no-cache, no-store, max-age=0, must-revalidate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Pragma</strong>: no-cache |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Expires</strong>: 0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Frame-Options</strong>: DENY |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>content_type</th> |
|||
<td> |
|||
|
|||
application/json;charset=UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>json</th> |
|||
<td> |
|||
|
|||
<pre>{'code': 0, 'message': 'successful', 'data': None}</pre> |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
|
|||
<h3>Validators:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>check</th> |
|||
<th>comparator</th> |
|||
<th>expect value</th> |
|||
<th>actual value</th> |
|||
</tr> |
|||
|
|||
<tr> |
|||
|
|||
<td class="passed"> |
|||
|
|||
status_code |
|||
</td> |
|||
<td>equals</td> |
|||
<td>200</td> |
|||
<td>200</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Statistics:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>content_size(bytes)</th> |
|||
<td>45</td> |
|||
</tr> |
|||
<tr> |
|||
<th>response_time(ms)</th> |
|||
<td>355.38</td> |
|||
</tr> |
|||
<tr> |
|||
<th>elapsed(ms)</th> |
|||
<td>351.14</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
|
|||
</body> |
|||
@ -0,0 +1,492 @@ |
|||
<head> |
|||
<meta content="text/html; charset=utf-8" http-equiv="content-type" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title> - TestReport</title> |
|||
<style> |
|||
body { |
|||
background-color: #f2f2f2; |
|||
color: #333; |
|||
margin: 0 auto; |
|||
width: 960px; |
|||
} |
|||
#summary { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
#summary th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
#summary td { |
|||
background-color: lightblue; |
|||
text-align: center; |
|||
padding: 4px 8px; |
|||
} |
|||
.details { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
.details th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details tr .passed { |
|||
background-color: lightgreen; |
|||
} |
|||
.details tr .failed { |
|||
background-color: red; |
|||
} |
|||
.details tr .unchecked { |
|||
background-color: gray; |
|||
} |
|||
.details td { |
|||
background-color: lightblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details .detail { |
|||
background-color: lightgrey; |
|||
font-size: smaller; |
|||
padding: 5px 10px; |
|||
line-height: 20px; |
|||
text-align: left; |
|||
} |
|||
.details .success { |
|||
background-color: greenyellow; |
|||
} |
|||
.details .error { |
|||
background-color: red; |
|||
} |
|||
.details .failure { |
|||
background-color: salmon; |
|||
} |
|||
.details .skipped { |
|||
background-color: gray; |
|||
} |
|||
|
|||
.button { |
|||
font-size: 1em; |
|||
padding: 6px; |
|||
width: 4em; |
|||
text-align: center; |
|||
background-color: #06d85f; |
|||
border-radius: 20px/50px; |
|||
cursor: pointer; |
|||
transition: all 0.3s ease-out; |
|||
} |
|||
a.button{ |
|||
color: gray; |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
} |
|||
.button:hover { |
|||
background: #2cffbd; |
|||
} |
|||
|
|||
.overlay { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
transition: opacity 500ms; |
|||
visibility: hidden; |
|||
opacity: 0; |
|||
line-height: 25px; |
|||
} |
|||
.overlay:target { |
|||
visibility: visible; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.popup { |
|||
margin: 70px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 10px; |
|||
width: 50%; |
|||
position: relative; |
|||
transition: all 3s ease-in-out; |
|||
} |
|||
|
|||
.popup h2 { |
|||
margin-top: 0; |
|||
color: #333; |
|||
font-family: Tahoma, Arial, sans-serif; |
|||
} |
|||
.popup .close { |
|||
position: absolute; |
|||
top: 20px; |
|||
right: 30px; |
|||
transition: all 200ms; |
|||
font-size: 30px; |
|||
font-weight: bold; |
|||
text-decoration: none; |
|||
color: #333; |
|||
} |
|||
.popup .close:hover { |
|||
color: #06d85f; |
|||
} |
|||
.popup .content { |
|||
max-height: 80%; |
|||
overflow: auto; |
|||
text-align: left; |
|||
} |
|||
.popup .separator { |
|||
color:royalblue |
|||
} |
|||
|
|||
@media screen and (max-width: 700px) { |
|||
.box { |
|||
width: 70%; |
|||
} |
|||
.popup { |
|||
width: 70%; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<h1>Test Report: </h1> |
|||
|
|||
<h2>Summary</h2> |
|||
<table id="summary"> |
|||
<tr> |
|||
<th>START AT</th> |
|||
<td colspan="4">2020-09-15 09:48:17</td> |
|||
</tr> |
|||
<tr> |
|||
<th>DURATION</th> |
|||
<td colspan="4">0.235 seconds</td> |
|||
</tr> |
|||
<tr> |
|||
<th>PLATFORM</th> |
|||
<td>HttpRunner 2.3.0 </td> |
|||
<td>CPython 3.8.4 </td> |
|||
<td colspan="2">Windows-10-10.0.18362-SP0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>STAT</th> |
|||
<th colspan="2">TESTCASES (success/fail)</th> |
|||
<th colspan="2">TESTSTEPS (success/fail/error/skip)</th> |
|||
</tr> |
|||
<tr> |
|||
<td>total (details) =></td> |
|||
<td colspan="2">1 (1/0)</td> |
|||
<td colspan="2">1 (1/0/0/0)</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<h2>Details</h2> |
|||
|
|||
|
|||
|
|||
<h3>新增会员</h3> |
|||
<table id="suite_1" class="details"> |
|||
<tr> |
|||
<td>TOTAL: 1</td> |
|||
<td>SUCCESS: 1</td> |
|||
<td>FAILED: 0</td> |
|||
<td>ERROR: 0</td> |
|||
<td>SKIPPED: 0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>Status</th> |
|||
<th colspan="2">Name</th> |
|||
<th>Response Time</th> |
|||
<th>Detail</th> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
|
|||
<tr id="record_1_1"> |
|||
<th class="success" style="width:5em;">success</th> |
|||
<td colspan="2">新增会员</td> |
|||
<td style="text-align:center;width:6em;">197.34 ms</td> |
|||
<td class="detail"> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_log_1_1_1">log-1</a> |
|||
<div id="popup_log_1_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Request and Response data</h2> |
|||
<a class="close" href="#record_1_1_1">×</a> |
|||
|
|||
<div class="content"> |
|||
<h3>Name: 新增会员</h3> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<h3>Request:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/new/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>method</th> |
|||
<td> |
|||
|
|||
POST |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>User-Agent</strong>: python-requests/2.24.0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept-Encoding</strong>: gzip, deflate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept</strong>: */* |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-APP-ID</strong>: 470236309865238555 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: Token a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Length</strong>: 252 |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>body</th> |
|||
<td> |
|||
|
|||
{"bidPrice": 1000, "days": 30, "description": "\u65b0\u4eba\u9996\u5145\u4f18\u60e0\u5927\u5927~~", "enable": 1, "icon": "http://medou.oss-cn-shenzhen.aliyuncs.com/saas/20200624155949.png", "realPrice": 100, "sellStrategy": "common", "title": "\u5929"} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Response:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>ok</th> |
|||
<td> |
|||
|
|||
True |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/new/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>status_code</th> |
|||
<td> |
|||
|
|||
200 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>reason</th> |
|||
<td> |
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>cookies</th> |
|||
<td> |
|||
|
|||
{} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>encoding</th> |
|||
<td> |
|||
|
|||
UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>Server</strong>: nginx |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Date</strong>: Tue, 15 Sep 2020 01:48:17 GMT |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json;charset=UTF-8 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Transfer-Encoding</strong>: chunked |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Content-Type-Options</strong>: nosniff |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-XSS-Protection</strong>: 1; mode=block |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Cache-Control</strong>: no-cache, no-store, max-age=0, must-revalidate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Pragma</strong>: no-cache |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Expires</strong>: 0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Frame-Options</strong>: DENY |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>content_type</th> |
|||
<td> |
|||
|
|||
application/json;charset=UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>json</th> |
|||
<td> |
|||
|
|||
<pre>{'code': 0, 'message': 'successful', 'data': None}</pre> |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
|
|||
<h3>Validators:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>check</th> |
|||
<th>comparator</th> |
|||
<th>expect value</th> |
|||
<th>actual value</th> |
|||
</tr> |
|||
|
|||
<tr> |
|||
|
|||
<td class="passed"> |
|||
|
|||
status_code |
|||
</td> |
|||
<td>equals</td> |
|||
<td>200</td> |
|||
<td>200</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Statistics:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>content_size(bytes)</th> |
|||
<td>45</td> |
|||
</tr> |
|||
<tr> |
|||
<th>response_time(ms)</th> |
|||
<td>197.34</td> |
|||
</tr> |
|||
<tr> |
|||
<th>elapsed(ms)</th> |
|||
<td>191.669</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
|
|||
</body> |
|||
@ -0,0 +1,516 @@ |
|||
<head> |
|||
<meta content="text/html; charset=utf-8" http-equiv="content-type" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title> - TestReport</title> |
|||
<style> |
|||
body { |
|||
background-color: #f2f2f2; |
|||
color: #333; |
|||
margin: 0 auto; |
|||
width: 960px; |
|||
} |
|||
#summary { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
#summary th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
#summary td { |
|||
background-color: lightblue; |
|||
text-align: center; |
|||
padding: 4px 8px; |
|||
} |
|||
.details { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
.details th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details tr .passed { |
|||
background-color: lightgreen; |
|||
} |
|||
.details tr .failed { |
|||
background-color: red; |
|||
} |
|||
.details tr .unchecked { |
|||
background-color: gray; |
|||
} |
|||
.details td { |
|||
background-color: lightblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details .detail { |
|||
background-color: lightgrey; |
|||
font-size: smaller; |
|||
padding: 5px 10px; |
|||
line-height: 20px; |
|||
text-align: left; |
|||
} |
|||
.details .success { |
|||
background-color: greenyellow; |
|||
} |
|||
.details .error { |
|||
background-color: red; |
|||
} |
|||
.details .failure { |
|||
background-color: salmon; |
|||
} |
|||
.details .skipped { |
|||
background-color: gray; |
|||
} |
|||
|
|||
.button { |
|||
font-size: 1em; |
|||
padding: 6px; |
|||
width: 4em; |
|||
text-align: center; |
|||
background-color: #06d85f; |
|||
border-radius: 20px/50px; |
|||
cursor: pointer; |
|||
transition: all 0.3s ease-out; |
|||
} |
|||
a.button{ |
|||
color: gray; |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
} |
|||
.button:hover { |
|||
background: #2cffbd; |
|||
} |
|||
|
|||
.overlay { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
transition: opacity 500ms; |
|||
visibility: hidden; |
|||
opacity: 0; |
|||
line-height: 25px; |
|||
} |
|||
.overlay:target { |
|||
visibility: visible; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.popup { |
|||
margin: 70px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 10px; |
|||
width: 50%; |
|||
position: relative; |
|||
transition: all 3s ease-in-out; |
|||
} |
|||
|
|||
.popup h2 { |
|||
margin-top: 0; |
|||
color: #333; |
|||
font-family: Tahoma, Arial, sans-serif; |
|||
} |
|||
.popup .close { |
|||
position: absolute; |
|||
top: 20px; |
|||
right: 30px; |
|||
transition: all 200ms; |
|||
font-size: 30px; |
|||
font-weight: bold; |
|||
text-decoration: none; |
|||
color: #333; |
|||
} |
|||
.popup .close:hover { |
|||
color: #06d85f; |
|||
} |
|||
.popup .content { |
|||
max-height: 80%; |
|||
overflow: auto; |
|||
text-align: left; |
|||
} |
|||
.popup .separator { |
|||
color:royalblue |
|||
} |
|||
|
|||
@media screen and (max-width: 700px) { |
|||
.box { |
|||
width: 70%; |
|||
} |
|||
.popup { |
|||
width: 70%; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<h1>Test Report: </h1> |
|||
|
|||
<h2>Summary</h2> |
|||
<table id="summary"> |
|||
<tr> |
|||
<th>START AT</th> |
|||
<td colspan="4">2020-09-15 09:49:01</td> |
|||
</tr> |
|||
<tr> |
|||
<th>DURATION</th> |
|||
<td colspan="4">0.116 seconds</td> |
|||
</tr> |
|||
<tr> |
|||
<th>PLATFORM</th> |
|||
<td>HttpRunner 2.3.0 </td> |
|||
<td>CPython 3.8.4 </td> |
|||
<td colspan="2">Windows-10-10.0.18362-SP0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>STAT</th> |
|||
<th colspan="2">TESTCASES (success/fail)</th> |
|||
<th colspan="2">TESTSTEPS (success/fail/error/skip)</th> |
|||
</tr> |
|||
<tr> |
|||
<td>total (details) =></td> |
|||
<td colspan="2">1 (0/1)</td> |
|||
<td colspan="2">1 (0/1/0/0)</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<h2>Details</h2> |
|||
|
|||
|
|||
|
|||
<h3>删除会员</h3> |
|||
<table id="suite_1" class="details"> |
|||
<tr> |
|||
<td>TOTAL: 1</td> |
|||
<td>SUCCESS: 0</td> |
|||
<td>FAILED: 1</td> |
|||
<td>ERROR: 0</td> |
|||
<td>SKIPPED: 0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>Status</th> |
|||
<th colspan="2">Name</th> |
|||
<th>Response Time</th> |
|||
<th>Detail</th> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
|
|||
<tr id="record_1_1"> |
|||
<th class="failure" style="width:5em;">failure</th> |
|||
<td colspan="2">删除会员</td> |
|||
<td style="text-align:center;width:6em;">58.55 ms</td> |
|||
<td class="detail"> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_log_1_1_1">log-1</a> |
|||
<div id="popup_log_1_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Request and Response data</h2> |
|||
<a class="close" href="#record_1_1_1">×</a> |
|||
|
|||
<div class="content"> |
|||
<h3>Name: 删除会员</h3> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<h3>Request:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>method</th> |
|||
<td> |
|||
|
|||
GET |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>User-Agent</strong>: python-requests/2.24.0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept-Encoding</strong>: gzip, deflate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept</strong>: */* |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-APP-ID</strong>: 470236309865238555 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: Token a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Length</strong>: 33 |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>body</th> |
|||
<td> |
|||
|
|||
"idList:[\"503182395336429568\"]" |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Response:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>ok</th> |
|||
<td> |
|||
|
|||
False |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>status_code</th> |
|||
<td> |
|||
|
|||
405 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>reason</th> |
|||
<td> |
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>cookies</th> |
|||
<td> |
|||
|
|||
{} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>encoding</th> |
|||
<td> |
|||
|
|||
UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>Server</strong>: nginx |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Date</strong>: Tue, 15 Sep 2020 01:49:01 GMT |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json;charset=UTF-8 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Transfer-Encoding</strong>: chunked |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Content-Type-Options</strong>: nosniff |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-XSS-Protection</strong>: 1; mode=block |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Cache-Control</strong>: no-cache, no-store, max-age=0, must-revalidate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Pragma</strong>: no-cache |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Expires</strong>: 0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Frame-Options</strong>: DENY |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>content_type</th> |
|||
<td> |
|||
|
|||
application/json;charset=UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>json</th> |
|||
<td> |
|||
|
|||
<pre>{'code': 405, 'message': "Request method 'GET' not supported", 'data': None}</pre> |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
|
|||
<h3>Validators:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>check</th> |
|||
<th>comparator</th> |
|||
<th>expect value</th> |
|||
<th>actual value</th> |
|||
</tr> |
|||
|
|||
<tr> |
|||
|
|||
<td class="failed"> |
|||
|
|||
status_code |
|||
</td> |
|||
<td>equals</td> |
|||
<td>200</td> |
|||
<td>405</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Statistics:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>content_size(bytes)</th> |
|||
<td>71</td> |
|||
</tr> |
|||
<tr> |
|||
<th>response_time(ms)</th> |
|||
<td>58.55</td> |
|||
</tr> |
|||
<tr> |
|||
<th>elapsed(ms)</th> |
|||
<td>54.828</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_attachment_1_1">traceback</a> |
|||
<div id="popup_attachment_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Traceback Message</h2> |
|||
<a class="close" href="#record_1_1">×</a> |
|||
<div class="content"><pre>Traceback (most recent call last): |
|||
File "c:\python\too\lib\site-packages\httprunner\api.py", line 52, in test |
|||
test_runner.run_test(test_dict) |
|||
httprunner.exceptions.ValidationFailure: |
|||
validate: status_code equals 200(int) ==> fail |
|||
405(int) equals 200(int) |
|||
|
|||
During handling of the above exception, another exception occurred: |
|||
|
|||
Traceback (most recent call last): |
|||
File "c:\python\too\lib\site-packages\httprunner\api.py", line 54, in test |
|||
self.fail(str(ex)) |
|||
AssertionError: |
|||
validate: status_code equals 200(int) ==> fail |
|||
405(int) equals 200(int) |
|||
</pre></div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
|
|||
</body> |
|||
@ -0,0 +1,492 @@ |
|||
<head> |
|||
<meta content="text/html; charset=utf-8" http-equiv="content-type" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title> - TestReport</title> |
|||
<style> |
|||
body { |
|||
background-color: #f2f2f2; |
|||
color: #333; |
|||
margin: 0 auto; |
|||
width: 960px; |
|||
} |
|||
#summary { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
#summary th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
#summary td { |
|||
background-color: lightblue; |
|||
text-align: center; |
|||
padding: 4px 8px; |
|||
} |
|||
.details { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
.details th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details tr .passed { |
|||
background-color: lightgreen; |
|||
} |
|||
.details tr .failed { |
|||
background-color: red; |
|||
} |
|||
.details tr .unchecked { |
|||
background-color: gray; |
|||
} |
|||
.details td { |
|||
background-color: lightblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details .detail { |
|||
background-color: lightgrey; |
|||
font-size: smaller; |
|||
padding: 5px 10px; |
|||
line-height: 20px; |
|||
text-align: left; |
|||
} |
|||
.details .success { |
|||
background-color: greenyellow; |
|||
} |
|||
.details .error { |
|||
background-color: red; |
|||
} |
|||
.details .failure { |
|||
background-color: salmon; |
|||
} |
|||
.details .skipped { |
|||
background-color: gray; |
|||
} |
|||
|
|||
.button { |
|||
font-size: 1em; |
|||
padding: 6px; |
|||
width: 4em; |
|||
text-align: center; |
|||
background-color: #06d85f; |
|||
border-radius: 20px/50px; |
|||
cursor: pointer; |
|||
transition: all 0.3s ease-out; |
|||
} |
|||
a.button{ |
|||
color: gray; |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
} |
|||
.button:hover { |
|||
background: #2cffbd; |
|||
} |
|||
|
|||
.overlay { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
transition: opacity 500ms; |
|||
visibility: hidden; |
|||
opacity: 0; |
|||
line-height: 25px; |
|||
} |
|||
.overlay:target { |
|||
visibility: visible; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.popup { |
|||
margin: 70px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 10px; |
|||
width: 50%; |
|||
position: relative; |
|||
transition: all 3s ease-in-out; |
|||
} |
|||
|
|||
.popup h2 { |
|||
margin-top: 0; |
|||
color: #333; |
|||
font-family: Tahoma, Arial, sans-serif; |
|||
} |
|||
.popup .close { |
|||
position: absolute; |
|||
top: 20px; |
|||
right: 30px; |
|||
transition: all 200ms; |
|||
font-size: 30px; |
|||
font-weight: bold; |
|||
text-decoration: none; |
|||
color: #333; |
|||
} |
|||
.popup .close:hover { |
|||
color: #06d85f; |
|||
} |
|||
.popup .content { |
|||
max-height: 80%; |
|||
overflow: auto; |
|||
text-align: left; |
|||
} |
|||
.popup .separator { |
|||
color:royalblue |
|||
} |
|||
|
|||
@media screen and (max-width: 700px) { |
|||
.box { |
|||
width: 70%; |
|||
} |
|||
.popup { |
|||
width: 70%; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<h1>Test Report: </h1> |
|||
|
|||
<h2>Summary</h2> |
|||
<table id="summary"> |
|||
<tr> |
|||
<th>START AT</th> |
|||
<td colspan="4">2020-09-15 09:49:25</td> |
|||
</tr> |
|||
<tr> |
|||
<th>DURATION</th> |
|||
<td colspan="4">0.887 seconds</td> |
|||
</tr> |
|||
<tr> |
|||
<th>PLATFORM</th> |
|||
<td>HttpRunner 2.3.0 </td> |
|||
<td>CPython 3.8.4 </td> |
|||
<td colspan="2">Windows-10-10.0.18362-SP0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>STAT</th> |
|||
<th colspan="2">TESTCASES (success/fail)</th> |
|||
<th colspan="2">TESTSTEPS (success/fail/error/skip)</th> |
|||
</tr> |
|||
<tr> |
|||
<td>total (details) =></td> |
|||
<td colspan="2">1 (1/0)</td> |
|||
<td colspan="2">1 (1/0/0/0)</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<h2>Details</h2> |
|||
|
|||
|
|||
|
|||
<h3>删除会员</h3> |
|||
<table id="suite_1" class="details"> |
|||
<tr> |
|||
<td>TOTAL: 1</td> |
|||
<td>SUCCESS: 1</td> |
|||
<td>FAILED: 0</td> |
|||
<td>ERROR: 0</td> |
|||
<td>SKIPPED: 0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>Status</th> |
|||
<th colspan="2">Name</th> |
|||
<th>Response Time</th> |
|||
<th>Detail</th> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
|
|||
<tr id="record_1_1"> |
|||
<th class="success" style="width:5em;">success</th> |
|||
<td colspan="2">删除会员</td> |
|||
<td style="text-align:center;width:6em;">854.67 ms</td> |
|||
<td class="detail"> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_log_1_1_1">log-1</a> |
|||
<div id="popup_log_1_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Request and Response data</h2> |
|||
<a class="close" href="#record_1_1_1">×</a> |
|||
|
|||
<div class="content"> |
|||
<h3>Name: 删除会员</h3> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<h3>Request:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>method</th> |
|||
<td> |
|||
|
|||
POST |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>User-Agent</strong>: python-requests/2.24.0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept-Encoding</strong>: gzip, deflate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept</strong>: */* |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-APP-ID</strong>: 470236309865238555 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: Token a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Length</strong>: 33 |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>body</th> |
|||
<td> |
|||
|
|||
"idList:[\"503182395336429568\"]" |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Response:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>ok</th> |
|||
<td> |
|||
|
|||
True |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>status_code</th> |
|||
<td> |
|||
|
|||
200 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>reason</th> |
|||
<td> |
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>cookies</th> |
|||
<td> |
|||
|
|||
{} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>encoding</th> |
|||
<td> |
|||
|
|||
UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>Server</strong>: nginx |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Date</strong>: Tue, 15 Sep 2020 01:49:25 GMT |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json;charset=UTF-8 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Transfer-Encoding</strong>: chunked |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Content-Type-Options</strong>: nosniff |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-XSS-Protection</strong>: 1; mode=block |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Cache-Control</strong>: no-cache, no-store, max-age=0, must-revalidate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Pragma</strong>: no-cache |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Expires</strong>: 0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Frame-Options</strong>: DENY |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>content_type</th> |
|||
<td> |
|||
|
|||
application/json;charset=UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>json</th> |
|||
<td> |
|||
|
|||
<pre>{'timestamp': 1600134565154, 'status': 400, 'error': 'Bad Request', 'message': 'JSON parse error: Cannot construct instance of `com.qniao.trade.admin.dto.DeleteMemberExpenseConfigDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (\'idList:["503182395336429568"]\'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.qniao.trade.admin.dto.DeleteMemberExpenseConfigDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (\'idList:["503182395336429568"]\')\n at [Source: (PushbackInputStream); line: 1, column: 1]', 'path': '/recycle-service/admin/member/delete-batch/member-expense-config', 'code': 400}</pre> |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
|
|||
<h3>Validators:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>check</th> |
|||
<th>comparator</th> |
|||
<th>expect value</th> |
|||
<th>actual value</th> |
|||
</tr> |
|||
|
|||
<tr> |
|||
|
|||
<td class="passed"> |
|||
|
|||
status_code |
|||
</td> |
|||
<td>equals</td> |
|||
<td>200</td> |
|||
<td>200</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Statistics:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>content_size(bytes)</th> |
|||
<td>798</td> |
|||
</tr> |
|||
<tr> |
|||
<th>response_time(ms)</th> |
|||
<td>854.67</td> |
|||
</tr> |
|||
<tr> |
|||
<th>elapsed(ms)</th> |
|||
<td>849.353</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
|
|||
</body> |
|||
@ -0,0 +1,492 @@ |
|||
<head> |
|||
<meta content="text/html; charset=utf-8" http-equiv="content-type" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title> - TestReport</title> |
|||
<style> |
|||
body { |
|||
background-color: #f2f2f2; |
|||
color: #333; |
|||
margin: 0 auto; |
|||
width: 960px; |
|||
} |
|||
#summary { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
#summary th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
#summary td { |
|||
background-color: lightblue; |
|||
text-align: center; |
|||
padding: 4px 8px; |
|||
} |
|||
.details { |
|||
width: 960px; |
|||
margin-bottom: 20px; |
|||
} |
|||
.details th { |
|||
background-color: skyblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details tr .passed { |
|||
background-color: lightgreen; |
|||
} |
|||
.details tr .failed { |
|||
background-color: red; |
|||
} |
|||
.details tr .unchecked { |
|||
background-color: gray; |
|||
} |
|||
.details td { |
|||
background-color: lightblue; |
|||
padding: 5px 12px; |
|||
} |
|||
.details .detail { |
|||
background-color: lightgrey; |
|||
font-size: smaller; |
|||
padding: 5px 10px; |
|||
line-height: 20px; |
|||
text-align: left; |
|||
} |
|||
.details .success { |
|||
background-color: greenyellow; |
|||
} |
|||
.details .error { |
|||
background-color: red; |
|||
} |
|||
.details .failure { |
|||
background-color: salmon; |
|||
} |
|||
.details .skipped { |
|||
background-color: gray; |
|||
} |
|||
|
|||
.button { |
|||
font-size: 1em; |
|||
padding: 6px; |
|||
width: 4em; |
|||
text-align: center; |
|||
background-color: #06d85f; |
|||
border-radius: 20px/50px; |
|||
cursor: pointer; |
|||
transition: all 0.3s ease-out; |
|||
} |
|||
a.button{ |
|||
color: gray; |
|||
text-decoration: none; |
|||
display: inline-block; |
|||
} |
|||
.button:hover { |
|||
background: #2cffbd; |
|||
} |
|||
|
|||
.overlay { |
|||
position: fixed; |
|||
top: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
transition: opacity 500ms; |
|||
visibility: hidden; |
|||
opacity: 0; |
|||
line-height: 25px; |
|||
} |
|||
.overlay:target { |
|||
visibility: visible; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.popup { |
|||
margin: 70px auto; |
|||
padding: 20px; |
|||
background: #fff; |
|||
border-radius: 10px; |
|||
width: 50%; |
|||
position: relative; |
|||
transition: all 3s ease-in-out; |
|||
} |
|||
|
|||
.popup h2 { |
|||
margin-top: 0; |
|||
color: #333; |
|||
font-family: Tahoma, Arial, sans-serif; |
|||
} |
|||
.popup .close { |
|||
position: absolute; |
|||
top: 20px; |
|||
right: 30px; |
|||
transition: all 200ms; |
|||
font-size: 30px; |
|||
font-weight: bold; |
|||
text-decoration: none; |
|||
color: #333; |
|||
} |
|||
.popup .close:hover { |
|||
color: #06d85f; |
|||
} |
|||
.popup .content { |
|||
max-height: 80%; |
|||
overflow: auto; |
|||
text-align: left; |
|||
} |
|||
.popup .separator { |
|||
color:royalblue |
|||
} |
|||
|
|||
@media screen and (max-width: 700px) { |
|||
.box { |
|||
width: 70%; |
|||
} |
|||
.popup { |
|||
width: 70%; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<h1>Test Report: </h1> |
|||
|
|||
<h2>Summary</h2> |
|||
<table id="summary"> |
|||
<tr> |
|||
<th>START AT</th> |
|||
<td colspan="4">2020-09-15 09:50:50</td> |
|||
</tr> |
|||
<tr> |
|||
<th>DURATION</th> |
|||
<td colspan="4">0.281 seconds</td> |
|||
</tr> |
|||
<tr> |
|||
<th>PLATFORM</th> |
|||
<td>HttpRunner 2.3.0 </td> |
|||
<td>CPython 3.8.4 </td> |
|||
<td colspan="2">Windows-10-10.0.18362-SP0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>STAT</th> |
|||
<th colspan="2">TESTCASES (success/fail)</th> |
|||
<th colspan="2">TESTSTEPS (success/fail/error/skip)</th> |
|||
</tr> |
|||
<tr> |
|||
<td>total (details) =></td> |
|||
<td colspan="2">1 (1/0)</td> |
|||
<td colspan="2">1 (1/0/0/0)</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
<h2>Details</h2> |
|||
|
|||
|
|||
|
|||
<h3>删除会员</h3> |
|||
<table id="suite_1" class="details"> |
|||
<tr> |
|||
<td>TOTAL: 1</td> |
|||
<td>SUCCESS: 1</td> |
|||
<td>FAILED: 0</td> |
|||
<td>ERROR: 0</td> |
|||
<td>SKIPPED: 0</td> |
|||
</tr> |
|||
<tr> |
|||
<th>Status</th> |
|||
<th colspan="2">Name</th> |
|||
<th>Response Time</th> |
|||
<th>Detail</th> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
|
|||
<tr id="record_1_1"> |
|||
<th class="success" style="width:5em;">success</th> |
|||
<td colspan="2">删除会员</td> |
|||
<td style="text-align:center;width:6em;">255.39 ms</td> |
|||
<td class="detail"> |
|||
|
|||
|
|||
|
|||
<a class="button" href="#popup_log_1_1_1">log-1</a> |
|||
<div id="popup_log_1_1_1" class="overlay"> |
|||
<div class="popup"> |
|||
<h2>Request and Response data</h2> |
|||
<a class="close" href="#record_1_1_1">×</a> |
|||
|
|||
<div class="content"> |
|||
<h3>Name: 删除会员</h3> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<h3>Request:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>method</th> |
|||
<td> |
|||
|
|||
POST |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>User-Agent</strong>: python-requests/2.24.0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept-Encoding</strong>: gzip, deflate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Accept</strong>: */* |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-APP-ID</strong>: 470236309865238555 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: Token a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Length</strong>: 34 |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>body</th> |
|||
<td> |
|||
|
|||
{"idList": ["503182395336429568"]} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Response:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
|
|||
<tr> |
|||
<th>ok</th> |
|||
<td> |
|||
|
|||
True |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>url</th> |
|||
<td> |
|||
|
|||
http://api-admin-test.qniao.cn/recycle-service/admin/member/delete-batch/member-expense-config |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>status_code</th> |
|||
<td> |
|||
|
|||
200 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>reason</th> |
|||
<td> |
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>cookies</th> |
|||
<td> |
|||
|
|||
{} |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>encoding</th> |
|||
<td> |
|||
|
|||
UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>headers</th> |
|||
<td> |
|||
|
|||
|
|||
<div> |
|||
<strong>Server</strong>: nginx |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Date</strong>: Tue, 15 Sep 2020 01:50:50 GMT |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Content-Type</strong>: application/json;charset=UTF-8 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Transfer-Encoding</strong>: chunked |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Connection</strong>: keep-alive |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Authorization</strong>: a4289fbdfb3422e76232906b1ccdffb7 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Content-Type-Options</strong>: nosniff |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-XSS-Protection</strong>: 1; mode=block |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Cache-Control</strong>: no-cache, no-store, max-age=0, must-revalidate |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Pragma</strong>: no-cache |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>Expires</strong>: 0 |
|||
</div> |
|||
|
|||
<div> |
|||
<strong>X-Frame-Options</strong>: DENY |
|||
</div> |
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>content_type</th> |
|||
<td> |
|||
|
|||
application/json;charset=UTF-8 |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<th>json</th> |
|||
<td> |
|||
|
|||
<pre>{'code': 0, 'message': 'successful', 'data': None}</pre> |
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
|
|||
<h3>Validators:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>check</th> |
|||
<th>comparator</th> |
|||
<th>expect value</th> |
|||
<th>actual value</th> |
|||
</tr> |
|||
|
|||
<tr> |
|||
|
|||
<td class="passed"> |
|||
|
|||
status_code |
|||
</td> |
|||
<td>equals</td> |
|||
<td>200</td> |
|||
<td>200</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
</div> |
|||
|
|||
<h3>Statistics:</h3> |
|||
<div style="overflow: auto"> |
|||
<table> |
|||
<tr> |
|||
<th>content_size(bytes)</th> |
|||
<td>45</td> |
|||
</tr> |
|||
<tr> |
|||
<th>response_time(ms)</th> |
|||
<td>255.39</td> |
|||
</tr> |
|||
<tr> |
|||
<th>elapsed(ms)</th> |
|||
<td>252.743</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
|
|||
</td> |
|||
</tr> |
|||
|
|||
</table> |
|||
|
|||
</body> |
|||
Write
Preview
Loading…
Cancel
Save