python socket自動化互動

2021-10-09 17:48:57 字數 3873 閱讀 5105

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 軟體...