我正在尝试了解如何使用 python 的单元测试框架
我有一段看起来像这样的代码——
while True:
filename = raw_input('Enter file')
if os.path.exists(filename):
break
else:
print "That file does not exist"
return filename
Run Code Online (Sandbox Code Playgroud)
有人可以帮我开发 unittest 模块来测试这个。我问这个问题是为了学习如何使用单元测试(我正在尝试学习 TTD:测试驱动开发)
到目前为止,我已经想出了这个...... import unittest import os.path
类 TestFunctions(unittest.TestCase):
def setUp(self):
self.prompt = 'Enter filename: '
def test_get_file(self):
# TODO make sure empty filename argument requests for new filename
filename = find_author.get_valid_filename(self.prompt)
self.assertTrue(<EXPRESSION?>)
# TODO make sure valid filename returns the "filename"
# TODO make sure invalid filename prompts that file does not exit and requests …Run Code Online (Sandbox Code Playgroud) 假设我的代码中已经有两个类:
class SomeOrder {
String getOrderId() { return orderId; }
}
class AnotherOrder {
String getOrderId() { return orderId; }
}
Run Code Online (Sandbox Code Playgroud)
如何围绕这两个类创建一个接口:
interface Order {
String getOrderId();
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我将修改代码,以便SomOrder implements Order和AnotherOrder implements Order,但这里的前提条件是,他们在我无法控制或编辑一个包属于(即它们来自外部的jar).
我的算法目前看起来像这样:
void sorter(List<SomeOrder> orders) {
... <custom sort logic> ...
someOrder.getOrderId();
}
void sorter(List<AnotherOrder> orders) {
... <custom sort logic> ...
someOrder.getOrderId();
}
Run Code Online (Sandbox Code Playgroud)
使用单一界面我可以写:
void sorter(List<Order> orders) {
... <custom sort logic> ...
order.getOrderId();
}
Run Code Online (Sandbox Code Playgroud) 在go源代码中,常量bucketCnt是8.为什么用右移3次定义而不是仅仅定义为8.我理解这1 << x意味着2^x.
但是,我的问题是......
是
// Maximum number of key/value pairs a bucket can hold.
bucketCntBits = 3
bucketCnt = 1 << bucketCntBits
Run Code Online (Sandbox Code Playgroud)
比...更好
// Maximum number of key/value pairs a bucket can hold.
bucketCnt = 8
Run Code Online (Sandbox Code Playgroud)