python unittest TypeError setUpClass missing 1 required positional argument cls

本文介绍了在使用python unittest框架时遇到的两个问题:如何导入其他文件中的函数及如何处理setUpClass缺少参数'cls'的TypeError。提供了解决这两个问题的具体方法,包括在类方法上添加@classmethod装饰器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python unittest框架使用可以用两种方法:

(1)所有内容写在一个python文件里

eg:https://blog.youkuaiyun.com/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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值