python unittest框架裏@unittest.skipif()中使用全局變量,判斷測試用例是否需要跳過

應用場景:全局變量status爲一直變動的變量,測試用例是否執行需要判斷status的值
設置全局變量的幾種方法,可以參考:
https://blog.csdn.net/chenmozhe22/article/details/81302780

[email protected]()裏面,可以在每個測試用例裏面變更的變量

import unittest


class AlienTest(unittest.TestCase):
    globals()['status'] = 200          # 位置一

    @classmethod
    def setUp(self):
        self.url = "http://www.baidu.com"
        # globals()['status'] = 200    # 位置二

    def test_1_alien(self):
        # globals()['status'] = 200    # 位置三
        print("test_1_status:", globals()['status'])

    def test_2_alien(self):
        globals()['status'] = 404
        print("test_2_status", globals()["status"])

    @unittest.skipIf(globals()['status'] != 500, "status不爲500,跳過測試用例")
    def test_3_alien(self):
        print("test_3_status:", globals()['status'])


if __name__ == '__main__':
    unittest.main()

test_1_status: 200
test_2_status 404
Skipped: status不爲500,跳過測試用例

這種方式只有位置一可以test_3_alien(),位置二、位置三,都不行

[email protected]()裏面,不能在每個測試用例裏面變化的變量


import unittest

class AlienTest(unittest.TestCase):
    status = 200                    # 位置一

    @classmethod
    def setUpClass(cls):
        cls.url = "http://www.baidu.com"
        # cls.status = 200          #位置二

    def test_1_alien(self):
        # self.status = 200         #位置三
        print("test_1_status:", self.status)

    def test_2_alien(self):
        self.status = 404
        print("test_2_status", self.status)

    @unittest.skipIf(status == 200, "status爲200,跳過測試用例")
    def test_3_alien(self):
        print("test_3_status:", self.status)


if __name__ == '__main__':
    unittest.main()
test_1_status: 200
test_2_status 404
Skipped: status爲200,跳過測試用例

1.只有位置一、test_3_alien()測試用例裏面的status纔可以獲取到全局變量,位置二、位置三都不行
2.通過這種方式雖然可以設置全局變量並在unittest.skip()裏面使用,但是這個變量不能在每個測試用例裏面更改。

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