Reputation: 41655
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
Upvotes: 0
Views: 235
Reputation: 41655
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.
Upvotes: 0
Reputation: 7907
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.
Upvotes: 0
Reputation: 13078
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')
Upvotes: 0