您的位置:首页 > 其它

计算原理课堂笔记(二)

2016-06-25 11:53 309 查看

计算原理课堂笔记(二)

关于测试: And so the best piece of advice I have about testing is the following. Don’t write your code and then test. Write a little bit of code. Test. Write a little bit of code. Test. Write a little bit of code.



测试模块poc_simpletest

<python>
"""
Test suite for format function in "Stopwatch - The game"
"""

import poc_simpletest

def run_suite(format_function):
"""
Some informal testing code
"""

# create a TestSuite object
suite = poc_simpletest.TestSuite()

# test format_function on various inputs
suite.run_test(format_function(0), "0:00.0", "Test #1:")
suite.run_test(format_function(7), "0:00.7", "Test #2:")
suite.run_test(format_function(17), "0:01.7", "Test #3:")
suite.run_test(format_function(60), "0:06.0", "Test #4:")
suite.run_test(format_function(63), "0:06.3", "Test #5:")
suite.run_test(format_function(214), "0:21.4", "Test #6:")
suite.run_test(format_function(599), "0:59.9", "Test #7:")
suite.run_test(format_function(600), "1:00.0", "Test #8:")
suite.run_test(format_function(602), "1:00.2", "Test #9:")
suite.run_test(format_function(667), "1:06.7", "Test #10:")
suite.run_test(format_function(1325), "2:12.5", "Test #11:")
suite.run_test(format_function(4567), "7:36.7", "Test #12:")
suite.run_test(format_function(5999), "9:59.9", "Test #13:")

suite.report_results()
<python>


run_suite()
函数封装了测试模板,编写测试集的测试代码

<python>
"""
Format function for a stopwatch
"""

import poc_format_testsuite

def stopwatch_format(ticks):
"""
Convert tenths of seconds to formatted time
"""

minutes = ticks // 600
# minutes = ticks // 60
tens_seconds =  (ticks // 100) % 6
seconds = (ticks // 10) % 10
tenths = ticks % 10
return str(minutes) + ':' + str(tens_seconds) + \
str(seconds) + '.' + str(tenths)

# run the testing suite for our format function
poc_format_testsuite.run_suite(stopwatch_format)
<python>


import poc_format_testsuite
导入测试代码

<python>
# Create a rectangular grid using nested list comprehension
# Inner comprehension creates a single row
EXAMPLE_GRID = [[row + col for col in range(GRID_WIDTH)]
for row in range(GRID_HEIGHT)]
<python>

<python>
my_game = SolitaireMancala()
print "Testing init - Computed:", my_game, "Expected: [0]"

config1 = [0, 0, 1, 1, 3, 5, 0]
my_game.set_board(config1)

print "Testing set_board - Computed:", str(my_game), "Expected:", str([0, 5, 3, 1, 1, 0, 0])
<python>


my_game
str(my_game)
返回值相同

Third, to import a GUI that can be used to visualize your program in action. Again, these imports will typically consist of two statements; one that imports the module containing the GUI and a second that runs the GUI using an instance of the class defined in your mini-project. For example, you can import and run the GUI for Solitaire Mancala using the statements\

<python>
import poc_mancala_gui
poc_mancala_gui.run_gui(SolitaireMancala())
<python>


导入模块,然后调用模块中的函数。

<python>
cells = [ [... for col in range(grid_width)] for row in range(grid_height)]
<python>


列表解析

Note that if row or col are not used in the expression …, Pylint will warn that these variables are unused. To avoid this warning, you can rename these variables to dummy_row and dummy_col to alert Pylint that these variables are intentionally unused. This renaming will suppress the warning.

如果row和col在⋯中未使用,应重命名为dummy_row和dummy_col



So if you do it this, you can use the offsets dictionary and then you can create a dictionary of initial tiles. You can actually create all of the lines that you would need to merge for any direction, so that when you get into the move function you just look them up in a dictionary. You don’t have to have this if dir is LEFT or if it’s RIGHT or, and so on, okay?

使用偏置字典
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  测试 testing