python+unittest+requests實現介面自動化

來源:互聯網
上載者:User

標籤:filename   python   安裝   相對   源碼   www   圖片   main   需要   

前言:

Requests簡介

Requests 是使用 Apache2 Licensed 許可證的 HTTP 庫。用 Python 編寫,真正的為人類著想。

Python 標準庫中的 urllib2 模組提供了你所需要的大多數 HTTP 功能,但是它的 API 有點落後了。它是為另一個時代、另一個互連網所建立的。它需要巨量的工作,甚至包括各種方法覆蓋,來完成最簡單的任務。

總之,大家建議大家用Requests吧。

Requests的官方文檔:http://cn.python-requests.org/zh_CN/latest/

通過下面方法安裝requests

pip install requests  

執行個體實現步驟:

1.採用unittest把每個介面寫成一個個測試指令碼
2.一個測試指令碼中包含一個介面,但是可以包含多個測試案例(即每個介面需要進行多種情況的驗證,介面測試案例名稱已test開頭)
3.使用discover(),該方法會自動根據測試目錄匹配尋找測試案例檔案,並且將尋找到的測試組裝到測試套件中,因此可以直接通過run()方法執行discover,大大簡化了測試案例的尋找和執行
4.利用HTMLTestRunner產生測試報告

文檔結構:project專案檔下有以下三個檔案

  1. report存放測試結果
  2. test_case存放測試案例
  3. run_test_case.py執行測試案例檔案
案例:

1.get介面測試案例源碼

# coding:utf-8import requestsimport unittestclass get_request(unittest.TestCase):    def setUp(self):        self.get_url = ‘https://www.baidu.com/‘    def test_post_01(self):        url=self.get_url        r = requests.get(url)        print r.text    def tearDown(self):        passif __name__ == "__main__":    unittest.main()

2.post介面測試案例源碼

# coding:utf-8import requestsimport jsonimport unittestclass post_request(unittest.TestCase):    def setUp(self):        self.post_url = ‘..........‘ #根據實際介面,自己填寫        self.header = {‘.......‘} #根據實際內容,自己填寫    def test_post_01(self):        """正常資料"""        url=self.post_url        header = self.header        data = {""}#根據實際內容,自己填寫        #將data序列化為json格式資料,傳遞給data參數        r = requests.post(url, data=json.dumps(data), headers=header)        print r.text    def test_post_02(self):        """異常資料"""        url=self.post_url        header = self.header        data = {""}#根據實際內容,自己填寫        r = requests.post(url, data=json.dumps(data), headers=header)        print r.text    def tearDown(self):        passif __name__ == "__main__":    unittest.main()    

3.執行測試案例源碼

# coding=utf-8import unittestimport HTMLTestRunnerimport time# 相對路徑test_dir =‘./test_case‘test_dir1 =‘./report‘discover = unittest.defaultTestLoader.discover(test_dir, pattern=‘test*.py‘)# 定義帶有當前測試時間的報告,防止前一次報告被覆蓋now = time.strftime("%Y-%m-%d %H_%M_%S")filename = test_dir1 + ‘/‘ + now + ‘result.html‘# 二進位開啟,準備寫入檔案fp = file(filename, ‘wb‘)# 定義測試報告runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u‘測試報告‘, description=u‘用例執行情況‘)runner.run(discover)

 

python+unittest+requests實現介面自動化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.