python - 重载 unittest.testcase 的 __init__

标签 python unit-testing

我想在继承自 unittest.testcase 的子类中添加两个变量

就像我有:

import unittest

class mrp_repair_test_case(unittest.TestCase):

     def __init__(self, a=None, b=None, methodName=['runTest']):
             unittest.TestCase.__init__(self)
             self.a= a
              self.b = b

     def test1(self):
           ..........
           .......

def runtest()
    mrp_repair_test_case(a=10,b=20)
    suite = unittest.TestLoader().loadTestsFromTestCase(mrp_repair_test_case)
    res = unittest.TextTestRunner(stream=out,verbosity=2).run(suite)

我怎样才能做到这一点: 我收到此错误:

ValueError: no such test method in ****<class 'mrp_repair.unit_test.test.mrp_repair_test_case'>:**** runTest

谢谢

最佳答案

乍一看,您似乎需要创建一个mrp_repair_test_case 实例。您当前的线路:

mrp_repair_test_case(a=10,b=20)

实际上什么都不做。

尝试(未测试):

def runtest():
    m = mrp_repair_test_case(a=10, b=20)
    suite = unittest.TestLoader().loadsTestsFromTestCase(m)
    res = unittest.TextTestRunner(stream=out, verbosity=2).run(suite)

这假设您已经将“out”设置为流。

编辑:

顺便问一下,您有什么理由不使用 setUp 方法来设置这些值吗?那将是正常的最佳做法。查看 loadTestsFromTestCase 的文档,它似乎只接受 Class 本身而不是它的实例,这意味着您宁愿反对 unittest 模块的设计。

编辑 2:

为了响应您的进一步信息,我实际上会在调用测试之前在模块级别分别设置您的 uid 和 cursor 值。我通常不是全局变量的忠实粉丝,但如果我对你的理解正确,这些值将是 A) 只读 B) 对于同一客户始终相同,这避免了使用它们时的大多数正常陷阱。

编辑 3:

要回答你的编辑,如果你真的想使用 __init__ 你可能可以,但你将不得不推出你自己的 loadsTestsFromTestCase 替代品,可能还有你自己的 TestSuite(你必须检查它是如何工作的内部结构)。正如我上面所说,您将与模块的现有设计背道而驰——在某种程度上,如果您决定以这种方式进行测试,那么从头开始完全推出您自己的解决方案可能比使用 unittest 更容易。 修改:刚刚检查过,您肯定必须推出自己的 TestSuite 版本,因为现有版本会为每个测试创建一个新的 TestCaseClass 实例。

关于python - 重载 unittest.testcase 的 __init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672520/

相关文章:

python - 将实例保存到数据库之前/之后是否触发了 Django post_save?

python - 字典键错误

python - 如何将通知编号添加到按钮图标?

unit-testing - 使用 xUnit 单元测试异常消息

c# - Rhino 模拟 - AssertWasCalled : How to improve unclear diagnostic message when incorrect arguments

PHPSpec:输出格式的配置

python - Robot Framework 中包含子目录的 Zip 目录

python - Django 模板 : overriding blocks of included children templates through an extended template

javascript - 如何使用 spyOn 测试异步函数?

ios - 单元测试中的属性为零