Python中文
首页
教程
问答
标签
搜索
登录
注册
在python unittest中双重继承TestCase类时如何避免属性错误?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有以下构造,其中我从<code>unittest.TestCase</code>派生一个类,在这个构造中,调用了在实际测试类<code>MyTests</code>中定义的方法。在</p> <pre><code>import unittest class TestCase1(unittest.TestCase): @classmethod def setUpClass(cls): print cls.extra() class TestCase2(TestCase1): @classmethod def setUpClass(cls): TestCase1.setUpClass() class MyTests(TestCase1): @classmethod def extra(cls): return 42 def test1(self): pass if __name__ == '__main__': unittest.main() </code></pre> <p>上面的代码,就目前的情况来看,是按预期工作的。当我执行测试时,运行<code>TestCase1</code>的<code>setUpClass</code>,它执行<code>MyTests</code>中定义的<code>extra()</code>。在</p> <p>当我想使用<code>TestCase2</code>而不是<code>TestCase1</code>时,即当我将以下行中的“1”更改为“2”时,问题就出现了:</p> ^{pr2}$ <p>其思想是调用<code>TestCase2</code>的<code>setUpClass</code>,它本身从基类调用{<cd3>},即<code>TestCase1</code>,它执行方法<code>extra</code>。但是,我得到一个属性错误:</p> <pre><code>AttributeError: type object 'TestCase1' has no attribute 'extra' </code></pre> <p>我好像误解了一些概念。我希望我的代码在这两种情况下都能正常工作(可能有一些错误),或者在两种情况下都失败。如果您有任何想法,这里可能有什么问题,或者我如何解决问题,我们将不胜感激。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我强烈建议使用<a href="https://stackoverflow.com/questions/576169/understanding-python-super-and-init-methods">super</a>而不是<code>TestCase1.setUpClass()</code>。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
3 回答
无法使用Django\u mssql\u后端迁移到外部hos
2 回答
无法使用Django&Python3.4连接到MySql
7 回答
无法使用Django+nginx上载媒体文件
5 回答
无法使用Django1.6导入名称模式
1 回答
无法使用Django1.7和mongodb登录管理站点
1 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
10 回答
无法使用Djangockedi验证CBV中的字段
5 回答
无法使用Djangocketditor上载图像(错误400)
9 回答
无法使用Djangocron进行函数调用
5 回答
无法使用Djangofiler djang上载文件
2 回答
无法使用Djangokronos
2 回答
无法使用Djangomssql provid
5 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
3 回答
无法使用Djangomssq迁移Django数据库
8 回答
无法使用Djangonox创建用户
5 回答
无法使用Djangopyodb从Django查询SQL Server
10 回答
无法使用Djangopython3ldap连接到ldap
7 回答
无法使用Djangoredis连接到redis
3 回答
无法使用Django中的FK创建新表
1 回答