日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python接口测试框架实战与自动化进阶(三)

發(fā)布時(shí)間:2023/12/13 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python接口测试框架实战与自动化进阶(三) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python接口測(cè)試框架實(shí)戰(zhàn)與自動(dòng)化進(jìn)階


?

?一、持續(xù)集成

?1、持續(xù)集成環(huán)境搭建

?1)安裝Jenkins

官網(wǎng)下載后直接安裝:https://jenkins.io/

?終端直接安裝及啟動(dòng):java -jar jenkins.war

2)Jenkins用于:

  • 持續(xù)、自動(dòng)地構(gòu)建/測(cè)試軟件項(xiàng)目。
  • l?監(jiān)控一些定時(shí)執(zhí)行的任務(wù)。

3)Jenkins擁有的特性包括:

  • l?易于安裝-只要把jenkins.war部署到servlet容器,不需要數(shù)據(jù)庫(kù)支持。
  • l?易于配置-所有配置都是通過(guò)其提供的web界面實(shí)現(xiàn)。
  • l?集成RSS/E-mail通過(guò)RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過(guò)e-mail通知。
  • l?生成JUnit/TestNG測(cè)試報(bào)告。
  • l?分布式構(gòu)建支持Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測(cè)試。
  • l?文件識(shí)別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等。
  • l?插件支持:支持?jǐn)U展插件,你可以開發(fā)適合自己團(tuán)隊(duì)使用的工具。

?4)Jenkins操作相關(guān)指令:

# Jenkins下載安裝完成后,在終端進(jìn)入安裝好的文件路徑,執(zhí)行所需指令: jenkins.exe start # 啟動(dòng) jenkins.exe stop # 停止 jenkins.exe restart # 重新啟動(dòng)

Jenkins啟動(dòng)后,在瀏覽器上輸入:127.0.0.1:8081 進(jìn)入Jenkins主頁(yè)面。

首次進(jìn)入:

到安裝目錄找到所需文件:E:Jenkins/secrets/initialAdminPassword ,雙擊打開,將里面密碼輸入到下面文中。

 

回車進(jìn)入下個(gè)頁(yè)面:安裝插件

完成后,進(jìn)入下個(gè)頁(yè)面,創(chuàng)建管理員用戶:

 

接著進(jìn)入實(shí)例配置頁(yè)面:

 


?

二、數(shù)據(jù)庫(kù)相關(guān)操作

?1、mysql相關(guān)

python3 的庫(kù)不再使用MySQLdb ,而改用pymyslq或mysqlclient。mysqlclient是MySQLdb升級(jí)版,在性能方面要比pymysql好的多,操作方面跟MySQLdb操不到

?安裝:

# python環(huán)境 pip install mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl

?

2、使用方式跟MySQLdb差不多?

1)連接對(duì)象(連接數(shù)據(jù)庫(kù))

import MySQLdb # 創(chuàng)建一個(gè)連接對(duì)象; conn = MySQLdb.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '123456',db = 'test',charset = 'utf8',compress = 1,connect_timeout = 1 )

?

2)connection對(duì)象

連接對(duì)象后,支持的方法:

#方法名 # 說(shuō)明 cursor() # 使用該連接創(chuàng)建并返回游標(biāo)對(duì)象 commit() # 提交當(dāng)前事務(wù) rollback() # 回滾當(dāng)前事務(wù) begin() # 開始一個(gè)事務(wù) close() # 關(guān)閉連接 # 創(chuàng)建一個(gè)游標(biāo)對(duì)象; cursor = conn.cursor() print(conn) print(cursor)# 關(guān)閉游標(biāo),關(guān)閉連接; cursor.close() conn.close()

?

3)cursor對(duì)象

游標(biāo)對(duì)象支持的方法:

# 參數(shù)名 # 說(shuō)明 execute(op[,args]) # 執(zhí)行一個(gè)數(shù)據(jù)查詢命令,返回影響行數(shù) fetchone() # 取的結(jié)果集的下一行 fetchmany(size) # 獲取結(jié)果集的下幾行 fetchall() # 獲取結(jié)果集中剩下的所有行 rowcount # 最近一次execute返回的行數(shù)或影響行數(shù) close() # 關(guān)閉游標(biāo)對(duì)象# execute方法:執(zhí)行SQL、將結(jié)果從服務(wù)端獲取到客戶端

 

創(chuàng)建表:

CREATE TABLE `user` (`userid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(100) COLLATE utf8_bin DEFAULT NULL,PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into user select 1,'user1'; insert into user select 2,'user2'; insert into user select 3,'user3'; insert into user select 4,'user4'; insert into user select 5,'user5'; insert into user select 6,'user6'; insert into user select 7,'user7'; insert into user select 8,'user8'; insert into user select 9,'user9';

?

測(cè)試:

import MySQLdbconn = MySQLdb.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '123456',db = 'test',charset = 'utf8',compress = 1,connect_timeout = 10 )cursor = conn.cursor()# 執(zhí)行SQL; sql = "select * from user" cursor.execute(sql)# 打印影響行數(shù)(數(shù)據(jù)就是返回?cái)?shù)據(jù)行數(shù)); rs = cursor.rowcount print("打印影響行數(shù):",rs)# 打印第一行的數(shù)據(jù); rs = cursor.fetchone() print("打印第一行的數(shù)據(jù):",rs)# 打印從第二行起的三行數(shù)據(jù); rs = cursor.fetchmany(3) print("打印從第二行起的三行數(shù)據(jù):",rs)# 打印剩下的所有行; rs = cursor.fetchall() print("打印剩下的所有行:",rs)cursor.close() conn.close()

?

運(yùn)行結(jié)果:

打印所有數(shù)據(jù)行數(shù): 9 打印第一行的數(shù)據(jù): (1L, u'user1') 打印從第二行起的三行數(shù)據(jù): ((2L, u'user2'), (3L, u'user3'), (4L, u'user4')) 打印剩下的所有行: ((5L, u'user5'), (6L, u'user6'), (7L, u'user7'), (8L, u'user8'), (9L, u'user9'))

?

注:MySQLdb還可以以Json格式輸出(DictCursor),要做到這點(diǎn)也很簡(jiǎn)單,那就是建立數(shù)據(jù)庫(kù)連接時(shí)傳遞cursorclass參數(shù),或者在獲取Cursor對(duì)象時(shí)傳遞cursorclass參數(shù)即可:?

conn = MySQLdb.connect( # 建立數(shù)據(jù)庫(kù)連接時(shí)傳遞cursors參數(shù)cursorclass=MySQLdb.cursors.DictCursor )

或者:?

cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)# 獲取cursor對(duì)象時(shí)傳遞cursorclass參數(shù)

?展示結(jié)果:

{'userid': 1L, 'username': 'user1'} {'userid': 2L, 'username': 'user2'}

再使用json.dumps()處理下,就變成json格式:?

{"userid": 1L, "username": "user1"} {"userid": 2L, "username": "user2"}

?

?


3、關(guān)于事務(wù)部分操作?

?對(duì)于MySQL來(lái)說(shuō),如果使用支持事務(wù)的存儲(chǔ)引擎,那么每次操作后,commit是必須的,否則不會(huì)真正寫入數(shù)據(jù)庫(kù),對(duì)應(yīng)rollback可以進(jìn)行相應(yīng)的回滾,但是commit后是無(wú)法再rollback的。commit可以在執(zhí)行很多sql指令后再一次調(diào)用,這樣可以適當(dāng)提升性能。

 

測(cè)試:

 編輯一個(gè)增刪改的腳本

?

import MySQLdb conn = MySQLdb.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '123456',db = 'test',charset = 'utf8',compress = 1,connect_timeout = 10 )cursor = conn.cursor() # 插入sql; sql_insert = "insert into user (userid,username) values (10,'user10')" # 更新sql; sql_update = "update user set username = 'name91' where userid=9" # 刪除sql; sql_delete = "delete from user where userid < 3"# 把一個(gè)事務(wù)放到一個(gè)try塊里,如果出現(xiàn)異常就回滾; try:# 開啟事務(wù); conn.begin()cursor.execute(sql_insert)print(cursor.rowcount)cursor.execute(sql_update)print(cursor.rowcount)cursor.execute(sql_delete)print(cursor.rowcount) # 最近執(zhí)行一次execute時(shí),返回的行數(shù) 或 受影響的行數(shù)# 提交事務(wù); conn.commit()# 格式化增刪改后的數(shù)據(jù)查出來(lái);select_sql = "select * from user"cursor.execute(select_sql)rs = cursor.fetchall()for row in rs:print("userid=%s, username=%s" % row)except Exception as e:# 若有異常就回滾; conn.rollback()cursor.close() conn.close()

?

?運(yùn)行結(jié)果:

1 1 2 userid=3, username=user3 userid=4, username=user4 userid=5, username=user5 userid=6, username=user6 userid=7, username=user7 userid=8, username=user8 userid=9, username=name91 userid=10, username=user10

?

如果需要批量插入數(shù)據(jù):

# 每個(gè)值的集合為一個(gè)tuple,整個(gè)參數(shù)集組成一個(gè)tuple或者list,然后使用executemany方法來(lái)批量的插入數(shù)據(jù) sql = "insert into user(userid,username) values(%s,%s)" param = ((100, 'user100'), (101, 'user101'), (102, 'user102') ) n = cursor.executemany(sql,param)

如果執(zhí)行的SQL需要使用傳參數(shù),就使用如下格式:

def test(table,field,value):sql="select %s from %s where %s = %s;" % (field,table,field,value)cursor.execute(sql)cursor.fetchall()

?

轉(zhuǎn)載于:https://www.cnblogs.com/Eric15/articles/9828062.html

總結(jié)

以上是生活随笔為你收集整理的python接口测试框架实战与自动化进阶(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。