views:

95

answers:

4

Hello,

I am calling a function several times as I am testing several responses. I am asking on how I call a function earlier in the program, changing a variable in this function and then calling it. Below is a snippet of the code.

class AbsoluteMove(unittest.TestCase):

     def Ssh(self):

        p=pexpect.spawn('ssh [email protected]')
        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')

I want to change the 'self.command' variable in AbsoluteMove.Ssh() and then run this function. Does anyone know how to do this?

Thanks for any help

A: 

You'll need to have a wrapper for the runTest function. Notice that I commented the self.command='./ptzpanposition -c 0 -u degx10' in 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')
Matti
+1  A: 

is it doable to add another parameter to Absolute Move?

Dyno Fu
A: 

What it looks like is that self.command is just a string, and since AbsoluteMove.Ssh() takes no arguments it must use that string somehow..., so you could just change the value of self.command. A better design would have two commands, and an argument to AbsoluteMove.Ssh() to choose between them.

telliott99
A: 

Sorry for wasting time,

I had declared the variable in the Ssh() function. I removed this and the variables were changed later down the code. The code will work this way thanks.

chrissygormley
Please read "How do I ask questions here?" on this page: http://stackoverflow.com/faq
Jorenko