九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
接口自動(dòng)化

一、自動(dòng)化分類 

(1)接口自動(dòng)化 > python/java+requests+unittest框架來(lái)實(shí)現(xiàn) > python/java+RF(RobotFramework)框架來(lái)實(shí)現(xiàn)——對(duì)于編程要求不高 

(2)Web UI功能自動(dòng)化 > python/java+selenium+unittest+ddt+PO框架來(lái)實(shí)現(xiàn) > python/java+RFS(RobotFrameWork+Selenium)框架來(lái)實(shí)現(xiàn)——對(duì)于編程要求不高 

(3)App自動(dòng)化 > python/java+appnium+unittes框架來(lái)實(shí)現(xiàn) > python/java+RF(RobotFramework)框架來(lái)實(shí)現(xiàn)——對(duì)于編程要求不高 

二、接口自動(dòng)化與Web自動(dòng)化的區(qū)別 

(1)接口自動(dòng)化是沒(méi)有界面的,不需要對(duì)界面元素定位操作,不需要考慮界面延遲的問(wèn)題,執(zhí)行效率更高 

(2)接口自動(dòng)化用的是requests測(cè)試庫(kù),Web自動(dòng)化用的selenium測(cè)試庫(kù)  

(3)接口自動(dòng)化的覆蓋率可以達(dá)到100%(絕大部分的接口都可以實(shí)現(xiàn)自動(dòng)化) 

Web自動(dòng)化的覆蓋率能達(dá)到80-90%算OK(可能會(huì)有某些功能是沒(méi)辦法實(shí)現(xiàn)自動(dòng)化的) 

三、怎么做接口自動(dòng)化 

3.1、流程 A. 確定業(yè)務(wù)范圍,哪些業(yè)務(wù)功能的接口可以做自動(dòng)化——接口自動(dòng)化的覆蓋率可以達(dá)到 100% B. 時(shí)間進(jìn)度安排,人員分配 C. 確定自動(dòng)化測(cè)試框架 D. 準(zhǔn)備數(shù)據(jù)——準(zhǔn)備接口用例數(shù)據(jù) E. 編寫(xiě)接口自動(dòng)化腳本 

3.2、搭建接口自動(dòng)化測(cè)試環(huán)境 

1、安裝python3.x——配置python的環(huán)境變量 

2、安裝PyCharm——python開(kāi)發(fā)工具 

3、安裝測(cè)試庫(kù) Requests庫(kù)—— 提供了豐富的用來(lái)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理的API函數(shù) xlrd,xlwt庫(kù)—— 提供了對(duì)Excel文件進(jìn)行操作的API函數(shù) Pymysql庫(kù)—— 提供了對(duì)Mysql數(shù)據(jù)庫(kù)進(jìn)行操作的API函數(shù) paramsunittest庫(kù)—— 實(shí)現(xiàn)參數(shù)化的庫(kù) Json庫(kù)—— 提供了對(duì)Json格式的數(shù)據(jù)進(jìn)行操作的API函數(shù)(python自帶的基礎(chǔ)庫(kù)) Re庫(kù)—— 可以使用這個(gè)庫(kù)中的API函數(shù)對(duì)HMTL數(shù)據(jù)進(jìn)行操作 

4.3、準(zhǔn)備數(shù)據(jù)——準(zhǔn)備接口用例數(shù)據(jù) 我們把接口用例數(shù)據(jù)放入在Excel表格中,因?yàn)槊恳粋€(gè)接口都包含:請(qǐng)求地址,請(qǐng)求方式,請(qǐng)求參數(shù),以及響應(yīng)數(shù)據(jù);所以在Excel表格中按照以下方式來(lái)組織我們的接口用例數(shù)據(jù),包含以下幾個(gè)內(nèi)容: 用例名稱,請(qǐng)求地址,請(qǐng)求方式,請(qǐng)求頭,請(qǐng)求參數(shù),預(yù)期結(jié)果(斷言) 然后我們會(huì)封裝一個(gè)函數(shù)去讀取Excel數(shù)據(jù),以參數(shù)的形式傳遞到腳本中,具體操作步驟如下: 

4.4、編寫(xiě)自動(dòng)化測(cè)試腳本

1、步驟:
    A、導(dǎo)包import requests
    B、組織請(qǐng)求參數(shù)url = 'http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’par = {   
         'email’: 'Jason’,   
         'user_pwd’: 'TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==',    
        'auto_login’: 0,   
        'ajax’: 1}
    C、發(fā)送請(qǐng)求res = requests.post(url, data=par)res = requests.get(url,params=par)
    D、提取響應(yīng)對(duì)象中的數(shù)據(jù),并做斷言1、提取響應(yīng)*body*內(nèi)容**
     res.text     —— 如果返回的是html格式的數(shù)據(jù),使用res.text提取`
     res.json()   —— 如果后臺(tái)返回的是json格式的數(shù)據(jù),則使用這個(gè)API函數(shù)來(lái)提取`2、提取響應(yīng)頭***
     res.headers3、提取狀態(tài)碼,響應(yīng)信息
     res.status_code
     res.reason4、提取cookie值
     res.cookies()2、傳遞請(qǐng)求頭header = {
    'User-Agent’: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0’,
    'Accept’: 'application/xml’,}res = requests.post(url,data=par,headers=header)    3、傳遞cookie,token值
    通過(guò)請(qǐng)求頭來(lái)傳遞 —— 直接從瀏覽器上查看cookie值,并傳遞到后臺(tái)。header = {
    'Cookie’: 'PHPSESSID=3724b412550a557825da5528dd6198c6’                  }res = requests.post(url,data=par,***headers=heade***r,allow_redirects=False) 
    發(fā)請(qǐng)求的時(shí)候通過(guò)cookies這個(gè)參數(shù)來(lái)傳遞import requests#1. 登錄,獲取cookie值def getCookie():
    url = 'http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’
    par = {
        'email’: 'Jason’,
        'user_pwd’: 'TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==',
        'auto_login’: 0,
        'ajax’: 1
    }
    res = requests.post(url, data=par)
    return res.cookies#2. 調(diào)用充值接口#2.1 獲取cookie值cookie = getCookie()#2.2 發(fā)充值請(qǐng)求url = 'http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’par = {
    'check_ol_bl_pay’:’on’,
    'money’:1000,
    'bank_id’:0,
    'memo’:234567890,
    'payment’:5,}#發(fā)充值請(qǐng)求res1 = requests.post(url,data=par,cookies=cookie,allow_redirects=False)            # 自動(dòng)重定向的,可以取消自動(dòng)重定向print(res1.status_code)print(res1.reason)print(res1.headers)
    先創(chuàng)建一個(gè)session對(duì)象,所有請(qǐng)求都使用這個(gè)session對(duì)象來(lái)發(fā)送import requests#1. 發(fā)登錄請(qǐng)求url = 'http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’par = {
    'email’: 'Jason’,
    'user_pwd’: 'TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==',
    'auto_login’: 0,
    'ajax’: 1}#創(chuàng)建一個(gè)seesion對(duì)象,后期使用這個(gè)session對(duì)象來(lái)發(fā)請(qǐng)求ses = requests.session()#發(fā)登錄請(qǐng)求,返回的cookie值會(huì)自動(dòng)化保存到session對(duì)象中response1 = ses.post(url,data=par)#2. 發(fā)充值請(qǐng)求url = 'http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’par = {
    'check_ol_bl_pay’:’on’,
    'money’:1000,
    'bank_id’:0,
    'memo’:234567890,
    'payment’:5,}response2 = ses.post(url,data=par,allow_redirects=False)print(response2.headers)

4.5、工程管理維護(hù)與優(yōu)化 

1、數(shù)據(jù)驅(qū)動(dòng)——實(shí)現(xiàn)接口用例數(shù)據(jù)與腳本的分離 我們把接口用例數(shù)據(jù)放入在Excel表格中,因?yàn)槊恳粋€(gè)接口都包含:請(qǐng)求地址,請(qǐng)求方式,請(qǐng)求參數(shù),以及響應(yīng)數(shù)據(jù);所以在Excel表格中按照以下方式來(lái)組織我們的接口用例數(shù)據(jù),包含以下幾個(gè)內(nèi)容: 用例名稱,請(qǐng)求地址,請(qǐng)求方式,請(qǐng)求頭,請(qǐng)求參數(shù),預(yù)期結(jié)果(斷言) 然后我們會(huì)封裝一個(gè)函數(shù)去讀取Excel數(shù)據(jù),以參數(shù)的形式傳遞到腳本中,具體操作步驟如下:

    安裝xlrd庫(kù)
    pip install xlrd
    調(diào)用xlrd庫(kù)中的API函數(shù)來(lái)實(shí)現(xiàn)對(duì)Excel表格數(shù)據(jù)的讀取#封裝一個(gè)讀取Excel表格數(shù)據(jù)的函數(shù)#對(duì)Excel表格數(shù)據(jù)的讀取需要用到一個(gè)庫(kù)——xlrd庫(kù)import xlrddef get_data(filename,sheetname):
    #1. 打開(kāi)Excel文件
    workbook = xlrd.open_workbook(filename)    
    #2. 打開(kāi)Excel文件中的某張表
    sheet = workbook.sheet_by_name(sheetname)   
    #3. 讀取表中的內(nèi)容
    list = []
    for I in range(1,sheet.nrows):
        data = sheet.row_values(i)
        list.append(data)  
    return listif __name__=='__main__’:
    result = get_data('D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例數(shù)據(jù).xls’,’登錄’)
    print(result)
    問(wèn)題解決1工程問(wèn)題:
    1、沒(méi)有安裝xlrd
    2、沒(méi)有把xlrd導(dǎo)入工程

2、*unittest*框架 作用:用來(lái)管理用例,加載用例,執(zhí)行用例 原理:有幾個(gè)核心組件

 1、測(cè)試固件 setUp() 每條用例執(zhí)行之前,首先會(huì)執(zhí)行這個(gè)setUp()方法,在setUp()方法中完成準(zhǔn)備初始化工作 比如:連接數(shù)據(jù)庫(kù),后期在將Web UI功能自動(dòng)化的時(shí)候,可以在這里去打開(kāi)瀏覽器,配置 tearDown() 每條用例執(zhí)行完成之后,回收一些資源,比如:關(guān)閉數(shù)據(jù)庫(kù),關(guān)閉瀏覽器 

2、測(cè)試用例 每一條用例需要實(shí)現(xiàn)一個(gè)用例方法,每個(gè)用例方法都必須要以test開(kāi)頭 

3、測(cè)試套件 執(zhí)行用例的時(shí)候,需要?jiǎng)?chuàng)建測(cè)試套件,把用例加入測(cè)試套件。 

4、加載器 用來(lái)加載用例的,把測(cè)試用例加入測(cè)試套件中 

5、執(zhí)行器 用來(lái)執(zhí)行測(cè)試套件中的用例的 如何使用unittest框架來(lái)編寫(xiě)用例

#1. 導(dǎo)包import timeimport unittestimport requestsfrom common.excelUtils import get_dataimport paramunittest#讀取excel表格中的數(shù)據(jù)list = get_data('D:\\JMeter\\1947_Project\\cxy-project02\\data\\接口用例數(shù)據(jù).xls’,’登錄’)#2. 定義一個(gè)類,去繼承unittest.TestCase@paramunittest.parametrized(*list)                  # 引用list中的所有數(shù)據(jù)class FwLogin(unittest.TestCase):
    def setParameters(self,case_name,url,method,headers,params,assert_info):
        '’’
        有多少條用例,這個(gè)函數(shù)就會(huì)執(zhí)行多少次,每執(zhí)行一條用例之前先會(huì)執(zhí)行這個(gè)函數(shù),把數(shù)據(jù)提取出來(lái)。
        :param case_name:
        :param url:
        :param method:
        :param headers:
        :param params:
        :param assert_info:
        :return:
        '’’
        self.case_name = str(case_name)
        self.url = str(url)
        self.method = str(method)
        self.headers = str(headers)
        self.params = str(params)
        self.assert_info = str(assert_info)
    #1. 實(shí)現(xiàn)一個(gè)用例方法
    def test_login_case(self):
        time.sleep(5)
        #1. 組織參數(shù)
        self.headers= eval(self.headers)                # 將字符串轉(zhuǎn)化為字典
        self.params = eval(self.params)
        #2. 發(fā)請(qǐng)求
        if self.method == 'POST’:
            response = requests.post(self.url,data=self.params,headers=self.headers)
        else:
            response = requests.get(self.url,params=self.params,headers=self.headers)
        #3. 檢查,斷言
        self.check_result(response)
    def check_result(self,response):
        '’’
        斷言  檢查結(jié)果的
        :param response:
        :return:
        '’’
        self.assert_info = eval(self.assert_info)           #預(yù)期結(jié)果
        try:
            self.assertEqual(response.status_code,200,’響應(yīng)狀態(tài)碼錯(cuò)誤’)
            self.assertEqual(response.reason,’OK’,’響應(yīng)的響應(yīng)碼錯(cuò)誤’)
            self.assertDictEqual(response.json(),self.assert_info,’響應(yīng)的正文內(nèi)容不一致!’)
            print('%s測(cè)試用例通過(guò)!’ %self.case_name)
        except AssertionError as e:
            print('%s測(cè)試用例不通過(guò)!%s’ %(self.case_name,e))
 if __name__ == '__main__’:
    unittest.main()
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python自動(dòng)化測(cè)試—Python自動(dòng)化框架及工具
unittest自動(dòng)化測(cè)試框架
你的自動(dòng)化框架如何設(shè)計(jì)的?為什么感覺(jué)面試官總是不滿意,到底問(wèn)題出在哪?
記一次面試經(jīng)歷 · TesterHome
自動(dòng)化測(cè)試平臺(tái)(十三):接口自動(dòng)化框架與平臺(tái)對(duì)比及應(yīng)用場(chǎng)景分析及設(shè)計(jì)思路分享
業(yè)內(nèi)人士真心話,軟件測(cè)試是沒(méi)有前途的,我慌了......
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服