我将此源文件设置为运行测试,如果它以__main__
运行。
if __name__ == '__main__':
import sys
expected_output = '''
(60-line literal that represents the correct output)'''
[run the tests collecting output in a variable named output]
[compare output to expected_output]
我很乐意将这个巨大的文字放在文件的底部,但我无法想出一种方法来创建它的前向引用。
我基本上没有运气吗?
答案 0 :(得分:1)
是的,在python中,一切都应该在你使用它之前定义。我建议将文字放入不同的文件中。
如果你必须,从技术上讲,你可以把你的文字放在同一个文件中,在代码的最后,然后用内省或仅作为文件阅读。
with open(__file__) as f: expected_output = f.read().rsplit("'''")[-2]
虽然我发现在单独的文件中存储大文字更容易维护和阅读。
答案 1 :(得分:1)
您必须先分配数据才能使用它。诀窍是将您当前拥有的内容if __name__==__main__
放入代码顶部的函数中。然后你可以把所有好的代码放在那个函数中,添加一大块丑陋的东西,并在底部放一个非常简单的if
。调用main()
时,变量已分配,您可以继续使用。
import sys # aren't saving anything by putting it in the `if`
def main():
[run the tests collecting output in a variable named output]
[compare output to expected_output]
expected_output = '''
(60-line literal that represents the correct output)'''
if __name__ == '__main__':
main()
@tdelaney这是对你的建议的轻微修饰。
def main(expected_output):
[run the tests collecting output in a variable named output]
[compare output to expected_output]
if __name__ == '__main__':
main(
'''
(60-line literal that represents the correct output)
'''
)