繼上一篇commonlib的介紹,下面我們來介紹一下框架裏接口測試用例的編寫,
首先,我建議將接口按功能模塊劃分,每個大的功能模塊,單獨建一個包,這樣方便用例的維護。
一 測試用例的命名
首先用例以test_xxx.py命名,當然你也可以隨便命名,但是爲了用例的統一管理,建議統一命名~
二 測試用例的組成
之前博客也說過,接口最重要的兩個參數,
1:接口地址
self.url = api_data['XXX'] # 獲取接口名稱
confighttp.set_url(self.url) # 將接口名稱傳給http配置文件中
接口地址的組成在初始化方法中獲取,調用testdata中api_data的字典,獲取字典中XXX的值,即是接口的參數,然後將接口參數傳給set_url方法,拼接接口地址的頭部信息,這個頭部信息組成方法在上一篇博客中已經分享。https://blog.csdn.net/weixin_43574761/article/details/106192527
2:報文
data = {
"xxxxx"
}
接口報文,我們直接將抓到的接口報文,放到data參數中即可,然後調用requests的post方法即可,如果你是get方法,則使用confighttp.get()即可。
下面是完整的demo,XXX自行根據實際接口替換
# coding=utf-8
"""
作者:vissy@zhu
"""
import unittest
from commonlib.confighttp import ConfigHttp
from testdata.api_data import api_data
from testdata.common_data import common_data
from commonlib.connectdb import connectdb
confighttp = ConfigHttp()
# @unittest.skip('該用例線下接口不通,跳過')
class Test_XXXXX(unittest.TestCase):
'''
xxxxxx
'''
def __init__(self, *args, **kwargs):
super(Test_XXXXX, self).__init__(*args)
self.url = api_data['XXX'] # 獲取接口名稱
confighttp.set_url(self.url) # 將接口名稱傳給http配置文件中
def test_xxxx(self):
data = {
"xxxxx"
}
confighttp.set_data(data)
self.response = confighttp.post().json()
self.check_result()
def check_result(self):
connect = connectdb()
conn = connect[0]
cc = connect[1]
cc.execute("SELECT * FROM user WHERE user_id=%s" % self.user_id) # 查詢
result = cc.fetchall() # 獲得數據庫查詢結果
conn.commit()
conn.close()
# 結果驗證
self.assertEqual(self.response['responseStatus']['errorcode'], 0, '接口連接錯誤')
self.assertEqual(self.response['basic']['name'], result[0][7], '用戶名錯誤')
特別說明
1:測試方法必須以test開頭,是因爲unittest默認尋找test開頭的方法,當然,如果你想自定義,也是可以的,改一下源碼裏的默認值即可。不建議改哈,瞭解即可,無關緊要的東西。路徑(我的是mac電腦)/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py,
2:check_result(self)是否需要數據庫連接,自己選擇,不需要的話,全部拿掉
3:結果驗證,一般常用的方法有:
assertEqual,判斷兩個參數值是否相等 assertLessEqual,判斷第一個參數值是否小於等於第二個參數值 assertIn,判斷第一個參數是否存在於第二個參數中
4:接口的返回的數據驗證由你根據實際接口來判斷,你可以驗證多條,也可以驗證一條
5:如果同一個接口,需要多條測試用例驗證,你可以在同一個測試類下面,定義多個方法來,比如:def test_a(self): def test_aa(self):,每個方法中,輸入不同的請求報文即可。
6:如果某個用例需要跳過,那麼在測試類或測試方法上面加上,這樣在執行用例的時候,該接口下的用例,會直接跳過。
@unittest.skip('該用例線下接口不通,跳過')
至於測試用例中引用了testdata裏的數據,而數據是如何組成的和調用的,下一篇博客將繼續分享~
大家如有任何問題,可以加我的微信:zx1187463903,拉你進軟測的微信羣,一起學習討論。
如果該篇博客,對你有幫助,開心的同時請美女小編喝杯咖啡也是極好的呀。-_-