我有一個運行所有測試的模塊testrun.py
。其中一個測試的是SWStatus
這樣訪問非繼承類的變量
class HWStatus(myTest):
check = []
def __init__(self):
super(SWStatus, self).__init__()
def setup(self):
return
def work(self):
"""
some functionality to calculate the value of i
i is either 10 or 20
"""
if i == 10:
status = True
else:
status = False
check.append(status)
要運行這個測試,我做的蟒蛇testrun.py SWStatus
,這讓我的結果。
我創建了HWStatus
測試,它將運行SWStatus
測試10次。
class HWStatus(myTest):
def __init__(self):
super(SWStatus, self).__init__()
def setup(self):
return
def work(self):
for i in xrange(10):
args = ['python', 'testrun.py', 'SWStatus']
p = subprocess.Popen(args)
while p.poll() != 0:
time.sleep(amount_of_time)
當我做testrun.py HWStatus
,它運行SWStatus
10倍。
我在這裏面臨2個問題。 我想擁有check
10個值的列表。這樣每次它將根據邏輯附加True
或False
。但是因爲我從HWStatus
開始運行SWStatus
,因此每次都會將check
初始化爲空列表。所以即使我在做check.append(status)
,我只得到一個值。我應該如何解決這個問題?
我的第二個問題是,有沒有什麼辦法,我可以從我的HWStatus
即使HWStatus
的work
方法訪問check
列表不從SWStatus
遺傳嗎?
我可以這樣做:
class HWStatus(myTest):
def __init__(self):
super(SWStatus, self).__init__()
def setup(self):
return
def work(self):
for i in xrange(10):
args = ['python', 'testrun.py', 'SWStatus']
p = subprocess.Popen(args)
while p.poll() != 0:
time.sleep(amount_of_time)
print "List of 10",check
您可以訪問'SWStatus.check',但這不會解決您的問題,因爲您正在運行10個獨立的子進程。除非您以某種方式保存外部數據或添加一些進程間通信代碼,否則您將無法訪問您想要的內容。這不是一個單獨的班級中的「檢查」問題;由於使用了子流程,它實際上是在一個單獨的程序中。是否有你使用子進程的原因,而不是僅僅讓'HWStatus'導入'SWStatus'並且調用它的測試方法10次? – BrenBarn 2014-09-19 18:22:16