Nosetests - игра «Угадай число»

Я пытаюсь написать несколько тестов для игры со случайным вводом чисел, но не слишком уверен, как действовать дальше.

Я слежу за игрой Python с сайта http://inventwithpython.com/chapter4.html.

Запустил тесты с файлом 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, любые советы или помощь будут оценены.


person user2817787    schedule 26.09.2013    source источник


Ответы (1)


Чтобы выполнить синтаксический анализ командной строки в тестах носа, вам нужно будет сделать что-то похожее на 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

Имеет ли это смысл? Возможно, я неправильно понимаю, что вы пытаетесь сделать, поэтому, если это так, просто дайте мне знать, и, надеюсь, мы сможем это прояснить.

person Rooks103    schedule 31.01.2014