python+unittest+requests實現(xiàn)接口自動化的方法
前言:
Requests簡介
Requests 是使用Apache2 Licensed 許可證的 HTTP 庫。用 Python 編寫,真正的為人類著想。
Python 標(biāo)準(zhǔn)庫中的 urllib2 模塊提供了你所需要的大多數(shù) HTTP 功能,但是它的 API 有點落后了。它是為另一個時代、另一個互聯(lián)網(wǎng)所創(chuàng)建的。它需要巨量的工作,甚至包括各種方法覆蓋,來完成最簡單的任務(wù)。
總之,大家建議大家用Requests吧。
Requests的官方文檔:http://cn.python-requests.org/zh_CN/latest/
通過下面方法安裝requests
pip install requests
實例實現(xiàn)步驟:
1.采用unittest把每個接口寫成一個個測試腳本
2.一個測試腳本中包含一個接口,但是可以包含多個測試用例(即每個接口需要進(jìn)行多種情況的驗證,接口測試用例名稱已test開頭)
3.使用discover(),該方法會自動根據(jù)測試目錄匹配查找測試用例文件,并且將查找到的測試組裝到測試套件中,因此可以直接通過run()方法執(zhí)行discover,大大簡化了測試用例的查找和執(zhí)行
4.利用HTMLTestRunner生成測試報告
文檔結(jié)構(gòu):project項目文件下有以下三個文件

1.report存放測試結(jié)果
2.test_case存放測試用例
3.run_test_case.py執(zhí)行測試用例文件
案例:
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 = '..........' #根據(jù)實際接口,自己填寫
self.header = {'.......'} #根據(jù)實際內(nèi)容,自己填寫
def test_post_01(self):
"""正常數(shù)據(jù)"""
url=self.post_url
header = self.header
data = {""}#根據(jù)實際內(nèi)容,自己填寫
#將data序列化為json格式數(shù)據(jù),傳遞給data參數(shù)
r = requests.post(url, data=json.dumps(data), headers=header)
print r.text
def test_post_02(self):
"""異常數(shù)據(jù)"""
url=self.post_url
header = self.header
data = {""}#根據(jù)實際內(nèi)容,自己填寫
r = requests.post(url, data=json.dumps(data), headers=header)
print r.text
def tearDown(self):
pass
if __name__ == "__main__":
unittest.main()
3.執(zhí)行測試用例源碼
# 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')
# 定義帶有當(dāng)前測試時間的報告,防止前一次報告被覆蓋
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = test_dir1 + '/' + now + 'result.html'
# 二進(jìn)制打開,準(zhǔn)備寫入文件
fp = file(filename, 'wb')
# 定義測試報告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'測試報告', description=u'用例執(zhí)行情況')
runner.run(discover)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Python如何根據(jù)給定模型計算權(quán)值
這篇文章將通過一個簡單的例子,為大家展示Python如何根據(jù)給定的模型結(jié)構(gòu)來計算和提取權(quán)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
舉例講解Python的Tornado框架實現(xiàn)數(shù)據(jù)可視化的教程
這篇文章主要介紹了舉例講解Python的Tornado框架實現(xiàn)數(shù)據(jù)可視化的教程,Tornado是一個異步的高人氣開發(fā)框架,需要的朋友可以參考下2015-05-05
Python實現(xiàn)將Excel轉(zhuǎn)換成為image的方法
今天小編就為大家分享一篇Python實現(xiàn)將Excel轉(zhuǎn)換成為image的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
僅用50行Python代碼實現(xiàn)一個簡單的代理服務(wù)器
這篇文章主要介紹了僅用50行Python代碼實現(xiàn)一個簡單的代理服務(wù)器,利用最簡單的client->proxy->forward原理在socket模塊下編寫,需要的朋友可以參考下2015-04-04
pandas.DataFrame寫入數(shù)據(jù)庫的實現(xiàn)方式
這篇文章主要介紹了pandas.DataFrame寫入數(shù)據(jù)庫的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

