【问题标题】:Nosetests - Guess The Number GameNosetests - 猜数字游戏
【发布时间】:2013-09-26 03:26:37
【问题描述】:

我正在尝试为随机输入数字游戏编写一些测试,但不太确定如何继续。

我正在关注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) 

和guess.py文件

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

不确定如何继续使用 if 语句编写更多测试来测试值是低还是高。有人告诉我尝试使用 optparse 之类的命令行开关来传递数字,但也不知道该怎么做。

有点 Python 的新手,任何指导或帮助将不胜感激。

【问题讨论】:

    标签: python unit-testing testing nosetests


    【解决方案1】:

    为了在鼻子测试中进行命令行解析,您必须执行类似于this 的操作(至少这是我必须做的),即创建一个允许您访问命令行参数的插件在鼻子测试中。一旦添加了为您提供命令行参数的插件,就可以很容易地创建一个可以利用传入参数的测试。

    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
    

    这有意义吗?如果我是这样,我可能会误解您的意图,请告诉我,希望我们能解决这个问题。

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 2016-06-21
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多