python接口自動化9-ddt數據驅動


前言

ddt:數據驅動,說的簡單一點,就是多組測試數據,比如點點點的時候登錄輸入正常、異常的數據進行登錄。

實際項目中,自動化測試用得很少,但也有人用excel來維護測試數據

一、ddt

1、安裝:pip install ddt (我這里已經安裝過了)

C:\Users\Administrator>pip install ddt
Requirement already satisfied: ddt in d:\path_python\lib\site-packages (1.2.1)

2、先看下我們以前正常登錄禪道的傳參。登錄需要賬號與密碼,現在只有一組數據,那么ddt就可以做到多組數據執行。(這里讓你自己來)

# 登錄
s = requests.session()
login_url = 'http://127.0.0.1/zentao/user-login.html'
pr = {
    'account': 'admin',
    'password': '123456',
}
login_r = s.post(login_url, params=pr)  # 傳 params 參數

# 斷言是否登錄成功
r1 = s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html')
if '產品主庫' in r1.content.decode('utf-8'):
    print('登錄成功')
else:print('登錄失敗')

 3、需導入ddt、unittest。

①首先得有多組的數據來源(我寫的是自己定義的一組json數據,也可以讀取文件,喜歡就好!!!)

②測試類,需要加上裝飾器:@ddt.ddt

③測試函數,也需要加上裝飾器且傳所有數據過來,*分別傳全部數據:@ddt.data(*test_data)

④注意:用到ddt的多組數據傳的是 data ,而不是 test_data,更不是 *test_data

import requests, ddt, unittest

# ddt數據驅動所需准備的數據
test_data = [
    {'account': 'admin', 'pwd': '123465', 'exp': 'admin'},
    {'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},
    {'account': 'xxxx', 'pwd': '654321', 'exp': 'xxxx'}, ]

# 類需要ddt裝飾器
@ddt.ddt
class Test_xl(unittest.TestCase):

    def setUp(self):
        self.s = requests.session()
        self.s.verify = False

    def tearDown(self):
        self.s.close()

    @ddt.data(*test_data)   # 某個用例需要用到ddt的測試數據
    def test_001(self, data):
        print('ddt測試數據是:%s' % data)

if __name__ == '__main__':
    unittest.main()                 # 告訴解釋器我是用unittest運行的!!!

4、怎樣對應取到想要的值呢?這好比返回的是dict、list,那一樣是可以取到的,不然就先學學基礎數據結構的新刪查改了。如下簡單提取:

import requests, ddt, unittest

# ddt數據驅動所需准備的數據
test_data = [
    {'account': 'admin', 'pwd': '123465', 'exp': 'admin'},
    {'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},]

# 類需要ddt裝飾器
@ddt.ddt
class Test_xl(unittest.TestCase):

    def setUp(self):
        self.s = requests.session()
        self.s.verify = False

    def tearDown(self):
        self.s.close()

    @ddt.data(*test_data)   # 某個用例需要用到ddt的測試數據
    def test_001(self, data):
        # print('ddt測試數據是:%s' % data)
        user = data['account']
        pwd = data['pwd']
        exp = data['exp']
        print('這是賬號:', user)
        print('這是密碼:', pwd)
        print('這是期望結果:', exp)

if __name__ == '__main__':
    unittest.main()                 # 告訴解釋器我是用unittest運行的!!!

如果想用excel維護測試用例、測試數據的同學那肯定要懂得使用 xlrd 這個模塊了。

進行適配的二次封裝,達到你想設計的自動化模式。歡迎來QQ交流群:482713805


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM