发布于2020-02-14 18:03 阅读(1469) 评论(0) 点赞(19) 收藏(2)
我使用unittest2
的Python2.5
发现与测试unittest.TestLoader.discover
,像这样的:
suite = unittest2.loader.TestLoader().discover(test_path)
unittest2.TextTestRunner(verbosity=2,
resultclass=ColorTestResult).run(suite)
对于test_path
我项目基础上的一些人
我有一个基类,它被许多其他类扩展和重载,但是我想测试一下这些派生类没有回归。让我们调用基类A
及其衍生物A1
,A2
等等。
我想创建一个unittest2.TestCase
可以为的每个派生类重载的基类A
。换句话说,我想要一个类似这样的层次结构:
class A:
pass
class A1(A):
pass
class UT(unittest2.TestCase):
target = A
class UT2(UT):
target = A1
现在的诀窍是,我正在A
进入一个抽象类,并且UT
实际上在所有适当通过的测试用例上都会失败UT2
,等等。
对我来说,最简单的解决方案似乎是让unittest2 discover
以某种方式“跳过” UT
。我认为将其放入除一个匹配模式“ test * .py”以外的文件中是可能的,尽管事实并非如此。
上述方案是否有合适的解决方案?
如果有任何想法和建议,我将不胜感激。
我猜测问题是UT2继承自UT,因此定义了UT2的模块会导入UT-从而使其在模块名称空间中可用。因此,即使发现未查看定义UT的模块,它仍然可以在UT2模块中找到TestCase。
使用基本的TestCases自己定义测试是一个普遍的问题。
有几种可能性。一种方法是通过函数公开UT,因此包含UT2的模块将直接导入该函数而不是UT:
class UT2(get_base_class()):
target = A1
可以使用super()访问UT上的属性。
另一个可能更好的解决方案是使UT也更加抽象。您可以在UT上忽略目标(因为它似乎没有任何作用?),如果没有目标(或者目标是A),请setUp调用skipTest。
一个第三个解决方案是有UT 不从TestCase的继承,而是把它作为一个mixin:
class UT2(TestCase, UT):
target = A1
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/231375/ba656b846918857361cb/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!