python unittest TestCase間共享資料(全域性變數的使用)
阿新 • • 發佈:2019-01-05
使用unittest模組進行單元測試,涉及到以下場景
例如對某個實體,測試方法有建立,更新,實體查詢,刪除
使用unittest進行單元測試,可以在建立時候記錄下返回的ID,在更新、刪除等操作的時候就根據這個新建立的ID進行操作,這就涉及到不同的TestCase之間共享資料。
最初我在class TestCase(unittest.TestCase):裡增加變數,執行建立時候設定值,但是發現在執行其他方法時候值被清空了,說明這種方法不可行。
最後只好定義全域性變數,但是在區域性用的時候需要使用globals()['newid'] 來操作全域性變數。
例如以下例子,建立時候獲取ID,並設定,然後get的時候直接測剛才生成的ID,測delete時候就可以把這條資料刪除掉了
newid = None class MonTemplateCase(unittest.TestCase): base = "http://localhost:8080/" def test_moncluster_temp_create(self): json = {"monitor_template":{"name":"testname1","desc":"desc2","dcid":"1","host_info":{"check_interval":"1","check_period":"5","max_check_attempts":"1","notification_interval":"1","notifications_enabled":"1","retry_interval":"1","contacts":"[1]"},"service_info":[{"id":"14","max_check_attempts":"1","notification_interval":"1","notifications_enabled":"1","retry_interval":"1","contacts":"[1]","check_period":"5","service_description":"CPU","check_command":"14!80 90","check_interval":"5"}]}} headers = {'content-type': 'application/json'} r = requests.post(self.base + "api/moncluster/template", data=simplejson.dumps(json),headers=headers) result = simplejson.loads(r.text) print "create result:", result if result['action'] is False: print result else: globals()['newid'] = result['data'] self.assertEqual(True, result['action']) def test_comcluster_temp_get(self): global newid if newid is None: raise Exception('id is none cannot get') f = urllib2.urlopen(self.base + "api/moncluster/template/%s" % str(newid)) result = simplejson.loads(f.read()) print "get result:",result self.assertEqual(True, result['action'])