socket 的自動化互動
假設服務端執行程式為:
# coding:utf8
# python3
import random
import socket
import sys
# 建立 socket 物件
serversocket = socket.socket(socket.af_inet, socket.sock_stream)
port =
9999
# 繫結埠號
serversocket.bind((''
, port)
)# 設定最大連線數,超過後排隊
serversocket.listen(5)
while
true
:print
('等待連線...'
)# 建立客戶端連線
clientsocket, addr = serversocket.accept(
)print
(, addr)
first_num =
str(random.randint(0,
10)) second_num =
str(random.randint(0,
10)) clientsocket.send(
'input {}: '
.format
(first_num)
.encode(
'utf8'))
first_input = clientsocket.recv(10)
.decode(
'utf8'
).strip(
) clientsocket.send(
'input {}: '
.format
(second_num)
.encode(
'utf8'))
second_input = clientsocket.recv(10)
.decode(
'utf8'
).strip(
)print
(first_input)
print
(second_input)
if first_num == first_input and second_num == second_input:
clientsocket.send(
'right!\n'
.encode(
'utf8'))
else
: clientsocket.send(
'wrong!\n'
.encode(
'utf8'))
clientsocket.shutdown(socket.shut_rdwr)
clientsocket.close(
)serversocket.close(
)
執行如下指令碼即可達到自動化互動的目的:
# coding:utf-8
# python3
import sys
import re
import socket
from threading import thread
class
socketinteraction
: tcp_socket =
none
def__init__
(self, host, port)
: self.tcp_socket = socket.socket(socket.af_inet, socket.sock_stream)
self.tcp_socket.connect(
(host, port)
)def
__del__
(self)
: self.tcp_socket.close(
)def
recvline
(self)
:return self.recvuntil(
'\n'
)def
recv_n
(self, n)
:return self.tcp_socket.recv(n)
.decode(
'utf8'
)def
recvuntil
(self, want_end_str)
: current_str =
''while
true
: current_str += self.recv_n(1)
if current_str.endswith(want_end_str)
:return current_str
defrecvuntil_re
(self, want_re_str)
: current_str =
''while
true
: current_str += self.recv_n(1)
s = re.search(want_re_str, current_str)
if s:
return
[current_str, s]
defsend
(self, send_str)
: final_bytes = send_str.encode(
'utf8'
) self.tcp_socket.send(final_bytes)
defsendline
(self, send_str)
: self.send(send_str+
'\n'
)def
interact
(self)
:def
recv_loop()
:while
true
: c = self.recv_n(1)
# print 寫到控制台會有延時,直接用系統io寫
sys.stdout.write(c)
sys.stdout.flush(
)def
send_loop()
:while
true
: send_str =
input()
self.sendline(send_str)
recv_thread = thread(target=recv_loop)
send_thread = thread(target=send_loop)
recv_thread.start(
) send_thread.start(
) recv_thread.join(
) send_thread.join(
)si = socketinteraction(
'127.0.0.1'
,9999
)for i in
range(2
):content = si.recvuntil_re(r'input (\d+): '
)print
(content[0]
) num = content[1]
.group(1)
print
(repr
(num)
) si.sendline(num)
content = si.recvline(
)print
(content)
自動化測試 引言 自動化之我見
作為開篇,這裡先簡單介紹一下個人情況 本人非計算機專業的本科畢業,從事軟體測試工作一年多了,同樣的,接觸自動化測試領域也有一年了,打算開個部落格把我在工作中所學到與自動化測試有關的東西分享出來。好啦,下面開始說正題 自動化測試自身就是乙個很大的概念。逛過一些測試論壇的童鞋應該會知道qtp和loadr...
自動化測試 web自動化測試
自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...
測試自動化 自動化測試的定義
相關術語 automated testing test tool,automated testing test suite,automated testing test script等.具體參見 http en.wikipedia.org wiki test automation 推薦書籍 1 軟體...