python unittest TypeError setUpClass missing 1 required positional argument cls

python unittest框架使用可以用兩種方法:

(1)所有內容寫在一個python文件裏

eg:https://blog.csdn.net/panyueke/article/details/85305223

(2)function與主框架隔離

eg:functions.py

def fun_div(x):
    return x/2
def fun_add(x):
    return x+2
def fun_minus(x):
    return x-2
def fun_multi(x):
    return x*2

 testFun.py

import unittest
from test.functions import fun_add,fun_minus,fun_multi,fun_div
 
 
class TestFun(unittest.TestCase):
    times = 0
 
    @classmethod
    def setUpClass(cls):
        print('setUpclass')
 
    def setUp(self):
        # 每個測試用例執行之前都會執行該方法
        TestFun.times += 1
        print('setUp', TestFun.times)
 
    def tearDown(self):
        # 每個測試用例執行之後都會執行該方法
        TestFun.times += 1
        print('tearDown', TestFun.times)
 
    def test1(self):
        # 測試用例1:fun_div
        # 使用unittest提供的斷言驗證functions中的函數的正誤
        # 如果不相等就會失敗
        self.assertEqual(2, fun_div(4))
        self.failUnlessEqual(2, 2)
 
        # 如果表達式爲False,測試失敗
        self.assertTrue(1 < 2)
        self.failUnless(2 == 2)
        # 如果兩個值相等,就會測試失敗
        self.assertNotEqual(2, 1)
    def test2(self):
        # 測試用例2:fun_add
         self.assertNotEqual(2, 1)
    def test2(self):
        # 測試用例2:fun_add
        self.assertTrue(fun_add(6) == 8)
    def test3(self):
        # 測試用例3:fun_minus
        self.assertNotEqual(6, fun_minus(6))
        self.assertEqual(4, fun_minus(6))
    def test4(self):
        # 測試用例4:fun_multi
        self.assertIsInstance(4, int)
        self.assertEqual(8, fun_multi(4))
    @unittest.skipIf(True, 'no')
    def test5(self):
        print('跳過!')
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
if __name__ == '__main__':
    # unittest.main()
    suit = unittest.TestSuite()
    suit.addTest(TestFun('test1'))
    suit.addTest(TestFun('test2'))
    suit.addTest(TestFun('test3'))
    suit.addTest(TestFun('test4'))
    runner = unittest.TextTestRunner()
    runner.run(suit)

過程中遇到的問題如下:

(1)問題:目錄如下,但是導其他python文件裏面的函數失敗

解決方案:

(2)問題:TypeError: setUpClass() missing 1 required positional argument: 'cls'

 解決方案:類方法添加@classmethod

 

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