I modified the guess.py file but am unable to run it, how do I go about writing tests for this.
import random guessesTaken = 0 number = random.randint(1, 10) intro = 'I have chosen a number from 1-10' request = 'Guess a number: ' responseHigh = "That's too high." responseLow = "That's too low." responseCorrect = "That's right!" goodbye = 'Goodbye and thanks for playing!' print(intro) def main(): while guessesTaken < 5: print(request) guess = input() guess = int(guess) guessesTaken = guessesTaken + 1 if guess < number: print(responseLow) if guess > number: print(responseHigh) if guess == number: break if guess == number: guessesTaken = str(guessesTaken) print(responseCorrect + '! You guessed my number in ' + guessesTaken + ' guesses!') if guess != number: number = str(number) print(goodbye + ' The number I was thinking of was ' + number) ##def main(): # print(intro) # user_input = raw_input(request) # print(responseHigh) # print(request) # user_input = raw_input(request) # print(responseLow) # user_input = raw_input(request) # print(responseCorrect) # print(goodbye) if __name__ == '__main__': main() On Thursday, September 26, 2013 9:37:39 PM UTC-4, wrote: > The question was more like what tests should I be writing, fine if I remove > the pexpect test I tried the test_guess & test_guesstoolow and still unable > to get it to work. So if i Want to ask for a number and typed a number which > is at random indicated by the top of the code, how do I proceed on with my > tests? > > > > On Thursday, September 26, 2013 9:16:32 PM UTC-4, Roy Smith wrote: > > > In article , > > > > > > wrote: > > > > > > > > > > > > > Initially I was shown pexpect, leaving that there, Can i make up 5 tests? > > > I > > > > > > > tried tests two different ways and no luck. What am I supposed to be > > > writing > > > > > > > up when I do a test and is there a particular way I can/should be > > > referencing > > > > > > > it back to its main file? > > > > > > > > > > > > I'm not sure I understand your question. Are you asking: > > > > > > > > > > > > Q1: "What tests should I be writing?" > > > > > > > > > > > > or > > > > > > > > > > > > Q2: "Once I know what I want to test, how do I implement those tests?" > > > > > > > > > > > > I'm guessing Q1, so that's what I'm going to base the rest of this post > > > > > > on. Before you cat write a test, you have to understand what your code > > > > > > is supposed to do. So, for example, let's say the specification for > > > > > > your program runs something like this: > > > > > > > > > > > > When you run the program, it will print, "I have chosen a number from > > > > > > 1-10", and then it will print, "Guess a number: ". It will then wait > > > > > > for input. When you type an integer, it will print either, "That's too > > > > > > high.", "That's too low.", or "That's right!". > > > > > > > > > > > > Now, let's look at one of your tests: > > > > > > > > > > > > def test_guessing_hi_low_4(self): > > > > > > > > > > > > # Conversation assuming number is 4 > > > > > > child = pe.spawn('python guess.py') > > > > > > child.expect(self.intro,timeout=5) > > > > > > child.expect(self.request,timeout=5) > > > > > > child.sendline('5') > > > > > > child.expect(self.responseHigh,timeout=5) > > > > > > child.sendline('3') > > > > > > child.expect(self.responseLow,timeout=5) > > > > > > child.sendline('4') > > > > > > child.expect(self.responseCorrect,timeout=5) > > > > > > child.expect(self.goodbye,timeout=5) > > > > > > > > > > > > It looks pretty reasonable up to the point where you do: > > > > > > > > > > > > child.sendline('5') > > > > > > child.expect(self.responseHigh,timeout=5) > > > > > > > > > > > > The problem is, you don't know what number it picked, so you can't > > > > > > predict what response it will have to an input of 5. This goes back to > > > > > > what I was saying earlier. You need some way to set the game to a known > > > > > > state, so you can test its responses, in that state, to various inputs. > > > > > > > > > > > > If you're going to stick with the pexpect interface, then maybe you need > > > > > > a command line argument to override the random number generator and set > > > > > > the game to a specific number. So, you can run: > > > > > > > > > > > > $ python guess.py --test 4 > > > > > > > > > > > > and now you know the number it has picked is 4. If you send it 5, it > > > > > > should tell you too high. If you send it 3, it should tell you too low. > > > > > > And so on. > > > > > > > > > > > > This is standard procedure in all kinds of testing. You need some way > > > > > > to set the system being tested to a known state. Then (and only then) > > > > > > can you apply various inputs and observe what outputs you get. This is > > > > > > true of hardware was well. Integrated circuits often have a "test > > > > > > mode", where you can set the internal state of the chip to some known > > > > > > configuration before you perform a test. -- https://mail.python.org/mailman/listinfo/python-list