在使用unittest過程中,發現有時候如果想在測試用例之間共享變量,無法直接實現。查詢之後發現解決方式如下:
(1)setup裏面的變量算全局變量,但TestCase裏面是局部變量
from settings import *
import requests,json
import unittest
class Login(unittest.TestCase):
@classmethod
def setUpClass(self):
api_token = '/v1/api/common/getToken'
self.real_token_url = API_TEST_BASE_URL + api_token
self.token = None
def test_get_token(self):
r = requests.post(url=self.real_token_url)
self.token = json.loads(r.text)['model']['token']
print("第一個case獲得的token:",self.token)
return self.token
def test_get_u(self):
print("第二個case獲得token值:",self.token)
if __name__ == '__main__':
unittest.main()
最終結果
第一個case獲得的token: 48579630472b45a0b0b553bc85a335f8
第二個case獲得token值: None
- 說明在unttest框架中,testcase中間不共享變量的值,但是都可以從setupclass裏面讀取統一的變量值
- 可以setup時候設置全局變量,不同的case之間就可以共享這個變量了
(2)TestCase之間共享全局變量,方式一:
from settings import *
import requests,json
import unittest
class Login(unittest.TestCase):
@classmethod
def setUpClass(self):
api_token = '/v1/api/common/getToken'
self.real_token_url = API_TEST_BASE_URL + api_token
globals()["token"] = None
def test_get_token(self):
r = requests.post(url=self.real_token_url)
globals()["token"] = json.loads(r.text)['model']['token']
print("第一個case獲得的token:",globals()["token"])
return globals()["token"]
def test_get_u(self):
print("第二個case獲得token值:",globals()["token"])
if __name__ == '__main__':
unittest.main()
最終結果爲:
第一個case獲得的token: 44c5fcccca6c4e64a1c5d314b7ee22fc
第二個case獲得token值: 44c5fcccca6c4e64a1c5d314b7ee22fc
(3)TestCase之間共享全局變量,方式二:
import unittest
class Mydemo(unittest.TestCase):
def test1(self):
Mydemo.a = "88"
print("test1----- the value of a is {}".format(self.a))
def test2(self):
print("test2----- the value of a is {}".format(Mydemo.a))
if __name__ == '__main__':
unittest.main()
最終結果:
test1----- the value of a is 88
test2----- the value of a is 88
我們運行test1的時候,給Mydemo加了一個新的屬性a(值爲88),
當我們運行test2時,我們就能拿到Mydemo類的屬性了
引用文章來源:
https://blog.csdn.net/happyteafriends/article/details/22728749
https://www.cnblogs.com/hhudaqiang/p/6596043.html