在编写RSpec测试时,我发现它使用的嵌套上下文结构非常清晰且有用:
describe "a laptop" do
before(:each) do
end
context "progamming" do
before(:each) do
end
it "compiles programs" do
end
context "with an external monitor" do
it "shows editors in multiple displays" do
end
end
end
context "video gaming" do
before(:each) do
end
context "with normal graphic card" do
before(:each) do
end
it "can not play League of Legends" do
end
end
context "with expensive graphic card" do
before(:each) do
end
it "can play League of Legends" do
end
end
end
end
在嵌套时很容易共享/干掉那些设置和拆除代码,并且通过上下文结构,它也有助于"思考"关于规格的覆盖范围。我想知道我们通常如何编写Python单元测试来实现这一目标。或者哲学是不同的?
看起来我们可以通过inheriting the test class实现类似的设置/拆卸代码共享,但是仍然存在一些小问题,并且将它们分成不同的类似乎不是一个非常易读/可维护的结构,如果它说,更深2层。
答案 0 :(得分:1)
请看一下python中的一些BDD框架。
很大程度上模仿了黄瓜,Ruby中的bdd框架,这是RSpec中第一个基于故事的框架。
不确定这是否完全回答了您的问题,但我希望您会发现它很有用。
查看Dan North的博客。关于发展的哲学和原则的真正好的东西。http://dannorth.net/
另外,我认为另一个有用的方面是使用out-in和out-out appoarch的tdd概念。 Rspec / BDD,我认为遵循从外到内的模型。你可以好好看看这个我觉得非常有用的讨论https://softwareengineering.stackexchange.com/questions/166409/tdd-outside-in-vs-inside-out