Nosetests

melwin9 at gmail.com melwin9 at gmail.com
Thu Sep 26 21:37:39 EDT 2013


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.




More information about the Python-list mailing list