Nosetests
melwin9 at gmail.com
melwin9 at gmail.com
Thu Sep 26 20:55:30 EDT 2013
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?
THis is what I have for the test_guess.py
from unittest import TestCase
import pexpect as pe
import guess as g
import random
random_number = random.randrange(1, 10)
correct = False
class GuessTest(TestCase):
def setUp(self):
self.intro = 'I have chosen a number from 1-10'
self.request = 'Guess a number: '
self.responseHigh = "That's too high."
self.responseLow = "That's too low."
self.responseCorrect = "That's right!"
self.goodbye = 'Goodbye and thanks for playing!'
def test_main(self):
#cannot execute main now because it will
#require user input
from guess import main
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)
def __init__(self):
self.number = random.randint(0,10)
HIGH = 1
LOW = 2
OK = 3
def guess(self, number):
if number > self.number:
return self.HIGH
if number < self.number:
return self.LOW
return self.OK
def test_guesstoolow(self):
while not correct:
guess = input("What could it be?")
if guess == random_number:
print "Congrats You Got It"
correct = True
elif guess > random_number:
print "To High"
elif guess < random_number:
print "To Low"
else:
print "Try Again"
and the guess.py file is
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!'
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 Wednesday, September 25, 2013 11:48:59 PM UTC-4, Roy Smith wrote:
> In article
>
> wrote:
>
>
>
> > Not sure How to proceed on with writing a few more tests with if statement to
>
> > test if the value is low or high. I was told to try a command line switch
>
> > like optparse to pass the number but not sure how to do that either.
>
>
>
> One thing I would recommend is refactoring your game to keep the game
>
> logic distinct from the I/O.
>
>
>
> If I was designing this, I would have some sort of game engine class,
>
> which stores all the state for a game. I imagine the first thing you
>
> need to do is pick a random number and remember it. Then, you'll need a
>
> function to take a guess and tell you if it's too high, too low, or
>
> correct. Something like:
>
>
>
> class NumberGuessingGame:
>
> def __init__(self):
>
> self.number = random.randint(0, 10)
>
>
>
> HIGH = 1
>
> LOW = 2
>
> OK = 3
>
>
>
> def guess(self, number):
>
> if number > self.number:
>
> return self.HIGH
>
> if number < self.number:
>
> return self.LOW
>
> return self.OK
>
>
>
> Now you've got something that's easy to test without all this pexpect
>
> crud getting in the way. Then, your game application can create an
>
> instance of NumberGuessingGame and wrap the required I/O operations
>
> around that.
>
>
>
> I'd also probably add some way to bypass the random number generator and
>
> set the number you're trying to guess directly. This will make it a lot
>
> easier to test edge cases.
More information about the Python-list
mailing list