【发布时间】:2014-09-24 20:18:57
【问题描述】:
我有一个可以使用 Nose 运行的测试套件。
我最近意识到我需要在我的整体 setUp() 中添加一些内容,这是由每个单独测试中发现的变量触发的(该变量由我们的版本控制系统更新)。
我已将__init__() 添加到我的 BaseTest.py 和我的个人测试中。但是,我得到ValueError: no such test method in <class 'my_test.check_error_test'>: runTest
从谷歌搜索来看,这似乎与单元测试加载器有关。但是鼻子以前总是照顾所有的装载机。
我猜这与我在 Nose 设置它之后触摸methodName 属性的事实有关,但我无法弄清楚我应该将它设置为什么,特别是因为我使用了各种 Nose 插件。或者也许有更好的方法。我需要做些什么不同的事情?
BaseTest.py
import unittest
class BaseTest(unittest.TestCase):
def __init__(self, methodName='runTest', p4rev=None):
super(BaseTest, self).__init__(methodName)
self.p4rev = p4rev
def setUp(self):
triggerSomething(p4rev)
My_test.py
from BaseTest import BaseTest
rev = '12345'
class CheckError_Test(BaseTest):
def __init__(self, rev):
super(CheckError_Test, self).__init__(p4rev=rev)
dosomething()
注意:如果我没有使用 super(BaseTest, self).__init__(methodName),我会收到错误消息:Attribute error: 'check_error_test' object has no attribute '_testMethodName'。因此它包含
澄清:一条评论建议重复帖子,但链接的帖子是关于如何运行测试的,而这篇帖子询问如何在运行时访问给定测试中的特定变量。
【问题讨论】:
-
如果
rev存在于My_test.py中,为什么不能将其作为全局变量访问,而不是尝试将其嵌入到测试类中? -
似乎会导致循环依赖。
Bast_Test类需要my_test.rev为其setUp()。但是my_test需要Bast_Test.setUp()才能运行...
标签: python nose nosetests python-unittest