我已经使用python unittest了很多,有一个装饰器方法可以用来有条件地跳过这样的测试:
import unittest
class TestStringMethods(unittest.TestCase):
@unittest.skipIf(1 == 1, 'Skipped because 1 does indeed equal 1')
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
虽然我想向unittest.TestCase类添加一些功能,所以我将其子类化以开始添加自己的自定义代码:
import unittest
class CustomTestCase(unittest.TestCase):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # Just use whatever is in TestCase's init + our stuff
self.foo = 'foo' # our stuff
self.bar = 'bar'
def mymethod(self, param1, param2): # Some custom method I wanted to make for these custom test cases
pass
要继续使用@unittest.skipIf
,我一直将import unittest
粘贴在所有CustomTestCase
测试文件的顶部,但是我想知道这是否是正确的处理方式。我的进口量超出了我的需求吗?还是我什么都不担心?
答案 0 :(得分:1)
您继承的事实与您的要求无关。通常,子类可以导入或使用其超类很好:实际上,它们在定义时必须必须导入。这是问题的另一种解决方法(超类不应该知道其子类)。
继续使用@ unittest.skip如果我一直坚持导入 unittest位于任何CustomTestCase测试文件的顶部,但是我 想知道那是否是做事的正确方法。我要进口吗 比我需要的还要多?
如果要使用unittest
模块(包括skipIf
装饰器)之外的任何属性,则必须将其导入相关模块。没有比这更复杂的了。
如果您担心标头后卫之类的东西,例如C / C ++开发所需的东西,请不必担心。它不能像#include
预处理程序指令那样工作(也就是说,它实际上并未在文件中包含unittest
模块的源代码)。
如果您担心导入unittest
太多次,请不要这样做。将import
之类的模块unittest
分解到给定项目的许多不同模块中是非常普遍的。
还是我什么都不担心?
是的。只要需要import unittest
,就不用担心!
HTH。