NO IMAGE

按理說unittest 中是不應該測試那種外部依賴很強的用例,但是呢,有時候有些介面總是除錯好之後怕忘了,就寫了一些簡單的測試case,想要通過在settings中增加一些配置來開啟和關閉這些case,這樣的話就可以在正常跑單元測試的時候隔離開這些不怎麼正規的測試用例。

環境
* Django1.8
* Python2.7.x

unittest 中提供了這麼一個裝飾器,用起來也很簡單。這裡是一個百度地圖的地理編碼API,只想在某些時候跑這個case。

在settings中 test 配置部分增加一個配置項

# 必須連線外網的測試, 偶爾使用, false是不跳過,也就是進行測試
SKIP_MAP_API = False

tests中類似這種設定

# coding:utf-8
import unittest
from django.conf import settings
from django.test import TestCase
from map.util import BaiduAPI
class BaiduMapTestCase(TestCase):
def setUp(self):
self.locs = [{'lon': 39.914888, 'lat': 116.403874}, {'lon': 38.914888, 'lat': 117.403874}]
# 就這個裝飾器
@unittest.skipIf(settings.SKIP_MAP_API, u'需要外網連線')
def test_fetch_geocode(self):
print '------ map testing -------'
b = BaiduAPI()
res = b.getcodeer(self.locs)
self.assertEqual(len(res), 2)

很簡單的東西,知道就好,這樣的話可以進行一些用例分組配置等。