Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
willdesk_apiauto
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
29
Issues
29
List
Boards
Labels
Service Desk
Milestones
Merge Requests
29
Merge Requests
29
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
桦生 詹
willdesk_apiauto
Commits
3d7f72c3
Commit
3d7f72c3
authored
Mar 08, 2024
by
zhanhuasheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兼容websocket消息收发断言
parent
21fc9e89
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
44 deletions
+56
-44
Utils/req_handler.py
Utils/req_handler.py
+31
-23
Utils/websocket_handler.py
Utils/websocket_handler.py
+25
-21
No files found.
Utils/req_handler.py
View file @
3d7f72c3
...
@@ -114,29 +114,37 @@ class ReqHandler:
...
@@ -114,29 +114,37 @@ class ReqHandler:
:param expected: 传入期望结果
:param expected: 传入期望结果
:return:
:return:
'''
'''
assert
res
.
status_code
==
200
#先断言状态码是正确的
try
:
if
isinstance
(
expected
,
list
):
assert
res
.
status_code
==
200
#先断言状态码是正确的
'''
if
isinstance
(
expected
,
list
):
穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的
'''
'''
穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的
for
item
in
expected
:
#循环每一个断言场景
'''
for
item_key
,
item_value
in
item
.
items
():
for
item
in
expected
:
#循环每一个断言场景
assert_way
=
item_key
for
item_key
,
item_value
in
item
.
items
():
path
=
list
(
item_value
.
keys
())[
0
]
#拿到path路径
assert_way
=
item_key
value
=
list
(
item_value
.
values
())[
0
]
path
=
list
(
item_value
.
keys
())[
0
]
#拿到path路径
res_path_value
=
jsonpath
.
jsonpath
(
res
.
json
(),
path
)[
0
]
value
=
list
(
item_value
.
values
())[
0
]
if
assert_way
==
'eq'
:
#eq代表完全相同
res_path_value
=
jsonpath
.
jsonpath
(
res
.
json
(),
path
)[
0
]
assert
value
==
res_path_value
if
isinstance
(
res_path_value
,
str
)
and
'{"contentList":'
in
res_path_value
:
elif
assert_way
==
'not_eq'
:
#not_eq代表不相同
res_path_value
=
res_path_value
.
replace
(
'
\\
'
,
''
)
assert
value
!=
res_path_value
if
assert_way
==
'eq'
:
#eq代表完全相同
elif
assert_way
==
'almost'
:
#almonst代表四舍五入后相同就判断为一致
assert
value
==
res_path_value
assert
round
(
value
,
2
)
==
round
(
res_path_value
,
2
)
elif
assert_way
==
'like'
:
#代表值相同但是type可能不同
elif
assert_way
==
'in'
:
#in代表断言值在返回值中
assert
str
(
value
)
==
str
(
res_path_value
)
assert
value
in
res_path_value
elif
assert_way
==
'not_eq'
:
#not_eq代表不相同
elif
assert_way
==
'ain'
:
assert
value
!=
res_path_value
assert
res_path_value
in
value
elif
assert_way
==
'almost'
:
#almonst代表四舍五入后相同就判断为一致
assert
round
(
value
,
2
)
==
round
(
res_path_value
,
2
)
elif
assert_way
==
'in'
:
#in代表断言值在返回值中
assert
value
in
res_path_value
elif
assert_way
==
'ain'
:
assert
res_path_value
in
value
except
AssertionError
:
print
(
f
'期望值为
{
value
}
(
{
type
(
value
)
}
),实际返回值为
{
res_path_value
}
(
{
type
(
res_path_value
)
}
),完整的expected体为
{
expected
}
'
)
raise
AssertionError
except
Exception
as
e
:
print
(
e
,
'-----------------'
)
def
set_value_handler
(
self
,
res
,
item
,
var_class
):
def
set_value_handler
(
self
,
res
,
item
,
var_class
):
'''
'''
:param res: 传response请求体
:param res: 传response请求体
...
...
Utils/websocket_handler.py
View file @
3d7f72c3
...
@@ -39,9 +39,9 @@ class ws:
...
@@ -39,9 +39,9 @@ class ws:
async
def
send_message
(
self
,
message
):
async
def
send_message
(
self
,
message
):
if
self
.
websocket
and
self
.
websocket
.
open
:
if
self
.
websocket
and
self
.
websocket
.
open
:
try
:
try
:
print
(
'开始发送消息'
)
await
self
.
websocket
.
send
(
message
)
await
self
.
websocket
.
send
(
message
)
print
(
f
"Sent message:
{
message
}
"
)
print
(
f
"Sent message:
{
message
}
"
)
time
.
sleep
(
0.5
)
except
websockets
.
ConnectionClosed
as
e
:
except
websockets
.
ConnectionClosed
as
e
:
await
self
.
close
()
await
self
.
close
()
except
Exception
:
except
Exception
:
...
@@ -95,10 +95,8 @@ async def ws_action(ws,case):
...
@@ -95,10 +95,8 @@ async def ws_action(ws,case):
async
def
ws_send_handler
(
case
,
ws
):
async
def
ws_send_handler
(
case
,
ws
):
data
=
case
[
'data'
]
# 消息数据
data
=
case
[
'data'
]
# 消息数据
if
data
[
'type'
]
in
[
'text'
,
'emoji'
]:
content
=
getattr
(
livechatData
,
data
[
'type'
])
#根据type取到对应格式的content
content
=
r
'{"contentList":"%s","attachmentList":[]}'
%
data
[
'content'
]
else
:
content
=
getattr
(
livechatData
,
data
[
'type'
])
if
data
[
'type'
]
!=
'rate'
:
if
data
[
'type'
]
!=
'rate'
:
msgType
=
'newstext'
msgType
=
'newstext'
else
:
else
:
...
@@ -161,22 +159,28 @@ def ws_assert(expected,msg):
...
@@ -161,22 +159,28 @@ def ws_assert(expected,msg):
:param res: 返回的信息
:param res: 返回的信息
:return:
:return:
'''
'''
for
item
in
expected
:
# 循环每一个断言场景
try
:
for
item_key
,
item_value
in
item
.
items
():
for
item
in
expected
:
# 循环每一个断言场景
assert_way
=
item_key
for
item_key
,
item_value
in
item
.
items
():
path
=
list
(
item_value
.
keys
())[
0
]
# 拿到path路径
assert_way
=
item_key
value
=
list
(
item_value
.
values
())[
0
]
path
=
list
(
item_value
.
keys
())[
0
]
# 拿到path路径
res_path_value
=
jsonpath
.
jsonpath
(
msg
,
path
)[
0
]
value
=
list
(
item_value
.
values
())[
0
]
if
assert_way
==
'eq'
:
# eq代表完全相同
res_path_value
=
jsonpath
.
jsonpath
(
msg
,
path
)[
0
]
assert
value
==
res_path_value
if
assert_way
==
'eq'
:
# eq代表完全相同
elif
assert_way
==
'not_eq'
:
# not_eq代表不相同
assert
value
==
res_path_value
assert
value
!=
res_path_value
elif
assert_way
==
'not_eq'
:
# not_eq代表不相同
elif
assert_way
==
'almost'
:
# almonst代表四舍五入后相同就判断为一致
assert
value
!=
res_path_value
assert
round
(
value
,
2
)
==
round
(
res_path_value
,
2
)
elif
assert_way
==
'like'
:
# 代表值相同但是type可能不同
elif
assert_way
==
'in'
:
# in代表断言值在返回值中
assert
str
(
value
)
==
str
(
res_path_value
)
assert
value
in
res_path_value
elif
assert_way
==
'almost'
:
# almonst代表四舍五入后相同就判断为一致
elif
assert_way
==
'ain'
:
assert
round
(
value
,
2
)
==
round
(
res_path_value
,
2
)
assert
res_path_value
in
value
elif
assert_way
==
'in'
:
# in代表断言值在返回值中
assert
value
in
res_path_value
elif
assert_way
==
'ain'
:
assert
res_path_value
in
value
except
AssertionError
:
print
(
f
'期望值为
{
value
}
(
{
type
(
value
)
}
),实际返回值为
{
res_path_value
}
(
{
type
(
res_path_value
)
}
),完整的expected体为
{
expected
}
'
)
raise
AssertionError
async
def
ws_run
(
ws
,
case
):
async
def
ws_run
(
ws
,
case
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment