python+unittest+requests實現接口自動化的方法

這篇文章主要介紹了python+unittest+requests實現接口自動化的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言:

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-8
import requests
import unittest

class 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):
    pass


if __name__ == "__main__":

  unittest.main() 

2.post接口測試用例源碼

# coding:utf-8
import requests
import json
import unittest
class 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):

    pass

if __name__ == "__main__":

  unittest.main()   

3.執行測試用例源碼

# coding=utf-8
import unittest
import HTMLTestRunner
import 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) 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章