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