如何调用函数并更改变量

时间:2010-01-20 11:09:42

标签: python inheritance variables

我在测试几个响应时多次调用一个函数。我问的是如何在程序中更早地调用函数,更改此函数中的变量然后调用它。下面是代码片段。

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'变量,然后运行此函数。有谁知道怎么做?

感谢您的帮助

4 个答案:

答案 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()函数中声明了变量。我删除了这个,后来在代码中更改了变量。代码将以这种方式工作,谢谢。