我在测试几个响应时多次调用一个函数。我问的是如何在程序中更早地调用函数,更改此函数中的变量然后调用它。下面是代码片段。
class AbsoluteMove(unittest.TestCase):
def Ssh(self):
p=pexpect.spawn('ssh user@10.10.10.10')
self.command = './ptzpanposition -c 0 -u degx10'
p.sendline("cd /bin")
i=p.expect('user@user-NA:')
p.sendline(self.command)
i=p.expect('user@-userNA:')
self.Value = p.before
class VerifyTilt(AbsoluteMove):
def runTest(self):
self.dest.PanTilt._y=2.0
try:
result = self.client.service.AbsoluteMove(self.token, self.dest, self.speed)
except suds.WebFault as detail:
print detail
self.command = './ptzpanposition -c 0 -u degx10'
AbsoluteMove.Ssh(self)
# Position of the camera verified through Ssh (No decimal point added to the Ssh value)
self.assertEqual(self.Value, '20')
我想在AbsoluteMove.Ssh()中更改'self.command'变量,然后运行此函数。有谁知道怎么做?
感谢您的帮助
答案 0 :(得分:1)
是否可以向Absolute Move添加另一个参数?
答案 1 :(得分:0)
你需要有一个runTest函数的包装器。请注意,我评论了self.command='./ptzpanposition -c 0 -u degx10'
runTest
class VerifyTilt(AbsoluteMove):
def testWrapper(self):
self.command = './ptzpanposition -c 0 -u degx10'
runTest()
self.command = 'some other command'
runTest()
def runTest(self):
self.dest.PanTilt._y=2
try:
result = self.client.service.AbsoluteMove(self.token, self.dest, self.speed)
except suds.WebFault as detail:
print detail
# self.command = './ptzpanposition -c 0 -u degx10'
AbsoluteMove.Ssh(self)
# Position of the camera verified through Ssh (No decimal point added to the Ssh value)
self.assertEqual(self.Value, '200')
答案 2 :(得分:0)
看起来是self.command只是一个字符串,因为AbsoluteMove.Ssh()不带任何参数,所以它必须以某种方式使用该字符串...,所以你可以只改变self.command的值。更好的设计将有两个命令,并且AbsoluteMove.Ssh()的参数可以在它们之间进行选择。
答案 3 :(得分:0)
抱歉浪费时间,
我在Ssh()函数中声明了变量。我删除了这个,后来在代码中更改了变量。代码将以这种方式工作,谢谢。