2013-09-26 68 views
1

我试图写一个随机输入数字游戏了一些测试,但不太清楚如何进行的。Nosetests - 猜数字游戏

我从http://inventwithpython.com/chapter4.html

以下Python的游戏与文件test_guess.py

from unittest import TestCase 
import pexpect as pe 

import guess as g 

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 test_guessing_low_hi_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('3') 
     child.expect(self.responseLow,timeout=5) 
     child.sendline('5') 
     child.expect(self.responseHigh,timeout=5) 
     child.sendline('4') 
     child.expect(self.responseCorrect,timeout=5) 
     child.expect(self.goodbye,timeout=5) 

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() 

不能确定guess.py文件如何开始测试继续用if语句编写几个测试来测试值是低还是高。我被告知尝试像optparse这样的命令行开关来传递数字,但不知道如何做到这一点。

有点新的人与Python,任何指导或援助,将不胜感激。

回答

0

为了在nosetests中执行命令行解析,您必须执行类似于this的操作(至少这是我必须做的),即创建一个插件,让您可以访问命令行参数nosetests。一旦你添加了给你命令行参数的插件,创建一个可以利用传入的参数的测试会非常容易。

from test_args import case_options 

class GuessTest(TestCase): 
... 

    def test_guessing(self): 
     # Conversation assuming number is 4 
     if case_options.number < 4: 
      # Do something 
     elif case_option.number > 4: 
      # Do some other test 
     else: 
      # Do the final test 

这有道理吗?我可能会误解你想要做的事情,如果我愿意,只要让我知道,并希望我们能够清除它。