python unittest TestCase間共享數據(全局變量的使用)

在使用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獲得的token48579630472b45a0b0b553bc85a335f8
第二個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獲得的token44c5fcccca6c4e64a1c5d314b7ee22fc
第二個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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章