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

 

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