我有一个运行所有测试的模块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)为了运行这个测试,我执行了python 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次。
我在这里面临两个问题。我想要一个包含10个值的check列表。这样每次都会根据逻辑追加True或False。但是因为我从HWStatus运行SWStatus,所以每次check都会被初始化为空列表。所以即使我在做check.append(status),我也只得到了一个值。我该如何解决这个问题呢?
我的第二个问题是,有没有什么方法可以从我的HWStatus的work方法访问check列表,即使HWStatus不是从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发布于 2014-09-20 04:02:19
继承不会影响python中的成员可见性;python中的所有变量只要在词法范围内就是可见的。
但是,运行测试的方式(在单独的进程中)会创建不同的SWStatus.check副本。当您启动一个新进程时,您将创建一个单独的内存区来运行该进程。因此,在您的代码中创建了11个SWstatus.check变量副本,并且看不到其他副本。
我怀疑你想要做的是并行运行测试,在这种情况下,最好让测试返回它的状态作为退出状态……
import sys
if __name__ == 'main':
t = SWStatus()
sys.exit(not t.work())但是,如果您绝对需要所有测试在同一地址空间中运行,则可以使用线程而不是进程。但是,您需要使用诸如Queue之类的东西来协调对内存的并发访问。
https://stackoverflow.com/questions/25940092
复制相似问题